我正在检查从Android设备录制的.mp4视频文件中包含的解码器配置记录。某些设备在解码器配置记录中写入了奇怪或不正确的参数。
以下是来自Galaxy Player 4.0的示例:
DecoderConfigurationRecord: 010283f2ffe100086742000de90283f201000568ce010f20
pictureParameterSetNALUnits : 68ce010f20
AVCLevelIndication : 242
AVCProfileIndication : 2
sequenceParameterSetNALUnits : 6742000de90283f2
lengthSizeMinusOne : 3
configurationVersion : 1
profile_compatibility : 131
profile_idc : 103
constraint_set : 16
level_idc : 0
AVCLevelIndication == 242
错误,因为标准状态51是最高值。
AVCProfileIndication
应该在(66,77,88,100,120,..)
profile_compatibility
被称为constraint_set
?_flag
s和2个最低有效位被保留并且被置于等于0
这应该是这样的:
DecoderConfigurationRecord: 0142000dffe100086742000de90283f201000568ce010f20
pictureParameterSetNALUnits : 68ce010f20
AVCLevelIndication : 13
AVCProfileIndication : 66
sequenceParameterSetNALUnits : 6742000de90283f2
lengthSizeMinusOne : 3
configurationVersion : 1
profile_compatibility : 0
profile_idc : 103
constraint_set : 16
level_idc : 0
如何从AVCLevelIndication
和AVCProfileIndication
推断profile_idc
和level_idc
?
有没有办法通过将它们与SPS
参数进行比较来检查或可能修复错误的参数?
答案 0 :(得分:5)
level_idc
是10 * level
。即如果您使用等级3.1
,则为31
。
profile_idc
在ISO/IEC 14496-10
的附件A中指定。基线资料为66
,主要资料为77
,扩展资料为88
。
此外,您可以分别在7.3.2.1和7.3.2.2节中查看SPS RBSP和PPS RBSP的语法。注意ue(x)
和se(x)
表示无符号指数golomb编码和带符号指数golomb编码。
AVCProfileIndication
和AVCLevelIndication
应与profile_idc
和level_idc
相同