Цель этого документа – помочь поставщикам систем на кристалле (SoC) правильно реализовать поддержку приоритета, рабочей скорости и перехватчиков, необходимых для диспетчера медиаресурсов Android.
OMX_ErrorInsufficientResources
Компонент кодека должен возвращать OMX_ErrorInsufficientResources
при GetHandle
, Init
, UseBuffer
, AllocateBuffer
или переходе состояния, если сбой вызван нехваткой ресурсов. Код ошибки будет использоваться менеджером медиа-ресурсов в качестве индикатора потенциального вытеснения медиа-ресурса из другого процесса с более низким приоритетом.
Существует тест набора тестов совместимости Android (CTS) для выделения, настройки и многократного запуска каждого кодека до тех пор, пока catching OMX_ErrorInsufficientResources
(пройден) или любая другая ошибка (не пройдена).
OMX_IndexConfigPriority
Эта конфигурация позволяет приложению описывать желаемый приоритет кодека.
Связанное значение является целым числом. Более высокое значение означает более низкий приоритет. На данный момент поддерживаются только два уровня:
- 0: приоритет реального времени – означает, что кодек должен поддерживать заданную конфигурацию производительности (например, частоту кадров) в реальном времени. Это будет использоваться только при воспроизведении, захвате мультимедиа и, возможно, в сценариях связи в реальном времени, если максимальная производительность не подходит.
- 1: приоритет не в реальном времени (наилучшие усилия). Это значение по умолчанию.
Поставщику предлагается использовать это как подсказку при настройке кодека и планировании ресурсов, чтобы понять требования приложения в реальном времени.
Не принимайте приоритет реального времени, если он не настроен на 0.
OMX_IndexConfigOperatingRate
Эта конфигурация позволяет приложению описывать рабочую частоту кадров для видео или частоту дискретизации для аудио, с которой кодек должен будет работать.
Это используется в таких случаях, как захват высокоскоростного/замедленного видео, когда формат видеокодера содержит целевую скорость воспроизведения (например, 30 кадров в секунду), но компонент должен быть способен обрабатывать высокую рабочую скорость захвата (например, 240 кадров в секунду).
Эту ставку следует использовать для планирования ресурсов и установки рабочих точек.