Zax*_*Zax 7 android android-ndk android-framework stagefright android-mediaplayer
最近我已经成功地将视频解码器移植到了android.还将输出转储到surfaceview上并使用本机API检查输出.现在,下一个任务是实现播放,暂停,流媒体等,即媒体播放器的其他功能.这样做将是一个返工,因为所有这些功能已经在android多媒体框架中定义.我听说我们可以将解码器作为插件,并将其集成到Android的多媒体框架中.虽然我用谷歌搜索相同的,我几乎找不到任何关于相同的信息.所以我请求任何读者为上述问题提出一些相关链接或解决方案.提前致谢,等待您的回复.
Gan*_*esh 16
在Android SF框架中,编解码器通过注册media_codecs.xml.在标准的Android发行版中,media_codecs.xml可以在这里找到一个示例.所有视听组件都注册为OMX组件.
1.编解码器注册
要注册视频解码器,您必须在<Decoders>列表下添加新条目.为确保始终选择您的编解码器,请确保您的编解码器列为特定MIME类型的第一个条目.H.264解码器的示例条目可以如下.
<Decoders>
<MediaCodec name="OMX.ABC.XYZ.H264.DECODER" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" />
Run Code Online (Sandbox Code Playgroud)
哪里,
一个.OMX.ABC.XYZ.H264.Decoder是组件的名称
湾 video/avc是MIME您的组件的类型.在该示例中,它表示AVC/H.264视频解码器.
c.The未来2所陈述表示quirks或有特殊要求的组件.在给定的示例中,requires-allocate-on-input-ports向Stagefright框架指示组件更喜欢在其所有输入端口上分配缓冲区.同样,另一个quirk是通知组件也更喜欢在其输出端口上进行分配.有关支持列表,quirks在系统中,你可以参考功能OMXCodec::getComponentQuirks在OMXCodec.cpp文件.这些怪癖转化为标志,然后由框架读取以创建和初始化组件.
在示例图中,显示您的OMX组件是在默认的 Google实现的视频解码器之前注册的.
注意:如果在终端设备上尝试此操作,则必须确保此条目反映在最终media_codecs.xml文件中.
2. OMX核心注册
要创建组件并确保调用正确的工厂方法,您可能必须OMX在Stagefright框架中注册Core .
要注册新核心,您必须创建一个名为的新库libstagefrighthw.so,该库将位于/system/lib您的终端系统中.该库必须公开一个createOMXPlugin将被查看的符号dlsym.
因此,OMX核心的注册是:OMXMaster调用addVendorPlugin内部调用的内容addPlugin("libstagefrighthw.so").在addPlugin中,createOMXPlugin将使用这对于其他函数指针进行查找makeComponentInstance,destroyComponentInstance等被初始化.
一旦OMX核心被初始化,您就可以在Android框架内运行自己的组件.参考资料OMXMaster可以在这里找到.
通过这些更改,您的视频解码器将集成到android stagefright框架中.
| 归档时间: |
|
| 查看次数: |
11668 次 |
| 最近记录: |