SoC-Anbieterabhängigkeiten für den Media Resource Manager

Dieses Dokument soll System-on-Chip-Anbietern (SoCs) helfen, die Unterstützung für Priorität, Betriebsrate und die Hooks zu implementieren, die für den Android-Medienressourcenmanager erforderlich sind.

OMX_ErrorInsufficientResources

Die Codec-Komponente sollte OMX_ErrorInsufficientResources bei GetHandle, Init, UseBuffer, AllocateBuffer oder einen Statusübergang zurückgeben, wenn der Fehler auf eine unzureichende Ressource zurückzuführen ist. Der Fehlercode wird vom Media Resource Manager als Indikator verwendet, um die Media-Ressource möglicherweise von einem anderen Prozess mit niedrigerer Priorität zu priorisieren.

Es gibt einen CTS-Test (Compatibility Test Suite), mit dem jeder Codec wiederholt zugewiesen, konfiguriert und gestartet wird, bis catching OMX_ErrorInsufficientResources (Erfolg) oder ein anderer Fehler (Fehlschlag) auftritt.

OMX_IndexConfigPriority

Mit dieser Konfiguration kann die Anwendung die gewünschte Codec-Priorität angeben.

Der zugehörige Wert ist eine Ganzzahl. Je höher der Wert, desto niedriger die Priorität. Derzeit werden nur zwei Ebenen unterstützt:

  • 0: Echtzeitpriorität – der Codec muss die angegebene Leistungskonfiguration (z.B. Framerate) in Echtzeit unterstützen. Diese Option wird nur bei der Medienwiedergabe, -aufnahme und möglicherweise bei Echtzeit-Kommunikationsszenarien verwendet, wenn die Best-Effort-Leistung nicht geeignet ist.
  • 1: Nicht-Echtzeitpriorität (Best-Effort-Verfahren). Dies ist der Standardwert.

Der Anbieter wird aufgefordert, dies als Hinweis bei der Codec-Konfiguration und Ressourcenplanung zu verwenden, um die Echtzeitanforderungen der Anwendung zu verstehen.

Gehen Sie nicht von einer Echtzeitpriorität aus, es sei denn, sie ist auf „0“ konfiguriert.

OMX_IndexConfigOperatingRate

Mit dieser Konfiguration kann die Anwendung die Betriebsframerate für Video oder die Abtastrate für Audio beschreiben, mit der der Codec arbeiten muss.

Dies wird beispielsweise bei der Hochgeschwindigkeits-/Zeitlupenvideoaufnahme verwendet, bei der das Videoencoder-Format die Zielwiedergaberate (z.B. 30 fps) enthält, die Komponente jedoch die hohe Betriebsaufnahmerate (z.B. 240 fps) verarbeiten muss.

Dieser Wert sollte für die Ressourcenplanung und das Festlegen der Betriebspunkte verwendet werden.