MCPcopy Create free account
hub / github.com/MediaArea/MediaInfoLib / SystemScheme1_TimeCodeArray

Method SystemScheme1_TimeCodeArray

Source/MediaInfo/Multiple/File_Mxf.cpp:11875–12017  ·  view source on GitHub ↗

---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

11873
11874//---------------------------------------------------------------------------
11875void File_Mxf::SystemScheme1_TimeCodeArray()
11876{
11877 //Parsing
11878 VECTOR(8);
11879 auto& SystemScheme=SystemScheme1s[Element_Code&0xFFFF];
11880 bool IsStart=SystemScheme.TimeCodeArray_StartTimecodes.empty();
11881 for (int32u i=0; i<Count; i++)
11882 {
11883 Element_Begin1("TimeCode");
11884 int8u Frames_Units, Frames_Tens, Seconds_Units, Seconds_Tens, Minutes_Units, Minutes_Tens, Hours_Units, Hours_Tens;
11885 bool DropFrame;
11886 BS_Begin();
11887
11888 #if MEDIAINFO_ADVANCED
11889 int32u BG;
11890 bool ColorFrame, FieldPhaseBgf0, Bgf0Bgf2, Bgf1, Bgf2FieldPhase;
11891 #define Get_TCB(_1,_2) Get_SB(_1,_2)
11892 #define Get_TC4(_1,_2) Get_L4(_1,_2)
11893 #else
11894 #define Get_TCB(_1,_2) Skip_SB(_2)
11895 #define Get_TC4(_1,_2) Skip_L4(_2)
11896 #endif
11897
11898 Get_TCB( ColorFrame, "CF - Color fame");
11899 Get_SB ( DropFrame, "DP - Drop frame");
11900 Get_S1 (2, Frames_Tens, "Frames (Tens)");
11901 Get_S1 (4, Frames_Units, "Frames (Units)");
11902
11903 Get_TCB( FieldPhaseBgf0, "FP - Field Phase / BGF0");
11904 Get_S1 (3, Seconds_Tens, "Seconds (Tens)");
11905 Get_S1 (4, Seconds_Units, "Seconds (Units)");
11906
11907 Get_TCB( Bgf0Bgf2, "BGF0 / BGF2");
11908 Get_S1 (3, Minutes_Tens, "Minutes (Tens)");
11909 Get_S1 (4, Minutes_Units, "Minutes (Units)");
11910
11911 Get_TCB( Bgf2FieldPhase, "BGF2 / Field Phase");
11912 Get_TCB( Bgf1, "BGF1");
11913 Get_S1 (2, Hours_Tens, "Hours (Tens)");
11914 Get_S1 (4, Hours_Units, "Hours (Units)");
11915
11916 BS_End();
11917
11918 Get_TC4( BG, "BG");
11919
11920 #undef Get_TCB
11921 #undef Get_TC4
11922
11923 auto FramesMax=MxfTimeCodeForDelay.IsInit()?(MxfTimeCodeForDelay.RoundedTimecodeBase-1):0;
11924 Element_Info1(TimeCode(Hours_Tens*10+Hours_Units, Minutes_Tens*10+Minutes_Units, Seconds_Tens*10+Seconds_Units, Frames_Tens*10+Frames_Units, FramesMax, TimeCode::DropFrame(DropFrame).FPS1001(Is1001)).ToString());
11925 Element_End0();
11926
11927 //TimeCode
11928 if (IsStart && !IsParsingEnd && IsParsingMiddle_MaxOffset==(int64u)-1)
11929 {
11930 SystemScheme.TimeCodeArray_StartTimecodes.emplace_back(Hours_Tens*10+Hours_Units, Minutes_Tens*10+Minutes_Units, Seconds_Tens*10+Seconds_Units, Frames_Tens*10+Frames_Units, FramesMax, TimeCode::DropFrame(DropFrame).FPS1001(Is1001));
11931 }
11932

Callers

nothing calls this directly

Calls 10

to_stringFunction · 0.85
FPS1001Method · 0.80
GetFramesMaxMethod · 0.80
TimeCodeClass · 0.50
emptyMethod · 0.45
IsInitMethod · 0.45
ToStringMethod · 0.45
IsValidMethod · 0.45
sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected