say*_*ned 4 android android-ndk android-framework stagefright android-mediaplayer
我正在尝试将我的软件HEVC解码器添加到android源代码中.我希望生成libstagefright.so文件.
我提到了其他类似的问题,对我没什么帮助.我无法通过以下问题或参考指南得到清晰的图片.
1)将Codec集成到Android多媒体框架中.
2)集成自定义解码器以在Android上播放并同时显示fps.
3)如何注册OMX内核以添加新的解码器.
有人可以帮我解决一下将新的自定义解码器与Android集成的步骤.
现在,我刚刚添加到media_codecs.xml和{ "OMX.google.h265.decoder" , "hevcdec" , "video_decoder.hevc" }SoftOMXPlugin.cpp文件中.
还需要编辑哪些其他文件才能将新格式添加到android源代码中?哪些函数调用我的解码器源代码(softomxcplugin源文件是否调用我的解码器?).
从您的查询和之前的讨论中,请找到将HEVC组件集成到Android框架中的步骤.因为,您的组件是一个SW组件,您必须将它们集成为一个组件SoftVideoDecoderOMXComponent.
什么是SoftVideoDecoderOMXComponent?
在该Android Stagefright框架的最新版本中,SW加速编解码器使用OMX类似的接口集成到框架中.早些时候,情况并非如此,并且有一些挑战.因此,Google简化了集成策略,并要求所有SW编解码器都采用SoftOMXComponent类似的界面.
大多数OMX IL调用由基类处理,因此,新编解码器组件的实现相对容易,如下所述.
我将以AVC编解码器集成为例提供概述.据强烈建议读者熟悉OMX IL1.1.2规范描述的结构,功能和状态机OMX IL视频解码器组件.
注意: HEVC尚未成为OMX IL规范的一部分,因此,建议主要是了解组件的结构和功能.
创建SoftHEVC组件
请参阅头文件SoftAVC.h和相应的源代码SoftAVC.cpp.
您将不得不实现一组类似的文件.AVC由于一些固有的相似性,强烈建议重用整体实现.
SoftHEVC.cpp 履行
您必须定义从中派生的SoftHEVC组件.这将确保基类适当地处理所有调用.SoftHEVC.hSoftVideoDecoderOMXComponentOMX
你必须定义一个支持表profile- level在中找到的组合CodecProfileLevel.
在constructor,您可以以类似的方式初始化大多数变量.由于这是一个视频解码器组件,您必须初始化2个端口即,input和output.ctor调用a initDecoder来初始化组件.您还必须为您的编解码器实现类似的功能.
这dtor是自我解释的,因此,我将跳过解释相同的.
onQueueFilled当提供填充了一帧价值的比特流数据的缓冲区以便在input端口上进行处理或提供空闲缓冲区时,调用output.这将调用主解码功能H264SwDecDecode.现在,对于第一帧,与最初初始化的分辨率相比,您可能会遇到分辨率的变化.这由2个场景处理,如下一点所述.
你会观察到2个功能handlePortSettingsChanged和handleCropRectEvent.从输出缓冲区的角度来看,这两个事件很重要.handlePortSettingsChanged表示与最初初始化的大小相比输出缓冲区维度的变化,因此,向用户提供事件回调以释放当前分配并重新分配相同的分配.
handleCropRectEvent表示__cropping window__,它传达给用户.通常,这不需要缓冲区重新分配.
drainOneOutputBuffer将解码后的帧复制到输出端口的缓冲区,并通知调用者解码缓冲区的可用性.
其余的功能非常简单,我觉得你可以简单地重用大部分实现.
对于组件的注册,就必须实现createSoftOMXComponent其创建SoftHEVC组件如图所示这里.
因为,您已经处理了已注册的组件,我正在跳过该部分.仅供参考,我假设您已在kComponents数组中注册了组件SoftOMXPlugin.此外,由于HEVC不是已知MIME类型,您必须注册相同的类型.有将是需要改变MediaDefs.cpp,你将不得不推出新的项目,MEDIA_MIMETYPE_VIDEO_HEVC类似于像现有格式AVC和支持的变化OMXCodec.cpp和ACodec.cpp.
通过这些步骤,我认为您应该能够集成SW解码器并能够实现播放.
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |