Este documento destina-se a ajudar os fornecedores de sistema em chip (SoCs) a implementar adequadamente o suporte para prioridade, taxa de operação e os ganchos necessários para o gerenciador de recursos de mídia do Android.
1. OMX_ErrorInsufficientResources
O componente codec deve 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 antecipar recursos de mídia de outro processo de prioridade mais baixa.
Existe um teste Android Compatibility Test Suite (CTS) para alocar, configurar e iniciar cada codec repetidamente até catching OMX_ErrorInsufficientResources
(passar) ou qualquer outro erro (falhar).
2. OMX_IndexConfigPriority
Essa configuração permite que o aplicativo descreva a prioridade de codec desejada.
O valor associado é um número inteiro. Valor mais alto significa prioridade mais baixa. Atualmente, apenas dois níveis são suportados:
- 0: prioridade em tempo real - significando que o codec deve suportar a configuração de desempenho fornecida (por exemplo, taxa de quadros) em tempo real. Isso só será usado por reprodução de mídia, captura e possivelmente por cenários de comunicação em tempo real se o desempenho de melhor esforço não for adequado.
- 1: prioridade não em tempo real (melhor esforço). Este é o valor padrão.
Sugere-se que o fornecedor use isso como uma dica usada na configuração do codec e no planejamento de recursos - para entender os requisitos em tempo real do aplicativo.
Não assuma prioridade em tempo real, a menos que esteja configurado para 0.
3. OMX_IndexConfigOperatingRate
Essa configuração permite que o aplicativo descreva a taxa de quadros operacional para vídeo ou a taxa de amostragem para áudio na qual o codec precisará operar.
Isso é usado para casos como captura de vídeo em alta velocidade/câmera lenta, onde o formato do codificador de vídeo contém a taxa de reprodução de destino (por exemplo, 30 fps), mas o componente deve ser capaz de lidar com a alta taxa de captura operacional (por exemplo, 240 fps).
Essa taxa deve ser usada para planejamento de recursos e definição dos pontos de operação.