مشكلات CMVideoFormatDescriptionCreateFromH264ParameterSets
سؤال
لقد حاولت إنشاء CMVideoFormatDescriptionRef
مع CMVideoFormatDescriptionCreateFromH264ParameterSets
لكنه فشل بسبب الخطأ -12712 (والذي يبدو أنه لم يتم تعريفه في أي رأس)
لقد أخذت SPS وPPS الخاص بي من avcC
ذرة من ملف mov (تم إنشاؤه بواسطة تطبيق كاميرا 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 هو: 67 64 00 29 AC 56 80 78 02 27 E5 9A 80 80 80 81
...و PPS: 28 EE 04 F2 C0
لقد سبقت SPS وPPS بأطوالهما البالغة 4 بايت (جربت أيضًا أطوال 1 بايت و2 بايت بنفس النتائج) وأصدرت المكالمة على النحو التالي:
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);
أحصل على -12712 كنتيجة في كل مرة (جربت SPS/PPS من عدة ملفات وتدفقات).
هل لديك أي فكرة عما أفعله الخطأ؟(تم فحص الكود على Xcode6-Beta4 على جهاز محاكاة).أفضل تجنب تحليل SPS وPPS بمفردي واستخدام CMVideoFormatDescriptionCreate :-)
المحلول
لا تقم بتضمين حجم 4 بايت.إما في الحمولات sps/pps، ولا في قيم الحجم.
نصائح أخرى
بحثت عنك في جوجل ;-)
تحقق من رمز Chromium هذا
https://src.chromium.org/svn/trunk/src/content/common/gpu/media/vt_video_decode_accelerator.cc
وهذه الإجابة حول H.264 SPS/PPS NALU
المواقع المحتملة لمجموعة (مجموعات) معلمات التسلسل/الصورة لتدفق H.264