---------------------------------------------------------------------------
| 11873 | |
| 11874 | //--------------------------------------------------------------------------- |
| 11875 | void 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 |