Dependências do fornecedor do SoC para o gerenciador de recursos de mídia

Este documento tem como objetivo ajudar os fornecedores de system on a chip (SoCs) a implementar corretamente o suporte a prioridade, taxa de operação e os hooks necessários para o gerenciador de recursos de mídia do Android.

OMX_ErrorInsufficientResources

O componente do codec precisa retornar OMX_ErrorInsufficientResources em GetHandle, Init, UseBuffer, AllocateBuffer ou uma transição de estado se a falha for devido a recursos insuficientes. O código de erro será usado pelo gerenciador de recursos de mídia como o indicador para potencialmente substituir o recurso de mídia de outro processo de prioridade inferior.

Um teste do conjunto de teste de compatibilidade do Android (CTS) existe para alocar, configurar e iniciar cada codec repetidamente até catching OMX_ErrorInsufficientResources (sucesso) ou qualquer outro erro (falha).

OMX_IndexConfigPriority

Essa configuração permite que o aplicativo descreva a prioridade do codec desejada.

O valor associado é um número inteiro. Quanto maior o valor, menor a prioridade. No momento, apenas dois níveis são aceitos:

  • 0: prioridade em tempo real, o que significa que o codec precisa oferecer suporte à configuração de desempenho especificada (por exemplo, taxa de quadros) em tempo real. Isso será usado apenas para reprodução de mídia, captura e, possivelmente, para cenários de comunicação em tempo real, se a performance de melhor esforço não for adequada.
  • 1: prioridade não em tempo real (melhor esforço). Esse é o valor padrão.

Recomendamos que o fornecedor use isso como uma dica na configuração do codec e no planejamento de recursos para entender os requisitos em tempo real do aplicativo.

Não assuma a prioridade em tempo real, a menos que ela esteja configurada como 0.

OMX_IndexConfigOperatingRate

Essa configuração permite que o aplicativo descreva a taxa de frames de operação para vídeo ou a taxa de amostragem para áudio em que o codec precisa operar.

Isso é usado em casos como a captura de vídeo em alta velocidade/câmera lenta, em que o formato do codificador de vídeo contém a taxa de reprodução desejada (por exemplo, 30 QPS), mas o componente precisa ser capaz de processar a alta taxa de captura operacional (por exemplo, 240 QPS).

Essa taxa deve ser usada para planejar recursos e definir os pontos de operação.