我正在使用 x264编码器api ,其中对于每个编码图片,我获得了许多nal单位。有什么方法可以检查我的VS2010调试器中的nals是否有效。目前我可以看到以下信息::
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
我不确定这些负值是否代表nals无效或缺少信息
基本上我如何检查我从x264_encoder_encode()获得的nals是否是一个有效的nal单位?
注意 ::我正在使用这些nals使用LIVE555实时流式传输。
答案 0 :(得分:2)
-858993460
也称为0xСССССССС
和indicate,这些值未被编码器初始化。
i_payload
,p_payload
是以字节为单位的有效负载大小和指向数据的指针。除了向解码器提供数据并测试输出和解码错误的可用性之外,基本上没有对这些数据进行有效性检查。
答案 1 :(得分:1)
这绝对无效。如果没有解析整个问题,你无法确定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
就足够了。