Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在android源代码中调用我的自定义解码器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将我的软件HEVC解码器添加android代码中.我希望生成libstagefright.so文件.

我提到了其他类似的问题,对我没什么帮助.我无法通过以下问题或参指南得到清晰的图片.

1)将Codec集成到Android多媒体框架中.

2)集成自定义解码器以在Android上播放并同时显示fps.

3)如何注册OMX内核以添加新的解码器.

有人可以帮我解决一下将新的自定义解码器与Android集成的步骤.

现在,我刚刚在SoftOMXPlugin.cpp文件添加了media_codecs.xml和{“OMX.google.h265.decoder”,“hevcdec”,“video_decoder.hevc”}.

还需要编辑哪些其他文件才能将新格式添加到android源代码中?
哪些函数调用我的解码器源代码(softomxcplugin源文件是否调用我的解码器?).

解决方法

从您的查询和之前的讨论中,请找到将HEVC组件集成到Android框架中的步骤.由于您的组件是SW组件,因此必须将其与SoftVideoDecoderOMXComponent集成.

什么是SoftVideoDecoderOMXComponent?

在最新版本的Android Stagefright框架中,SW加速编解码器使用类似OMX的界面集成到框架中.早些时候,情况并非如此,并且有一些挑战.因此,Google简化了集成策略,并强制要求所有SW编解码器都采用类似接口的SoftOMXComponent.

大多数OMX IL调用由基类处理,因此,如下所述,新编解码器组件的实现相对容易.

我将以AVC编解码器集成为例提供概述.强烈建议读者熟悉OMX IL 1.1.2 specification,它描述了OMX IL视频解码器组件的结构,功能和状态机.

注意:HEVC还不是OMX IL规范的一部分,建议主要是了解组件的结构和功能.

创建SoftHEVC组件

请参阅SoftAVC.h的头文件相应的SoftAVC.cpp.

您将不得不实现一组类似的文件.由于一些固有的相似性,强烈建议重用AVC的整体实现.

SoftHEVC.cpp实现

>您必须在SoftHEVC.h中定义SoftHEVC组件,该组件派生自SoftVideoDecoderOMXComponent.这将确保基类适当地处理所有OMX调用.
>您必须定义支持@L_673_36@级别组合的表格,如CodecProfileLevel中所示.
>在构造函数中,您可以以类似的方式初始化大多数变量.由于这是一个视频解码器组件,您必须初始化2个端口,即输入和输出. ctor调用initDecoder来初始化组件.您还必须为您的编解码器实现类似的功能.
> dtor是自我解释的,我将跳过解释相同的.
当提供填充了一帧帧比特流数据的缓冲区以便在输入端口上进行处理或者为输出提供空闲缓冲区时,调用> onQueueFilled.这将调用主解码功能H264SwDecDecode.现在,对于第一帧,与最初初始化的分辨率相比,您可能会遇到分辨率的变化.这由2个场景处理,如下一点所述.
>您将观察到2个函数handlePortSetTingsChanged和handleCropRectEvent.从输出缓冲区的角度来看,这两个事件很重要. handlePortSetTingsChanged表示与最初初始化的大小相比输出缓冲区维度的变化,向用户提供事件回调以释放当前分配并重新分配相同的分配.
handleCropRectEvent指示__cropping window__,它传达给用户.通常,这不需要缓冲区重新分配.
> drainOneOutputBuffer将解码帧复制到输出端口的缓冲区和解码缓冲区的notify the caller about the availability.
>在onQueueFilled中,成功解码后,input buffer which has been consumed is also returned back给来电者.
>其余的功能非常简单,我觉得你可以简单地重用大部分实现.
>对于组件的注册,您必须实现createSoftOMXComponent,它创建SoftHEVC组件,如here所示.

因为,您已经处理了已注册的组件,我正在跳过该部分.仅供参,我假设您已在SoftOMXPlugin中的kComponents数组中注册了该组件.此外,由于HEVC不是已知的MIME类型,因此您必须注册相同的类型. MediaDefs.cpp中需要进行更改,您必须在其中引入新的条目MEDIA_MIMETYPE_VIDEO_HEVC,类似于AVC等现有格式,并支持OMXCodec.cpp和ACodec.cpp中的更改.

通过这些步骤,我认为您应该能够集成您的SW解码器并能够实现您的播放.

大佬总结

以上是大佬教程为你收集整理的如何在android源代码中调用我的自定义解码器全部内容,希望文章能够帮你解决如何在android源代码中调用我的自定义解码器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。