Problèmes CMVideoFormatDescriptionCreateFromH264ParameterSets
Question
J'ai essayé de créer CMVideoFormatDescriptionRef
avec CMVideoFormatDescriptionCreateFromH264ParameterSets
mais il échoue avec l'erreur -12712 (qui ne semble être définie dans aucun en-tête)
J'ai pris mes SPS et PPS chez un avcC
atome d'un fichier mov (créé par une application d'appareil photo iPhone) :
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 semble être : 67 64 00 29 AC 56 80 78 02 27 E5 9A 80 80 80 81
...et le PPS : 28 EE 04 F2 C0
J'ai précédé SPS et PPS avec leurs longueurs de 4 octets (j'ai également essayé des longueurs de 1 octet et 2 octets avec les mêmes résultats) et j'ai lancé l'appel comme ceci :
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);
J'obtiens -12712 comme résultat à chaque fois (essayé SPS / PPS à partir de plusieurs fichiers et flux).
Avez-vous une idée de ce que je fais de mal ?(Le code a été vérifié sur Xcode6-Beta4 sur Simulator).Je préférerais éviter d'analyser SPS et PPS par moi-même et utiliser CMVideoFormatDescriptionCreate :-)
La solution
N'incluez pas la taille de 4 octets.Ni dans les charges utiles sps/pps, ni dans les valeurs de taille.
Autres conseils
J'ai cherché sur Google pour toi ;-)
Vérifiez ce code Chrome
https://src.chromium.org/svn/trunk/src/content/common/gpu/media/vt_video_decode_accelerator.cc
Et cette réponse à propos de H.264 SPS/PPS NALU
Emplacements possibles pour les jeux de paramètres de séquence/image pour le flux H.264