Проверка допустимости единиц x264 Nal

Я работаю с api кодировщика x264, где для каждого закодированного изображения я получаю число конечных единиц. Есть ли способ проверить, действительны ли результаты в моем отладчике VS2010. В настоящее время я вижу следующую информацию:

i_ref_idc        -858993460
i_type           -858993460
b_long_startcode -858993460
i_first_mb       -858993460
i_last_mb        -858993460
i_payload        27
p_payload        0x06b94d68
i_padding        -858993460

Я не уверен, представляют ли эти отрицательные значения то, что финальные результаты недействительны или в них отсутствует информация.
В принципе, как я могу проверить, что окончательные результаты, полученные от x264_encoder_encode (), являются действительной конечной единицей?
ПРИМЕЧАНИЕ < / strong> :: я использую эти финалы для прямой трансляции с помощью LIVE555.


person bhawesh    schedule 07.01.2014    source источник


Ответы (2)


Это определенно неверно. Вы не можете точно знать, действительно ли nalu на 100%, не разбирая его целиком. Но вы можете проверить значения на вменяемость.

i_ref_idc - это 2-битное поле. Все, что выходит за пределы диапазона 0–3, не является разумным.

i_type - 5 бит. Но на самом деле кодировщик выдаст только 1-15 или 19-21 включительно.

b_long_startcode является логическим, поэтому вы не можете его проверить

i_first_mb и i_last_mb будет меньше ceil(width/8.0) * ceil(height/8.0)

i_payload - это размер данных, на которые указывает p_payload, поэтому выберите здесь большее значение. 10*with*height должно хватить.

person szatmary    schedule 07.01.2014

-858993460 также известны как 0xСССССССС и указывают, что значения не были инициализированы кодировщиком.

i_payload, p_payload - размер полезной нагрузки в байтах и ​​указатель на данные. По сути, проверки достоверности этих данных не существует, кроме подачи данных в декодер и тестирования на наличие ошибок вывода и декодирования.

person Roman R.    schedule 07.01.2014