Зависимости поставщика SoC для Media Resource Manager

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

1. OMX_ErrorInsufficientResources

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

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

2. OMX_IndexConfigPriority

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

Связанное значение является целым числом. Более высокое значение означает более низкий приоритет. В настоящее время поддерживаются только два уровня:

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

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

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

3. OMX_IndexConfigOperatingRate

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

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

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