//--------------------------------------------------------------------------- void File_Mpeg4_Descriptors::Descriptor_06() { //Parsing int8u predefined, timeStampLength; bool durationFlag, useTimeStampsFlag; Get_B1 (predefined, "predefined"); Param_Info(Mpeg4_Descriptors_Predefined(predefined)); switch (predefined) { case 0x00 : { BS_Begin(); Skip_SB( "useAccessUnitStartFlag"); Skip_SB( "useAccessUnitEndFlag"); Skip_SB( "useRandomAccessPointFlag"); Skip_SB( "hasRandomAccessUnitsOnlyFlag"); Skip_SB( "usePaddingFlag"); Get_SB (useTimeStampsFlag, "useTimeStampsFlag"); Skip_SB( "useIdleFlag"); Get_SB (durationFlag, "durationFlag"); BS_End(); Skip_B4( "timeStampResolution"); Skip_B4( "OCRResolution"); Get_B1 (timeStampLength, "timeStampLength"); Skip_B1( "OCRLength"); Skip_B1( "AU_Length"); Skip_B1( "instantBitrateLength"); BS_Begin(); Skip_S1(4, "degradationPriorityLength"); Skip_S1(5, "AU_seqNumLength"); Skip_S1(5, "packetSeqNumLength"); Skip_S1(2, "reserved"); BS_End(); } break; case 0x01 : useTimeStampsFlag=false; durationFlag=false; timeStampLength=32; break; case 0x02 : useTimeStampsFlag=true; durationFlag=false; timeStampLength=32; break; default : useTimeStampsFlag=false; durationFlag=false; timeStampLength=32; } if (durationFlag) { Skip_B4( "timeScale"); Skip_B2( "accessUnitDuration"); Skip_B2( "compositionUnitDuration"); } if (!useTimeStampsFlag) { BS_Begin(); Skip_S8(timeStampLength, "startDecodingTimeStamp"); Skip_S8(timeStampLength, "startCompositionTimeStamp"); BS_End(); } }
//--------------------------------------------------------------------------- void File_Mpeg4_Descriptors::Descriptor_06() { delete SLConfig; SLConfig=new slconfig; //Parsing int8u predefined; Get_B1 (predefined, "predefined"); Param_Info1(Mpeg4_Descriptors_Predefined(predefined)); switch (predefined) { case 0x00 : { BS_Begin(); Get_SB (SLConfig->useAccessUnitStartFlag, "useAccessUnitStartFlag"); Get_SB (SLConfig->useAccessUnitEndFlag, "useAccessUnitEndFlag"); Get_SB (SLConfig->useRandomAccessPointFlag, "useRandomAccessPointFlag"); Get_SB (SLConfig->hasRandomAccessUnitsOnlyFlag, "hasRandomAccessUnitsOnlyFlag"); Get_SB (SLConfig->usePaddingFlag, "usePaddingFlag"); Get_SB (SLConfig->useTimeStampsFlag, "useTimeStampsFlag"); Get_SB (SLConfig->useIdleFlag, "useIdleFlag"); Get_SB (SLConfig->durationFlag, "durationFlag"); BS_End(); Get_B4 (SLConfig->timeStampResolution, "timeStampResolution"); Get_B4( SLConfig->OCRResolution, "OCRResolution"); Get_B1 (SLConfig->timeStampLength, "timeStampLength"); Get_B1 (SLConfig->OCRLength, "OCRLength"); Get_B1 (SLConfig->AU_Length, "AU_Length"); Get_B1 (SLConfig->instantBitrateLength, "instantBitrateLength"); BS_Begin(); Get_S1 (4, SLConfig->degradationPriorityLength, "degradationPriorityLength"); Get_S1 (5, SLConfig->AU_seqNumLength, "AU_seqNumLength"); Get_S1 (5, SLConfig->packetSeqNumLength, "packetSeqNumLength"); Skip_S1(2, "reserved"); BS_End(); } break; case 0x01 : SLConfig->useAccessUnitStartFlag =false; SLConfig->useAccessUnitEndFlag =false; SLConfig->useRandomAccessPointFlag =false; SLConfig->hasRandomAccessUnitsOnlyFlag =false; SLConfig->usePaddingFlag =false; SLConfig->useTimeStampsFlag =false; SLConfig->useIdleFlag =false; SLConfig->durationFlag =false; //- SLConfig->timeStampResolution =1000; SLConfig->OCRResolution =0; //- SLConfig->timeStampLength =32; SLConfig->OCRLength =0; //- SLConfig->AU_Length =0; SLConfig->instantBitrateLength =0; //- SLConfig->degradationPriorityLength =0; SLConfig->AU_seqNumLength =0; SLConfig->packetSeqNumLength =0; break; case 0x02 : SLConfig->useAccessUnitStartFlag =false; SLConfig->useAccessUnitEndFlag =false; SLConfig->useRandomAccessPointFlag =false; SLConfig->hasRandomAccessUnitsOnlyFlag =false; SLConfig->usePaddingFlag =false; SLConfig->useTimeStampsFlag =true; SLConfig->useIdleFlag =false; SLConfig->durationFlag =false; SLConfig->timeStampResolution =0; //- SLConfig->OCRResolution =0; //- SLConfig->timeStampLength =0; SLConfig->OCRLength =0; SLConfig->AU_Length =0; SLConfig->instantBitrateLength =0; SLConfig->degradationPriorityLength =0; SLConfig->AU_seqNumLength =0; SLConfig->packetSeqNumLength =0; break; default : SLConfig->useAccessUnitStartFlag =false; SLConfig->useAccessUnitEndFlag =false; SLConfig->useRandomAccessPointFlag =false; SLConfig->hasRandomAccessUnitsOnlyFlag =false; SLConfig->usePaddingFlag =false; SLConfig->useTimeStampsFlag =false; SLConfig->useIdleFlag =false; SLConfig->durationFlag =false; SLConfig->timeStampResolution =0; SLConfig->OCRResolution =0; SLConfig->timeStampLength =0; SLConfig->AU_Length =0; SLConfig->instantBitrateLength =0; SLConfig->degradationPriorityLength =0; SLConfig->AU_seqNumLength =0; SLConfig->packetSeqNumLength =0; } if (SLConfig->durationFlag) { Get_B4 (SLConfig->timeScale, "timeScale"); Get_B2 (SLConfig->accessUnitDuration, "accessUnitDuration"); Get_B2 (SLConfig->compositionUnitDuration, "compositionUnitDuration"); } else { SLConfig->timeScale =0; //- SLConfig->accessUnitDuration =0; //- SLConfig->compositionUnitDuration =0; //- } if (!SLConfig->useTimeStampsFlag) { BS_Begin(); Get_S8 (SLConfig->timeStampLength, SLConfig->startDecodingTimeStamp, "startDecodingTimeStamp"); Get_S8 (SLConfig->timeStampLength, SLConfig->startCompositionTimeStamp, "startCompositionTimeStamp"); BS_End(); } else { SLConfig->startDecodingTimeStamp =0; //- SLConfig->startCompositionTimeStamp =0; //- } }