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.