Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用MediaCodec从表面编码的编码器的性能变化_Android_Video Encoding_Android Mediacodec_Fbo - Fatal编程技术网

Android 使用MediaCodec从表面编码的编码器的性能变化

Android 使用MediaCodec从表面编码的编码器的性能变化,android,video-encoding,android-mediacodec,fbo,Android,Video Encoding,Android Mediacodec,Fbo,我将纹理渲染到显示器和编解码器输入表面(编码器使用它的地方)。当纹理渲染到显示表面和编码器的输入表面时,性能会有很大的变化,但仅在某些设备上,如S3 Galaxy(渲染到编码器表面大约慢10倍)。在其他设备上,速度类似(S4、Nexus4等) 类似的场景可以通过GL应用程序活动进行演示和记录。(FBO blit x2)仅上述设备的fps从~60降至6,而对于其他设备,记录+显示和单独显示的固定速率均为60。实际上,录制+显示可以简化为仅录制,保持相同的性能 使用编码器表面时,性能下降有什么好的原

我将纹理渲染到显示器和编解码器输入表面(编码器使用它的地方)。当纹理渲染到显示表面和编码器的输入表面时,性能会有很大的变化,但仅在某些设备上,如S3 Galaxy(渲染到编码器表面大约慢10倍)。在其他设备上,速度类似(S4、Nexus4等)

类似的场景可以通过GL应用程序活动进行演示和记录。(FBO blit x2)仅上述设备的fps从~60降至6,而对于其他设备,记录+显示和单独显示的固定速率均为60。实际上,录制+显示可以简化为仅录制,保持相同的性能


使用编码器表面时,性能下降有什么好的原因吗?这是Mali400或S3驱动程序中的错误吗?

性能下降是否与视频尺寸成比例?我的猜测是RGB到YUV的转换是罪魁祸首。颜色空间转换可以通过GPU、视频编码器、专用硬件或软件完成。对于单独的硬件块,同时使用的数量可能会有限制,因此即使存在,也可能会被其他东西(如将摄像头YUV转换为RGB)所束缚,无法用于您的应用程序。如果转换发生在软件中,我希望帧速率很低。我会检查一下,但我知道在同一gpu上转换rgb->yuv的程序运行得更快。只有glReadPixels的速度这么慢,但我认为它们有一些魔力可以直接从ram中获取数据。或者他们正在cpu上进行转换。我没有用照相机。我解码视频,应用效果,然后重新编码720p。@法登:720p,7Mbps时,格拉菲卡编码速度约为4fps,360p,4Mbps时,编码速度为20fps。我删除了“渲染到纹理”和“渲染到显示纹理”。它直接渲染到编解码器输入表面。glReadPixels速度测试结果:360p:16ms/次,720p:70ms/次。这可能是一个原因,但也有其他瓶颈。