我正在尝试使用nexus 7设备中的MediaCodec对h264进行编码,并且在重新运行(关闭后)我的编码器进程几次后,我在尝试创建MediaCodec时出现故障 (MediaCodec :: CreateByType(looper," video / avc",true))。日志显示:
E/OMX-VENC-720p( 181): Is component secure 0
E/OMX-VENC-720p( 181): ERROR: Omx_venc::Comp Init Returning failure
E/OMX-VENC-720p( 181):
E/OMX-VENC-720p( 181): ERROR: venc_open failed
E/OMX-VENC-720p( 181):
E/OMX-VENC-720p( 181): Destroy C2D instance
重启设备后,我可以再次创建编码器。 这是nexus硬件编码器中的错误,还是因为没有正确释放编码器?
答案 0 :(得分:0)
这不是预期的。
如果您获取最新版本的Grafika,您可以找到"编解码器开放测试"靠近底部的活动。当你运行它并单击" START"时,它将尝试打开尽可能多的编解码器。如果单击"暂停",它将暂停VM,应用程序将重新启动。
随着Nexus 7(2013)运行4.4.2,我第一次点击"开始"我看到创建了四个编解码器。如果我再次点击它,我会得到零。如果我使用DDMS导致GC或停止该过程,它将返回到4。它应该得到的唯一方式"卡住"是应用程序持有多个打开并仍在运行。
无论如何,请确保在应用暂停时释放编解码器。当然,如果您的应用崩溃,这是不可能的,但在正常操作中,当您的应用未在前台主动使用它们时,您不想保留硬件资源。如果某个地方存在阻止系统清理的错误,那么及时发布它们就更为重要。