@@ -2382,37 +2382,41 @@ void File_Dts::Rev2Aux()
23822382 // in the reserved data.
23832383 int8u Rev2Bytes;
23842384 Peek_B1 (Rev2Bytes);
2385- bool DmixIndexPresent=(Rev2Bytes&1 )==1 ;
2386- Rev2Bytes = (Rev2Bytes>>1 )+1 ;
2385+ auto Rev2AUXDataByteSize=(Rev2Bytes>>1 )+1 ;
23872386 if (Element_Size-Element_Offset>=Rev2Bytes && Dts_CRC_CCIT_Compute (Buffer+Buffer_Offset+Element_Offset, Rev2Bytes)==0 )
23882387 {
23892388 BS_Begin ();
23902389 // Will later use Rev2BitsRemain to skip padding up to CRC
2391- int Rev2BitsRemain=(Rev2Bytes -2 )*8 -Data_BS_Remain ();
2390+ auto Rev2BitsRemain=(Rev2AUXDataByteSize -2 )*8 -Data_BS_Remain ();
23922391
23932392 Skip_S1 (7 , " Rev2AUXDataByteSize" );
23942393 bool ESMetaDataFlag;
23952394 Get_SB (ESMetaDataFlag, " ESMetaDataFlag" );
23962395 if (ESMetaDataFlag)
23972396 Skip_S1 (8 , " EmbESDownMixScaleIndex" );
23982397
2399- bool BroadcastMetadataPresent = false ;
2400- Get_SB (BroadcastMetadataPresent, " BroadcastMetadataPresent" );
2401- if (BroadcastMetadataPresent)
2398+ if (Rev2AUXDataByteSize>4 )
24022399 {
2403- bool DRCMetadataPresent, DialnormMetadataPresent;
2404- Get_SB (DRCMetadataPresent, " DRCMetadataPresent" );
2405- Get_SB (DialnormMetadataPresent, " DialnormMetadata" );
2406- if (DRCMetadataPresent)
2407- Skip_S1 (4 , " DRCversion_Rev2AUX" );
2408- auto Remain=Data_BS_Remain ()%8 ;
2409- if (Remain)
2410- Skip_S1 (Remain, " ByteAlign" );
2411- if (DRCMetadataPresent)
2400+ bool BroadcastMetadataPresent;
2401+ Get_SB (BroadcastMetadataPresent, " BroadcastMetadataPresent" );
2402+ if (BroadcastMetadataPresent)
24122403 {
2413- Element_Begin1 (" Rev2_DRCs" );
2414- for (int i=0 ; i<SubSubFrameCount; i++)
2415- Skip_S1 (8 , " DRCCoeff_Rev2" );
2404+ Element_Begin1 (" BroadcastMetadata" );
2405+ bool DRCMetadataPresent, DialnormMetadataPresent;
2406+ Get_SB (DRCMetadataPresent, " DRCMetadataPresent" );
2407+ Get_SB (DialnormMetadataPresent, " DialnormMetadata" );
2408+ if (DRCMetadataPresent)
2409+ Skip_S1 (4 , " DRCversion_Rev2AUX" );
2410+ auto Remain=Data_BS_Remain ()%8 ;
2411+ if (Remain)
2412+ Skip_S1 (Remain, " ByteAlign" );
2413+ if (DRCMetadataPresent)
2414+ {
2415+ Element_Begin1 (" Rev2_DRCs" );
2416+ for (int i=0 ; i<SubSubFrameCount; i++)
2417+ Skip_S1 (8 , " DRCCoeff_Rev2" );
2418+ Element_End0 ();
2419+ }
24162420 Element_End0 ();
24172421 }
24182422
0 commit comments