是否可以使用stagefright创建多个OMXCodec实例

时间:2013-03-15 10:46:11

标签: android stagefright openmax

我想在Android手机中使用libstagefright.so进行媒体操作。我已经探讨了this页面中给出的示例。我一直在努力实现同样的目标。在为多个OMXCodec实例测试此实现时,它的输出缓冲区彼此冲突。

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

现在,当我使用上述设置运行应用程序时。 OMXCodec解码两个源的帧,但是当我在表面上渲染它时,会显示冲突的输出。似乎两个源的解码缓冲区都以某种方式内部网格化。我正在同时创建两个h264解码器。这可能是什么问题?它可以与MediaBufferGroup相关吗?我在调用CustomDataSource电话后CustomOmxDecoder中获取缓冲并在ProcessNextFrame的{​​{1}}中释放缓冲区。

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

1 个答案:

答案 0 :(得分:2)

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

谢谢大家。