Зависимости от поставщиков процессоров для менеджера медиаресурсов

Этот документ предназначен для того, чтобы помочь поставщикам процессоров (SoC) правильно реализовать поддержку приоритета, рабочей скорости и хуков, необходимых для менеджера медиаресурсов Android.

OMX_ErrorInsufficientResources

Компонент кодека должен возвращать OMX_ErrorInsufficientResources в GetHandle, Init, UseBuffer, AllocateBuffer или при переходе между состояниями, если сбой вызван нехваткой ресурсов. Менеджер медиаресурсов будет использовать код ошибки как индикатор того, что медиаресурс может быть вытеснен другим процессом с более низким приоритетом.

В Android Compatibility Test Suite (CTS) есть тест, который многократно выделяет, настраивает и запускает каждый кодек, пока не будет получен результат catching OMX_ErrorInsufficientResources (пройдено) или другая ошибка (не пройдено).

OMX_IndexConfigPriority

Эта конфигурация позволяет приложению задавать приоритет кодеков.

Связанное значение является целым числом. Чем выше значение, тем ниже приоритет. В настоящее время поддерживается только два уровня:

  • 0 – приоритет реального времени. Это означает, что кодек должен поддерживать заданную конфигурацию производительности (например, частоту кадров) в реальном времени. Этот режим будет использоваться только для воспроизведения и записи медиаконтента, а также, возможно, для связи в реальном времени, если производительность по умолчанию окажется недостаточной.
  • 1 – приоритет не в реальном времени (наилучший результат). Это значение по умолчанию.

Поставщику рекомендуется использовать это значение в качестве подсказки при настройке кодека и планировании ресурсов, чтобы понимать требования приложения к работе в реальном времени.

Не предполагайте, что приоритет в реальном времени установлен, если он не настроен на 0.

OMX_IndexConfigOperatingRate

Эта конфигурация позволяет приложению описать рабочую частоту кадров для видео или частоту дискретизации для аудио, на которой должен работать кодек.

Это используется в таких случаях, как высокоскоростная/замедленная видеосъемка, когда формат видеокодера содержит целевую скорость воспроизведения (например, 30 кадров в секунду), но компонент должен быть способен обрабатывать высокую рабочую скорость захвата (например, 240 кадров в секунду).

Этот показатель следует использовать для планирования ресурсов и определения рабочих точек.