草庐IT

AVC、HEVC 和 AV1 视频编码实测:AMD GPU 仍落后于英伟达、英特尔

国外科技媒体tomshardware近日展开了一项AVC、HEVC和AV1的视频编码测试,结果显示AMDGPU仍落后于英伟达、英特尔。附本次测试的第13代平台如下:处理器:英特尔酷睿i9-13900K主板:微星MEGZ790AceDDR5内存:G.Skill三叉戟Z52条16GBDDR5-6600CL34硬盘:SabrentRocket4Plus-G4TB电源:1500WDarkPowerPro12散热器:酷冷至尊PL360Flux系统:64位 ​​Win11​​ 专业版第12代测试平台:处理器:英特尔酷睿i9-12900K主板:微星ProZ690-AWiFiDDR4内存:海盗船2x16GBD

AVC、HEVC 和 AV1 视频编码实测:AMD GPU 仍落后于英伟达、英特尔

国外科技媒体tomshardware近日展开了一项AVC、HEVC和AV1的视频编码测试,结果显示AMDGPU仍落后于英伟达、英特尔。附本次测试的第13代平台如下:处理器:英特尔酷睿i9-13900K主板:微星MEGZ790AceDDR5内存:G.Skill三叉戟Z52条16GBDDR5-6600CL34硬盘:SabrentRocket4Plus-G4TB电源:1500WDarkPowerPro12散热器:酷冷至尊PL360Flux系统:64位 ​​Win11​​ 专业版第12代测试平台:处理器:英特尔酷睿i9-12900K主板:微星ProZ690-AWiFiDDR4内存:海盗船2x16GBD

AV Foundation ⑯ 视频处理与CMSampleBuffer

视频处理    使用AVCaptureMovieFileOutput虽然可以便捷的捕捉视频数据,但是它无法同视频数据进行交互,而交互又是许多场景所需要的功能。当需要使用底层控制时,就会用到框架提供的最底层的视频捕捉输出AVCaptureVideoDataOutput。    AVCaptureVideoDataOutput是一个AVCaptureOutput的子类,可以直接访问摄像头传感器捕捉到的视频帧。这是一个强大的功能,因为这样我们就完全控制了视频数据的格式、时间和元数据,可以按照需求操作视频内容。大部分情况下,处理过程都是使用OpenGLES或CoreImage,有时,Quartz也可以

AV Foundation ⑯ 视频处理与CMSampleBuffer

视频处理    使用AVCaptureMovieFileOutput虽然可以便捷的捕捉视频数据,但是它无法同视频数据进行交互,而交互又是许多场景所需要的功能。当需要使用底层控制时,就会用到框架提供的最底层的视频捕捉输出AVCaptureVideoDataOutput。    AVCaptureVideoDataOutput是一个AVCaptureOutput的子类,可以直接访问摄像头传感器捕捉到的视频帧。这是一个强大的功能,因为这样我们就完全控制了视频数据的格式、时间和元数据,可以按照需求操作视频内容。大部分情况下,处理过程都是使用OpenGLES或CoreImage,有时,Quartz也可以

AV Foundation ④ 视频的压缩与文件格式

视频    视频文件是由一系列称为”帧“的图片组成的,在视频文件的时间轴线上每一帧代表一个场景。要创建连续运动的动画,我们要在短时间间隔内提供特定数量的帧。视频文件一秒钟内所能展现的帧数称为视频的帧率,并用FPS作为单位进行测量。RGB    一般图像是有红(R)、绿(G)、蓝(B)三个通道,每个通道由(0-255)不同的值组成,这就构成了多彩的图像,这称为图像的颜色空间。在图像处理中,还有另外的颜色空间,这些更具有可分离性和可操作性。所以很多的图像算法需要将图像从RGB转换为其他空间。视频数据就是使用RGB转换的Y'CbCr色彩空间的典型案例。Y'CbCr什么是Y'CbCr    Y'CbC

AV Foundation ④ 视频的压缩与文件格式

视频    视频文件是由一系列称为”帧“的图片组成的,在视频文件的时间轴线上每一帧代表一个场景。要创建连续运动的动画,我们要在短时间间隔内提供特定数量的帧。视频文件一秒钟内所能展现的帧数称为视频的帧率,并用FPS作为单位进行测量。RGB    一般图像是有红(R)、绿(G)、蓝(B)三个通道,每个通道由(0-255)不同的值组成,这就构成了多彩的图像,这称为图像的颜色空间。在图像处理中,还有另外的颜色空间,这些更具有可分离性和可操作性。所以很多的图像算法需要将图像从RGB转换为其他空间。视频数据就是使用RGB转换的Y'CbCr色彩空间的典型案例。Y'CbCr什么是Y'CbCr    Y'CbC

AV Foundation ⑨ 音频会话

前言    回忆一个场景,我们使用iPhone打开一首歌曲,音频从内置扬声器中播放出来,此时有电话拨入,音乐会立即停止并处于暂停状态。此时听到的是手机呼叫的铃声,当我们挂掉电话后,刚才的音乐再次响起。在这一过程中iOS提供了一个可管理的音频环境,通过音频会话(AudioSession)来管理应用程序、应用程序间和设备级别的音频行为。音频会话介绍    音频会话在应用程序和操作系统之间扮演者中间人的角色,它提供了一种简单实用的方法使得系统得知应用程序应该如何与iOS音频环境进行交互。开发者不需要了解与音频硬件交互的具体细节,只需要对应用程序的行为进行抽象的配置,并把对该行为的管理委托给音频会话,

AV Foundation ⑨ 音频会话

前言    回忆一个场景,我们使用iPhone打开一首歌曲,音频从内置扬声器中播放出来,此时有电话拨入,音乐会立即停止并处于暂停状态。此时听到的是手机呼叫的铃声,当我们挂掉电话后,刚才的音乐再次响起。在这一过程中iOS提供了一个可管理的音频环境,通过音频会话(AudioSession)来管理应用程序、应用程序间和设备级别的音频行为。音频会话介绍    音频会话在应用程序和操作系统之间扮演者中间人的角色,它提供了一种简单实用的方法使得系统得知应用程序应该如何与iOS音频环境进行交互。开发者不需要了解与音频硬件交互的具体细节,只需要对应用程序的行为进行抽象的配置,并把对该行为的管理委托给音频会话,

定义全局 android.widget var/val 时的 \\”lateinit\\” 或 \\”by lazy\\”

"lateinit"or"bylazy"whendefiningglobalandroid.widgetvar/val当定义一个全局android.widget变量时,例如TextView,使用lateinit还是bylazy更可取?我最初认为使用bylazy会是首选,因为它是不可变的,但我不完全bylazy示例:123456789101112131415classMainActivity:AppCompatActivity(){  valhelloWorldTextViewbylazy{findViewById(R.id.helloWorldTextView)asTextView}  ove

定义全局 android.widget var/val 时的 \\”lateinit\\” 或 \\”by lazy\\”

"lateinit"or"bylazy"whendefiningglobalandroid.widgetvar/val当定义一个全局android.widget变量时,例如TextView,使用lateinit还是bylazy更可取?我最初认为使用bylazy会是首选,因为它是不可变的,但我不完全bylazy示例:123456789101112131415classMainActivity:AppCompatActivity(){  valhelloWorldTextViewbylazy{findViewById(R.id.helloWorldTextView)asTextView}  ove