2012-08-08 1 views
2

안드로이드 장치에서 기록한 .mp4 비디오 파일에 들어있는 디코더 구성 레코드를 검사하고 있습니다. 일부 장치에는 디코더 구성 레코드에 이상하거나 잘못된 매개 변수가 기록되어 있습니다. 표준 상태 (51)가 가장 높은 값이기 때문에.mp4에서 가져온 H.264 디코더 구성 레코드 형식

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 잘못 : 여기

이 잘못 갤럭시 플레이어 4.0 샘플입니다.

AVCProfileIndication (66, 77, 88, 100, 120, ...)가 constraint_set

profile_compatibility라고 될 것인가? _flag의 2 최하위 비트는 예약 0

이 그것과 같아야 어떻게 동일하게 seposed됩니다

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 

방법 AVCLevelIndicationAVCProfileIndicationprofile_idclevel_idc에서 추론 할 수 있는가?

파라미터를 SPS 매개 변수와 비교하여 잘못된 매개 변수를 확인하거나 수정하는 방법이 있습니까?

답변

5

level_idc10 * level입니다. 즉 레벨이 3.1 인 경우 31이됩니다.

profile_idc은 부속서 A에 ISO/IEC 14496-10으로 지정됩니다. 베이스 라인 프로파일은 66이고 메인 프로파일은 77이고 확장 프로파일은 88입니다.

또한 SPS RBSP 및 PPS RBSP의 구문은 각각 7.3.2.1 및 7.3.2.2에서 확인할 수 있습니다. ue(x)se(x)은 부호없는 지수 golomb 코딩 및 부호있는 지수 golomb 코딩을 나타냅니다.

편집 : 사과드립니다. AVCProfileIndicationAVCLevelIndicationprofile_idclevel_idc

+0

과 같은 값을 가져야합니다. 예 : profile_idc == 103 어떻게 66 (기준선 프로필)으로 변환됩니까? 및 level_idc == 0 어떻게 13 (수준 1.3)로 변환? – Alex

+0

endianness는 라인 어딘가에 뒤쪽에있는 것처럼 보입니다. 'AVCProfileIndication','profile_compatibility','AVCLevelIndication'은 SPS NALU의 바이트 1에서 3까지입니다. 즉 SPS NALU임을 나타내므로 0x67을 무시한 다음 해당 값에 대해 '0x42','0x00', '0x0d'를 사용하십시오. 그러나 NALU 데이터의 뒤에서'0xF2','0x83','0x02'를 사용하고 있으며 잘못된 방향으로 가고있는 것으로 보입니다. '0xF2'는 242를,'0x83'은 profile_compatibility에 131을,'0x02'는 레벨 2를 제공합니다. – jgh

+1

또한이 profile_idc == 103은 profile_idc = 0x67이 실제로 NALU 헤더임을 나타냅니다 . '0x67 & 0x1F == 0x7' SPS 타입은 0x7입니다. 다음 바이트 인 0x42에서 시작하려고합니다. – jgh