媒体资源管理器的 SoC 供应商依赖项

本文档旨在帮助系统芯片供应商 (SoC) 正确实现对 Android 媒体资源管理器所需的优先级、操作速率和钩子的支持。

1. OMX_ErrorInsufficientResources

如果失败的原因是资源不足,则编解码器组件应针对 GetHandleInitUseBufferAllocateBuffer 或状态转换返回 OMX_ErrorInsufficientResources。媒体资源管理器会将该错误代码用作指示符(意味着可能会从其他优先级较低的进程抢占媒体资源)。

Android 兼容性测试套件 (CTS) 中的相关测试会重复分配、配置和启动每一个编解码器,直到出现 catching OMX_ErrorInsufficientResources(通过)结果或任何其他错误(失败)。

2. OMX_IndexConfigPriority

通过此项配置,应用可以说明其所需的编解码器优先级。

关联值为整数。值越高,优先级越低。目前仅支持两种级别:

  • 0:实时优先级 - 指的是编解码器应该实时支持指定的性能配置(如帧速率)。该优先级只能用于媒体播放、捕获,另外还可能用于实时通信场景(如果“可提供的最佳性能”选项不适用)。
  • 1:非实时优先级(可提供的最佳性能)。这是默认值。

建议供应商将此用作编解码器配置和资源规划提示,以便了解应用的实时要求。

请勿假设实时优先级(除非优先级配置为 0)。

3. OMX_IndexConfigOperatingRate

通过此项配置,应用可以说明编解码器在进行操作时所需的视频操作帧速率或音频采样率。

该配置的其中一种使用情况为高速/慢动作视频捕获;在这种情况下,视频编码器格式包含目标播放速率(如 30 帧/秒),但组件必须能够处理较高的操作捕获速率(如 240 帧/秒)。

此速率应该用于规划资源和设置操作点。