Pergunta

Estou trabalhando em um projeto de videoconferência.Estávamos usando um codec de software para codificar e decodificar quadros de vídeo, o que funcionará bem para resoluções mais baixas (até 320p).Planejamos oferecer suporte ao nosso aplicativo para resoluções mais altas também de até 720p.Fiquei sabendo que a aceleração de hardware fará esse trabalho muito bem.

Como o codec de hardware api Media codec está disponível a partir do Jelly Bean, usei-o para codificar e decodificar e está funcionando bem.Mas meu aplicativo é compatível com 2.3.Portanto, preciso de uma decodificação de vídeo acelerada por hardware para quadros H.264 de 720p a 30fps.

Na pesquisa, me deparei com a ideia de usar o codec OMX modificando a estrutura do stage fright. Eu tinha lido que o decodificador de hardware para H.264 está disponível a partir de 2.1 e o codificador está disponível a partir de 3.0.Li muitos artigos e perguntas feitas neste site e confirmei que posso seguir em frente.

Eu tinha lido sobre arquitetura do medo do palco aqui -arquitetura e aqui- stagefright como funciona

E eu li sobre o codec OMX aqui- use-android-hardware-decoder-with-omxcodec-in-ndk.

Estou tendo problemas iniciais e algumas confusões na sua implementação. Gostaria de ter algumas informações sobre isso.

  1. Para usar o codec OMX em meu código, devo construir meu projeto com toda a árvore de origem do Android ou posso fazer isso adicionando alguns arquivos da fonte AOSP (se sim, quais todos).
  2. Quais são os passos do zero que devo seguir para alcançá-lo.

Alguém pode me dar uma orientação sobre isso

Obrigado...

Foi útil?

Solução

O melhor exemplo para descrever a integração de OMXCodec na camada nativa está o utilitário de linha de comando stagefright como pode ser observado aqui em GingerBread em si.Este exemplo mostra como um OMXCodec é criado.

Alguns pontos a serem observados:

  1. A entrada para OMXCodec deve ser modelado como um MediaSource e, portanto, você deve garantir que seu aplicativo atenda a esse requisito.Um exemplo para criar um MediaSource fonte baseada pode ser encontrada em record arquivo utilitário como DummySource.

  2. A entrada para o decodificador, ou seja, MediaSource deverá fornecer os dados através do read método e, portanto, seu aplicativo deve fornecer quadros individuais para cada read chamar.

  3. O decodificador pode ser criado com NativeWindow para alocação de buffer de saída.Neste caso, se você deseja acessar o buffer da CPU, você provavelmente deve consultar esta consulta para mais detalhes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top