CMVideoFormatDescriptionCreateFromh264parametersets problemas
Pergunta
Eu tentei criar CMVideoFormatDescriptionRef
com CMVideoFormatDescriptionCreateFromH264ParameterSets
mas ele falha com -12712 de erro (o que não parece ser definidos em qualquer cabeçalho)
Eu tomei meu SPS e PPS a partir de um avcC
átomo de um arquivo mov (criado por uma câmera do iPhone app):
61 76 63 43 01 64 00 29 FF E1 00 10 67 64 00 29 AC 56 80 78 02 27 E5 9A 80
80 80 81 01 00 05 28 EE 04 F2 C0
SPS parece ser: 67 64 00 29 AC 56 80 78 02 27 E5 9A 80 80 80 81
...e o PPS: 28 EE 04 F2 C0
Eu precedido SPS e o PPS, com os seus 4 bytes comprimentos (tentei também de 1 byte 2 byte lenghts com os mesmos resultados) e emitiu a chamada assim:
uint8_t sps[] = {0x00, 0x00, 0x00, 0x10, 0x67, 0x64, 0x00, 0x29, 0xAC, 0x56, 0x80, 0x78, 0x02, 0x27, 0xE5, 0x9A, 0x80, 0x80, 0x80, 0x81};
uint8_t pps[] = {0x00, 0x00, 0x00, 0x05, 0x28, 0xEE, 0x04, 0xF2, 0xC0};
uint8_t* props[] = {sps, pps};
size_t sizes[] = {0x14, 0x09}; // sizes include the 4-byte length
CMVideoFormatDescriptionRef formatDesc;
OSStatus formatCreateResult = CMVideoFormatDescriptionCreateFromH264ParameterSets(NULL, 2, props, sizes, 4, &formatDesc);
Eu fico -12712 como o resultado de cada vez (fechar SPS / PPS a partir de vários arquivos e fluxos).
Você tem alguma idéia o que eu fiz de errado ?(O código foi verificado em Xcode6-Beta4 em Simulador).Eu prefiro evitar de análise SPS e PPS na minha própria e simples de utilização de CMVideoFormatDescriptionCreate :-)
Solução
Não incluem os 4 bytes de tamanho.No sps/pps cargas, nem os valores de tamanho.
Outras dicas
Eu pesquisei para você ;-)
Verifique este Cromo código
https://src.chromium.org/svn/trunk/src/content/common/gpu/media/vt_video_decode_accelerator.cc
E esta resposta sobre H. 264 SPS/PPS NALU
Possíveis Locais para a Sequência de Imagem/ajuste de Parâmetro(s) para H. 264 Stream