1

我想libstagefright.so在安卓手机中使用媒体操作。我已经探索了 页面中给出的示例。我一直在尝试实施相同的方法。在为多个实例测试此实现时 OMXCodec,它的输出缓冲区相互冲突。

我在eclipse中开发了一个android项目并libstagefright在JNI下链接。我添加了两个类CustomDataSource(派生MediaSource)和CustomOmxDecoder. CustomDataSource类实现了所有的虚方法MediaSource。在CustomOmxDecoder课堂上,我调用OMXCodec::Create方法。然后我创建了两个具有单独实例的线程CustomOmxDecoder。使用这个实例,我调用了一个方法ProcessNextFrame,在该方法中我调用了 mainvideoDecoder->read()方法。这就是我的设置。

现在,当我使用上述设置运行应用程序时。OMXCodec解码两个源的帧,但是当我在表面上渲染它时,会显示冲突的输出。似乎两个源的解码缓冲区都以某种方式在内部进行了网格化。我正在同时创建两个 h264 解码器。这里有什么问题?会不会有关系MediaBufferGroup?调用 call 后,我在's中获取CustomDataSource缓冲区并释放缓冲区。CustomOmxDecoderProcessNextFramevideoDecoder->read()

任何建议都会很棒。谢谢。

4

1 回答 1

2

我已经测试并解决了我的问题,怀疑 OMXCodec 的多个实例是可能的。问题出在我的代码中。在修复时,我可以看到 OMXCodec 的多个实例运行稳定流畅。所以,是的,OMXCodec 的多个实例是可能的。

谢谢你们。

于 2013-03-18T05:34:17.053 回答