我正在从事一个视频会议项目。我们使用软件编解码器对视频帧进行编码和解码,这对于较低分辨率(高达 320p)来说效果很好。我们计划支持我们的应用程序更高分辨率,最高可达 720p。我开始知道硬件加速可以很好地完成这项工作。

由于硬件编解码器 api 媒体编解码器从 Jelly Bean 开始可用,我已使用它进行编码和解码,并且工作正常。但我的应用程序从 2.3 开始支持。因此,我需要对 30fps 的 720p 的 H.264 帧进行硬件加速视频解码。

在研究中,我想到了通过修改怯场框架来使用 OMX 编解码器的想法。我读到 H.264 的硬件解码器从 2.1 开始提供,编码器从 3.0 开始提供。我已经阅读了该网站上提供的许多文章和问题,并确认我可以继续。

我读过有关怯场建筑的文章 这里-架构这里-怯场是如何运作的

我读到了 OMX 编解码器 这里-使用-android-hardware-decoder-with-omxcodec-in-ndk.

我在实施方面遇到了开始的麻烦和一些困惑。我想了解一些有关它的信息。

  1. 为了在我的代码中使用 OMX 编解码器,我应该使用整个 android 源代码树构建我的项目,还是可以通过添加 AOSP 源代码中的一些文件(如果是,则全部)。
  2. 为了实现这一目标,我应该从头开始遵循哪些步骤。

有人可以给我这方面的指导吗

谢谢...

有帮助吗?

解决方案

描述集成的最好例子 OMXCodec 本机层是命令行实用程序 stagefright 可以观察到 这里GingerBread 本身。这个例子展示了如何 OMXCodec 被建造.

需要注意的几点:

  1. 输入到 OMXCodec 应建模为 MediaSource 因此,您应该确保您的应用程序能够满足此要求。创建一个示例 MediaSource 基础来源可以在 record 实用程序文件为 DummySource.

  2. 解码器的输入,即 MediaSource 应通过以下方式提供数据 read 方法,因此,您的应用程序应该为每个 read 称呼。

  3. 解码器可以用以下命令创建 NativeWindow 用于输出缓冲区分配。在这种情况下,如果您希望从 CPU 访问缓冲区,您可能应该参考 这个查询 更多细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top