3

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

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

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

我在这里读过关于怯场建筑的文章 -architecture and here- stagefright 它是如何工作的

我在这里阅读了 OMX 编解码器- use-android-hardware-decoder-with-omxcodec-in-ndk

我有一个开始的麻烦和一些关于它的实施的困惑。我想知道一些关于它的信息。

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

有人可以给我一个指导吗

谢谢...

4

1 回答 1

5

描述本机层集成的最佳示例OMXCodec是命令行实用程序stagefright,可以在此处观察到GingerBread。此示例显示如何OMXCodec创建a 。

需要注意的几点:

  1. OMXCodec应将输入建模为 a MediaSource,因此,您应确保您的应用程序处理此要求。创建基于源的示例MediaSource可以在record实用程序文件中找到,如DummySource.

  2. 解码器的输入,即MediaSource应该通过该read方法提供数据,因此,您的应用程序应该为每个read调用提供单独的帧。

  3. 可以NativeWindow为输出缓冲区分配创建解码器。在这种情况下,如果您希望从 CPU 访问缓冲区,您可能应该参考此查询以获取更多详细信息。

于 2014-06-05T05:48:10.597 回答