1 /* Copyright (c) MediaArea.net SARL. All Rights Reserved. 2 * 3 * Use of this source code is governed by a BSD-style license that can 4 * be found in the License.html file in the root of the source tree. 5 */ 6 7 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 // 9 // Information about Matroska files 10 // 11 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12 13 //--------------------------------------------------------------------------- 14 #ifndef MediaInfo_File_MatroskaH 15 #define MediaInfo_File_MatroskaH 16 //--------------------------------------------------------------------------- 17 18 //--------------------------------------------------------------------------- 19 #include "MediaInfo/File__Analyze.h" 20 //--------------------------------------------------------------------------- 21 22 namespace MediaInfoLib 23 { 24 25 //*************************************************************************** 26 // Classe File_Matroska 27 //*************************************************************************** 28 29 class File_Mk : public File__Analyze 30 { 31 protected : 32 //Streams management 33 void Streams_Finish(); 34 35 public : 36 File_Mk(); 37 ~File_Mk(); 38 39 private : 40 //Buffer - Synchro 41 bool Synchronize(); 42 43 //Buffer - Global 44 void Read_Buffer_Continue(); 45 46 //Buffer - Global 47 void Read_Buffer_Unsynched(); 48 #if MEDIAINFO_SEEK 49 size_t Read_Buffer_Seek (size_t Method, int64u Value, int64u ID); 50 #endif //MEDIAINFO_SEEK 51 52 //Buffer 53 bool Header_Begin(); 54 void Header_Parse(); 55 void Data_Parse(); 56 57 //Elements 58 void Zero(); 59 void CRC32(); 60 void Void(); Ebml()61 void Ebml(){}; Ebml_Version()62 void Ebml_Version(){UInteger_Info();}; 63 void Ebml_ReadVersion(); Ebml_MaxIDLength()64 void Ebml_MaxIDLength(){UInteger_Info();}; 65 void Ebml_MaxSizeLength(); 66 void Ebml_DocType(); 67 void Ebml_DocTypeVersion(); 68 void Ebml_DocTypeReadVersion(); 69 void Rawcooked_BeforeData(); 70 void Rawcooked_BeforeData(bool HasMask, bool UseMask=false); 71 void Rawcooked_AfterData(); 72 void Rawcooked_AfterData(bool HasMask, bool UseMask=false); 73 void Rawcooked_FileName(); 74 void Rawcooked_FileName(bool HasMask, bool UseMask=false); 75 void RawcookedBlock(); RawcookedBlock_BeforeData()76 void RawcookedBlock_BeforeData() { Rawcooked_BeforeData(false); } RawcookedBlock_AfterData()77 void RawcookedBlock_AfterData() { Rawcooked_AfterData(false); } 78 void RawcookedBlock_FileHash(); RawcookedBlock_FileName()79 void RawcookedBlock_FileName() { Rawcooked_FileName(false); } RawcookedBlock_MaskAdditionBeforeData()80 void RawcookedBlock_MaskAdditionBeforeData() { Rawcooked_BeforeData(true, true); } RawcookedBlock_MaskAdditionAfterData()81 void RawcookedBlock_MaskAdditionAfterData() { Rawcooked_AfterData(true, true); } RawcookedBlock_MaskAdditionFileName()82 void RawcookedBlock_MaskAdditionFileName() { Rawcooked_FileName(true, true); } 83 void RawcookedSegment(); 84 void RawcookedSegment_LibraryName(); 85 void RawcookedSegment_LibraryVersion(); 86 void RawcookedTrack(); RawcookedTrack_BeforeData()87 void RawcookedTrack_BeforeData() { RawcookedBlock_BeforeData(); } RawcookedTrack_AfterData()88 void RawcookedTrack_AfterData() { RawcookedBlock_AfterData(); } RawcookedTrack_FileHash()89 void RawcookedTrack_FileHash() { RawcookedBlock_FileHash(); } RawcookedTrack_FileName()90 void RawcookedTrack_FileName() { RawcookedBlock_FileName(); } RawcookedTrack_MaskBaseBeforeData()91 void RawcookedTrack_MaskBaseBeforeData() { Rawcooked_BeforeData(true, false); } RawcookedTrack_MaskBaseAfterData()92 void RawcookedTrack_MaskBaseAfterData() { Rawcooked_AfterData(true, false); } RawcookedTrack_MaskBaseFileName()93 void RawcookedTrack_MaskBaseFileName() { Rawcooked_FileName(true, false); } 94 void Segment(); 95 void Segment_SeekHead(); 96 void Segment_SeekHead_Seek(); 97 void Segment_SeekHead_Seek_SeekID(); 98 void Segment_SeekHead_Seek_SeekPosition(); 99 void Segment_Info(); 100 void Segment_Info_SegmentUID(); Segment_Info_SegmentFilename()101 void Segment_Info_SegmentFilename(){UTF8_Info();}; Segment_Info_PrevUID()102 void Segment_Info_PrevUID(){UInteger_Info();}; Segment_Info_PrevFilename()103 void Segment_Info_PrevFilename(){UTF8_Info();}; Segment_Info_NextUID()104 void Segment_Info_NextUID(){UInteger_Info();}; Segment_Info_NextFilename()105 void Segment_Info_NextFilename(){UTF8_Info();}; Segment_Info_SegmentFamily()106 void Segment_Info_SegmentFamily(){Skip_XX(Element_Size, "Data");}; Segment_Info_ChapterTranslate()107 void Segment_Info_ChapterTranslate(){}; Segment_Info_ChapterTranslate_ChapterTranslateEditionUID()108 void Segment_Info_ChapterTranslate_ChapterTranslateEditionUID(){UInteger_Info();}; Segment_Info_ChapterTranslate_ChapterTranslateCodec()109 void Segment_Info_ChapterTranslate_ChapterTranslateCodec(){UInteger_Info();}; Segment_Info_ChapterTranslate_ChapterTranslateID()110 void Segment_Info_ChapterTranslate_ChapterTranslateID(){Skip_XX(Element_Size, "Data");}; 111 void Segment_Info_TimecodeScale(); 112 void Segment_Info_Duration(); 113 void Segment_Info_DateUTC(); 114 void Segment_Info_Title(); 115 void Segment_Info_MuxingApp(); 116 void Segment_Info_WritingApp(); 117 void Segment_Cluster(); 118 void Segment_Cluster_Timecode(); Segment_Cluster_SilentTracks()119 void Segment_Cluster_SilentTracks(){}; Segment_Cluster_SilentTracks_SilentTrackNumber()120 void Segment_Cluster_SilentTracks_SilentTrackNumber(){UInteger_Info();}; Segment_Cluster_Position()121 void Segment_Cluster_Position(){UInteger_Info();}; Segment_Cluster_PrevSize()122 void Segment_Cluster_PrevSize(){UInteger_Info();}; 123 void Segment_Cluster_SimpleBlock(); 124 void Segment_Cluster_BlockGroup(); 125 void Segment_Cluster_BlockGroup_Block(); 126 void Segment_Cluster_BlockGroup_Block_Lace(); Segment_Cluster_BlockGroup_BlockVirtual()127 void Segment_Cluster_BlockGroup_BlockVirtual(){Skip_XX(Element_Size, "Data");}; Segment_Cluster_BlockGroup_BlockAdditions()128 void Segment_Cluster_BlockGroup_BlockAdditions(){}; Segment_Cluster_BlockGroup_BlockAdditions_BlockMore()129 void Segment_Cluster_BlockGroup_BlockAdditions_BlockMore(){}; Segment_Cluster_BlockGroup_BlockAdditions_BlockMore_BlockAddID()130 void Segment_Cluster_BlockGroup_BlockAdditions_BlockMore_BlockAddID(){UInteger_Info();}; Segment_Cluster_BlockGroup_BlockAdditions_BlockMore_BlockAdditional()131 void Segment_Cluster_BlockGroup_BlockAdditions_BlockMore_BlockAdditional(){Skip_XX(Element_Size, "Data");}; 132 void Segment_Cluster_BlockGroup_BlockDuration(); Segment_Cluster_BlockGroup_ReferencePriority()133 void Segment_Cluster_BlockGroup_ReferencePriority(){UInteger_Info();}; Segment_Cluster_BlockGroup_ReferenceBlock()134 void Segment_Cluster_BlockGroup_ReferenceBlock(){UInteger_Info();}; Segment_Cluster_BlockGroup_ReferenceVirtual()135 void Segment_Cluster_BlockGroup_ReferenceVirtual(){UInteger_Info();}; Segment_Cluster_BlockGroup_CodecState()136 void Segment_Cluster_BlockGroup_CodecState(){Skip_XX(Element_Size, "Data");}; Segment_Cluster_BlockGroup_DiscardPadding()137 void Segment_Cluster_BlockGroup_DiscardPadding(){UInteger_Info();}; Segment_Cluster_BlockGroup_Slices()138 void Segment_Cluster_BlockGroup_Slices(){}; Segment_Cluster_BlockGroup_Slices_TimeSlice()139 void Segment_Cluster_BlockGroup_Slices_TimeSlice(){}; Segment_Cluster_BlockGroup_Slices_TimeSlice_LaceNumber()140 void Segment_Cluster_BlockGroup_Slices_TimeSlice_LaceNumber(){UInteger_Info();}; Segment_Cluster_BlockGroup_Slices_TimeSlice_FrameNumber()141 void Segment_Cluster_BlockGroup_Slices_TimeSlice_FrameNumber(){UInteger_Info();}; Segment_Cluster_BlockGroup_Slices_TimeSlice_BlockAdditionID()142 void Segment_Cluster_BlockGroup_Slices_TimeSlice_BlockAdditionID(){UInteger_Info();}; Segment_Cluster_BlockGroup_Slices_TimeSlice_Delay()143 void Segment_Cluster_BlockGroup_Slices_TimeSlice_Delay(){UInteger_Info();}; Segment_Cluster_BlockGroup_Slices_TimeSlice_SliceDuration()144 void Segment_Cluster_BlockGroup_Slices_TimeSlice_SliceDuration(){UInteger_Info();}; Segment_Cluster_BlockGroup_ReferenceFrame()145 void Segment_Cluster_BlockGroup_ReferenceFrame(){}; Segment_Cluster_BlockGroup_ReferenceFrame_ReferenceOffset()146 void Segment_Cluster_BlockGroup_ReferenceFrame_ReferenceOffset(){UInteger_Info();}; Segment_Cluster_BlockGroup_ReferenceFrame_ReferenceTimeCode()147 void Segment_Cluster_BlockGroup_ReferenceFrame_ReferenceTimeCode(){UInteger_Info();}; Segment_Cluster_EncryptedBlock()148 void Segment_Cluster_EncryptedBlock(){Skip_XX(Element_Size, "Data");}; 149 void Segment_Tracks(); 150 void Segment_Tracks_TrackEntry(); 151 void Segment_Tracks_TrackEntry_TrackNumber(); 152 void Segment_Tracks_TrackEntry_TrackUID(); 153 void Segment_Tracks_TrackEntry_TrackType(); Segment_Tracks_TrackEntry_FlagEnabled()154 void Segment_Tracks_TrackEntry_FlagEnabled(){UInteger_Info();}; 155 void Segment_Tracks_TrackEntry_FlagDefault(); 156 void Segment_Tracks_TrackEntry_FlagForced(); Segment_Tracks_TrackEntry_FlagLacing()157 void Segment_Tracks_TrackEntry_FlagLacing(){UInteger_Info();}; Segment_Tracks_TrackEntry_MinCache()158 void Segment_Tracks_TrackEntry_MinCache(){UInteger_Info();}; Segment_Tracks_TrackEntry_MaxCache()159 void Segment_Tracks_TrackEntry_MaxCache(){UInteger_Info();}; 160 void Segment_Tracks_TrackEntry_DefaultDuration(); Segment_Tracks_TrackEntry_DefaultDecodedFieldDuration()161 void Segment_Tracks_TrackEntry_DefaultDecodedFieldDuration(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackTimecodeScale()162 void Segment_Tracks_TrackEntry_TrackTimecodeScale(){Float_Info();}; Segment_Tracks_TrackEntry_TrackOffset()163 void Segment_Tracks_TrackEntry_TrackOffset(){UInteger_Info();}; Segment_Tracks_TrackEntry_MaxBlockAdditionID()164 void Segment_Tracks_TrackEntry_MaxBlockAdditionID(){UInteger_Info();}; 165 void Segment_Tracks_TrackEntry_Name(); 166 void Segment_Tracks_TrackEntry_Language(); Segment_Tracks_TrackEntry_LanguageIETF()167 void Segment_Tracks_TrackEntry_LanguageIETF(){String_Info();}; 168 void Segment_Tracks_TrackEntry_CodecID(); 169 void Segment_Tracks_TrackEntry_CodecPrivate(); Segment_Tracks_TrackEntry_CodecName()170 void Segment_Tracks_TrackEntry_CodecName(){UTF8_Info();}; Segment_Tracks_TrackEntry_AttachmentLink()171 void Segment_Tracks_TrackEntry_AttachmentLink(){UInteger_Info();}; Segment_Tracks_TrackEntry_CodecSettings()172 void Segment_Tracks_TrackEntry_CodecSettings(){UTF8_Info();}; Segment_Tracks_TrackEntry_CodecInfoURL()173 void Segment_Tracks_TrackEntry_CodecInfoURL(){String_Info();}; Segment_Tracks_TrackEntry_CodecDownloadURL()174 void Segment_Tracks_TrackEntry_CodecDownloadURL(){String_Info();}; Segment_Tracks_TrackEntry_CodecDecodeAll()175 void Segment_Tracks_TrackEntry_CodecDecodeAll(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackOverlay()176 void Segment_Tracks_TrackEntry_TrackOverlay(){UInteger_Info();}; Segment_Tracks_TrackEntry_CodecDelay()177 void Segment_Tracks_TrackEntry_CodecDelay(){UInteger_Info();}; Segment_Tracks_TrackEntry_SeekPreRoll()178 void Segment_Tracks_TrackEntry_SeekPreRoll(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackTranslate()179 void Segment_Tracks_TrackEntry_TrackTranslate(){}; Segment_Tracks_TrackEntry_TrackTranslate_TrackTranslateEditionUID()180 void Segment_Tracks_TrackEntry_TrackTranslate_TrackTranslateEditionUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackTranslate_TrackTranslateCodec()181 void Segment_Tracks_TrackEntry_TrackTranslate_TrackTranslateCodec(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackTranslate_TrackTranslateTrackID()182 void Segment_Tracks_TrackEntry_TrackTranslate_TrackTranslateTrackID(){Skip_XX(Element_Size, "Data");}; 183 void Segment_Tracks_TrackEntry_Video(); Segment_Tracks_TrackEntry_Video_FlagInterlaced()184 void Segment_Tracks_TrackEntry_Video_FlagInterlaced(){UInteger_Info();}; 185 void Segment_Tracks_TrackEntry_Video_FieldOrder(); 186 void Segment_Tracks_TrackEntry_Video_StereoMode(); Segment_Tracks_TrackEntry_Video_AlphaMode()187 void Segment_Tracks_TrackEntry_Video_AlphaMode(){UInteger_Info();}; 188 void Segment_Tracks_TrackEntry_Video_OldStereoMode(); 189 void Segment_Tracks_TrackEntry_Video_PixelWidth(); 190 void Segment_Tracks_TrackEntry_Video_PixelHeight(); 191 void Segment_Tracks_TrackEntry_Video_PixelCropBottom(); 192 void Segment_Tracks_TrackEntry_Video_PixelCropTop(); 193 void Segment_Tracks_TrackEntry_Video_PixelCropLeft(); 194 void Segment_Tracks_TrackEntry_Video_PixelCropRight(); 195 void Segment_Tracks_TrackEntry_Video_DisplayWidth(); 196 void Segment_Tracks_TrackEntry_Video_DisplayHeight(); Segment_Tracks_TrackEntry_Video_DisplayUnit()197 void Segment_Tracks_TrackEntry_Video_DisplayUnit(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_AspectRatioType()198 void Segment_Tracks_TrackEntry_Video_AspectRatioType(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_ColourSpace()199 void Segment_Tracks_TrackEntry_Video_ColourSpace(){Skip_XX(Element_Size, "Data");}; Segment_Tracks_TrackEntry_Video_GammaValue()200 void Segment_Tracks_TrackEntry_Video_GammaValue(){Float_Info();}; 201 void Segment_Tracks_TrackEntry_Video_FrameRate(); Segment_Tracks_TrackEntry_Video_Colour()202 void Segment_Tracks_TrackEntry_Video_Colour(){}; 203 void Segment_Tracks_TrackEntry_Video_Colour_MatrixCoefficients(); 204 void Segment_Tracks_TrackEntry_Video_Colour_BitsPerChannel(); Segment_Tracks_TrackEntry_Video_Colour_ChromaSubsamplingHorz()205 void Segment_Tracks_TrackEntry_Video_Colour_ChromaSubsamplingHorz(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_Colour_ChromaSubsamplingVert()206 void Segment_Tracks_TrackEntry_Video_Colour_ChromaSubsamplingVert(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_Colour_CbSubsamplingHorz()207 void Segment_Tracks_TrackEntry_Video_Colour_CbSubsamplingHorz(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_Colour_CbSubsamplingVert()208 void Segment_Tracks_TrackEntry_Video_Colour_CbSubsamplingVert(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_Colour_ChromaSitingHorz()209 void Segment_Tracks_TrackEntry_Video_Colour_ChromaSitingHorz(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_Colour_ChromaSitingVert()210 void Segment_Tracks_TrackEntry_Video_Colour_ChromaSitingVert(){UInteger_Info();}; 211 void Segment_Tracks_TrackEntry_Video_Colour_Range(); 212 void Segment_Tracks_TrackEntry_Video_Colour_TransferCharacteristics(); 213 void Segment_Tracks_TrackEntry_Video_Colour_Primaries(); 214 void Segment_Tracks_TrackEntry_Video_Colour_MaxCLL(); 215 void Segment_Tracks_TrackEntry_Video_Colour_MaxFALL(); Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata()216 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata(){}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryRChromaticityX()217 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryRChromaticityX() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(2*2 );}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryRChromaticityY()218 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryRChromaticityY() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(2*2+1);}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryGChromaticityX()219 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryGChromaticityX() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(0*2 );}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryGChromaticityY()220 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryGChromaticityY() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(0*2+1);}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryBChromaticityX()221 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryBChromaticityX() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(1*2 );}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryBChromaticityY()222 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_PrimaryBChromaticityY() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(1*2+1);}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_WhitePointChromaticityX()223 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_WhitePointChromaticityX() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(3*2 );}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_WhitePointChromaticityY()224 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_WhitePointChromaticityY() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(3*2+1);}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_LuminanceMax()225 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_LuminanceMax() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Luminance(1);}; Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_LuminanceMin()226 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_LuminanceMin() {Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Luminance(0);}; Segment_Tracks_TrackEntry_Video_Projection()227 void Segment_Tracks_TrackEntry_Video_Projection(){}; Segment_Tracks_TrackEntry_Video_Projection_ProjectionType()228 void Segment_Tracks_TrackEntry_Video_Projection_ProjectionType(){UInteger_Info();}; Segment_Tracks_TrackEntry_Video_Projection_ProjectionPrivate()229 void Segment_Tracks_TrackEntry_Video_Projection_ProjectionPrivate(){Skip_XX(Element_Size, "Data");}; Segment_Tracks_TrackEntry_Video_Projection_ProjectionPoseYaw()230 void Segment_Tracks_TrackEntry_Video_Projection_ProjectionPoseYaw(){Float_Info();}; Segment_Tracks_TrackEntry_Video_Projection_ProjectionPosePitch()231 void Segment_Tracks_TrackEntry_Video_Projection_ProjectionPosePitch(){Float_Info();}; Segment_Tracks_TrackEntry_Video_Projection_ProjectionPoseRoll()232 void Segment_Tracks_TrackEntry_Video_Projection_ProjectionPoseRoll(){Float_Info();}; 233 void Segment_Tracks_TrackEntry_Audio(); 234 void Segment_Tracks_TrackEntry_Audio_SamplingFrequency(); 235 void Segment_Tracks_TrackEntry_Audio_OutputSamplingFrequency(); 236 void Segment_Tracks_TrackEntry_Audio_Channels(); Segment_Tracks_TrackEntry_Audio_ChannelPositions()237 void Segment_Tracks_TrackEntry_Audio_ChannelPositions(){Skip_XX(Element_Size, "Data");}; 238 void Segment_Tracks_TrackEntry_Audio_BitDepth(); Segment_Tracks_TrackEntry_TrackOperation()239 void Segment_Tracks_TrackEntry_TrackOperation(){}; Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes()240 void Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes(){}; Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes_TrackPlane()241 void Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes_TrackPlane(){}; Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes_TrackPlane_TrackPlaneUID()242 void Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes_TrackPlane_TrackPlaneUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes_TrackPlane_TrackPlaneType()243 void Segment_Tracks_TrackEntry_TrackOperation_TrackCombinePlanes_TrackPlane_TrackPlaneType(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrackOperation_TrackJoinBlocks()244 void Segment_Tracks_TrackEntry_TrackOperation_TrackJoinBlocks(){}; Segment_Tracks_TrackEntry_TrackOperation_TrackJoinBlocks_TrackJoinUID()245 void Segment_Tracks_TrackEntry_TrackOperation_TrackJoinBlocks_TrackJoinUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrickTrackUID()246 void Segment_Tracks_TrackEntry_TrickTrackUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrickTrackSegmentUID()247 void Segment_Tracks_TrackEntry_TrickTrackSegmentUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrickTrackFlag()248 void Segment_Tracks_TrackEntry_TrickTrackFlag(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrickMasterTrackUID()249 void Segment_Tracks_TrackEntry_TrickMasterTrackUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_TrickMasterTrackSegmentUID()250 void Segment_Tracks_TrackEntry_TrickMasterTrackSegmentUID(){UInteger_Info();}; Segment_Tracks_TrackEntry_BlockAdditionMapping()251 void Segment_Tracks_TrackEntry_BlockAdditionMapping(){}; Segment_Tracks_TrackEntry_BlockAdditionMapping_BlockAddIDName()252 void Segment_Tracks_TrackEntry_BlockAdditionMapping_BlockAddIDName(){UTF8_Info();}; 253 void Segment_Tracks_TrackEntry_BlockAdditionMapping_BlockAddIDType(); 254 void Segment_Tracks_TrackEntry_BlockAdditionMapping_BlockAddIDExtraData(); Segment_Tracks_TrackEntry_BlockAdditionMapping_BlockAddIDValue()255 void Segment_Tracks_TrackEntry_BlockAdditionMapping_BlockAddIDValue(){UInteger_Info();}; Segment_Tracks_TrackEntry_ContentEncodings()256 void Segment_Tracks_TrackEntry_ContentEncodings(){}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding()257 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding(){}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncodingOrder()258 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncodingOrder(){UInteger_Info();}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncodingScope()259 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncodingScope(){UInteger_Info();}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncodingType()260 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncodingType(){UInteger_Info();}; 261 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentCompression(); 262 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentCompression_ContentCompAlgo(); 263 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentCompression_ContentCompSettings(); Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption()264 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption(){}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentEncAlgo()265 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentEncAlgo(){UInteger_Info();}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentEncKeyID()266 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentEncKeyID(){Skip_XX(Element_Size, "Data");}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSignature()267 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSignature(){Skip_XX(Element_Size, "Data");}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSigKeyID()268 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSigKeyID(){Skip_XX(Element_Size, "Data");}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSigAlgo()269 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSigAlgo(){UInteger_Info();}; Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSigHashAlgo()270 void Segment_Tracks_TrackEntry_ContentEncodings_ContentEncoding_ContentEncryption_ContentSigHashAlgo(){UInteger_Info();}; 271 void Segment_Cues(); 272 void Segment_Cues_CuePoint(); Segment_Cues_CuePoint_CueTime()273 void Segment_Cues_CuePoint_CueTime(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions()274 void Segment_Cues_CuePoint_CueTrackPositions(){}; Segment_Cues_CuePoint_CueTrackPositions_CueTrack()275 void Segment_Cues_CuePoint_CueTrackPositions_CueTrack(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueClusterPosition()276 void Segment_Cues_CuePoint_CueTrackPositions_CueClusterPosition(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueRelativePosition()277 void Segment_Cues_CuePoint_CueTrackPositions_CueRelativePosition(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueDuration()278 void Segment_Cues_CuePoint_CueTrackPositions_CueDuration(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueBlockNumber()279 void Segment_Cues_CuePoint_CueTrackPositions_CueBlockNumber(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueCodecState()280 void Segment_Cues_CuePoint_CueTrackPositions_CueCodecState(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueReference()281 void Segment_Cues_CuePoint_CueTrackPositions_CueReference(){}; Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefTime()282 void Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefTime(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefCluster()283 void Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefCluster(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefNumber()284 void Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefNumber(){UInteger_Info();}; Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefCodecState()285 void Segment_Cues_CuePoint_CueTrackPositions_CueReference_CueRefCodecState(){UInteger_Info();}; Segment_Attachments()286 void Segment_Attachments(){}; 287 void Segment_Attachments_AttachedFile(); 288 void Segment_Attachments_AttachedFile_FileDescription(); 289 void Segment_Attachments_AttachedFile_FileName(); 290 void Segment_Attachments_AttachedFile_FileMimeType(); 291 void Segment_Attachments_AttachedFile_FileData(); Segment_Attachments_AttachedFile_FileUID()292 void Segment_Attachments_AttachedFile_FileUID(){UInteger_Info();}; Segment_Attachments_AttachedFile_FileReferral()293 void Segment_Attachments_AttachedFile_FileReferral(){Skip_XX(Element_Size, "Data");}; Segment_Attachments_AttachedFile_FileUsedStartTime()294 void Segment_Attachments_AttachedFile_FileUsedStartTime(){UInteger_Info();}; Segment_Attachments_AttachedFile_FileUsedEndTime()295 void Segment_Attachments_AttachedFile_FileUsedEndTime(){UInteger_Info();}; Segment_Chapters()296 void Segment_Chapters(){}; 297 void Segment_Chapters_EditionEntry(); Segment_Chapters_EditionEntry_EditionUID()298 void Segment_Chapters_EditionEntry_EditionUID(){UInteger_Info();}; Segment_Chapters_EditionEntry_EditionFlagHidden()299 void Segment_Chapters_EditionEntry_EditionFlagHidden(){UInteger_Info();}; Segment_Chapters_EditionEntry_EditionFlagDefault()300 void Segment_Chapters_EditionEntry_EditionFlagDefault(){UInteger_Info();}; Segment_Chapters_EditionEntry_EditionFlagOrdered()301 void Segment_Chapters_EditionEntry_EditionFlagOrdered(){UInteger_Info();}; 302 void Segment_Chapters_EditionEntry_ChapterAtom(); Segment_Chapters_EditionEntry_ChapterAtom_ChapterUID()303 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterUID(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterStringUID()304 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterStringUID(){UTF8_Info();}; 305 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterTimeStart(); Segment_Chapters_EditionEntry_ChapterAtom_ChapterTimeEnd()306 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterTimeEnd(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterFlagHidden()307 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterFlagHidden(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterFlagEnabled()308 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterFlagEnabled(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterSegmentUID()309 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterSegmentUID(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterSegmentEditionUID()310 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterSegmentEditionUID(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterPhysicalEquiv()311 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterPhysicalEquiv(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterTrack()312 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterTrack(){}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterTrack_ChapterTrackNumber()313 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterTrack_ChapterTrackNumber(){UInteger_Info();}; 314 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay(); 315 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay_ChapString(); 316 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay_ChapLanguage(); Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay_ChapLanguageIETF()317 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay_ChapLanguageIETF(){String_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay_ChapCountry()318 void Segment_Chapters_EditionEntry_ChapterAtom_ChapterDisplay_ChapCountry(){String_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess()319 void Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess(){}; Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCodecID()320 void Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCodecID(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessPrivate()321 void Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessPrivate(){Skip_XX(Element_Size, "Data");}; Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCommand()322 void Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCommand(){}; Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCommand_ChapProcessTime()323 void Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCommand_ChapProcessTime(){UInteger_Info();}; Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCommand_ChapProcessData()324 void Segment_Chapters_EditionEntry_ChapterAtom_ChapProcess_ChapProcessCommand_ChapProcessData(){Skip_XX(Element_Size, "Data");}; 325 void Segment_Tags(); 326 void Segment_Tags_Tag(); Segment_Tags_Tag_Targets()327 void Segment_Tags_Tag_Targets(){}; Segment_Tags_Tag_Targets_TargetTypeValue()328 void Segment_Tags_Tag_Targets_TargetTypeValue(){UInteger_Info();}; Segment_Tags_Tag_Targets_TargetType()329 void Segment_Tags_Tag_Targets_TargetType(){String_Info();}; 330 void Segment_Tags_Tag_Targets_TagTrackUID(); Segment_Tags_Tag_Targets_TagEditionUID()331 void Segment_Tags_Tag_Targets_TagEditionUID(){UInteger_Info();}; Segment_Tags_Tag_Targets_TagChapterUID()332 void Segment_Tags_Tag_Targets_TagChapterUID(){UInteger_Info();}; Segment_Tags_Tag_Targets_TagAttachmentUID()333 void Segment_Tags_Tag_Targets_TagAttachmentUID(){UInteger_Info();}; Segment_Tags_Tag_SimpleTag()334 void Segment_Tags_Tag_SimpleTag(){}; 335 void Segment_Tags_Tag_SimpleTag_TagName(); 336 void Segment_Tags_Tag_SimpleTag_TagLanguage(); Segment_Tags_Tag_SimpleTag_TagLanguageIETF()337 void Segment_Tags_Tag_SimpleTag_TagLanguageIETF(){String_Info();}; Segment_Tags_Tag_SimpleTag_TagDefault()338 void Segment_Tags_Tag_SimpleTag_TagDefault(){UInteger_Info();}; 339 void Segment_Tags_Tag_SimpleTag_TagString(); Segment_Tags_Tag_SimpleTag_TagBinary()340 void Segment_Tags_Tag_SimpleTag_TagBinary(){Skip_XX(Element_Size, "Data");}; 341 342 struct stream 343 { 344 std::vector<int64u> TimeCodes; 345 int64u TimeCode_Start; 346 int64u TrackUID; 347 File__Analyze* Parser; 348 stream_t StreamKind; 349 size_t StreamPos; 350 size_t PacketCount; 351 int32u AvgBytesPerSec; //Only used by x_MS/* codecIDs 352 float32 DisplayAspectRatio; 353 float64 FrameRate; 354 bool Searching_Payload; 355 bool Searching_TimeStamps; 356 bool Searching_TimeStamp_Start; 357 bool Default; 358 bool Forced; 359 int64u ContentCompAlgo; 360 size_t ContentCompSettings_Buffer_Size; 361 int8u* ContentCompSettings_Buffer; 362 std::map<std::string, Ztring> Infos; 363 int64u TrackDefaultDuration; 364 std::map<int64u, int64u> Segment_Cluster_BlockGroup_BlockDuration_Counts; 365 int64u PixelCropBottom; 366 int64u PixelCropLeft; 367 int64u PixelCropRight; 368 int64u PixelCropTop; 369 mastering_metadata_2086 MasteringMetadata; 370 #if MEDIAINFO_TRACE 371 size_t Trace_Segment_Cluster_Block_Count; 372 #endif // MEDIAINFO_TRACE 373 streamstream374 stream() 375 { 376 TimeCode_Start=(int64u)-1; 377 TrackUID=(int64u)-1; 378 Parser=NULL; 379 StreamKind=Stream_Max; 380 StreamPos=0; 381 PacketCount=0; 382 AvgBytesPerSec=0; 383 DisplayAspectRatio=0; 384 FrameRate=0; 385 Searching_Payload=true; 386 Searching_TimeStamps=false; 387 Searching_TimeStamp_Start=false; 388 Default=true; 389 Forced=false; 390 ContentCompAlgo=(int32u)-1; 391 ContentCompSettings_Buffer_Size=0; 392 ContentCompSettings_Buffer=NULL; 393 TrackDefaultDuration=0; 394 PixelCropBottom=0; 395 PixelCropLeft=0; 396 PixelCropRight=0; 397 PixelCropTop=0; 398 memset(&MasteringMetadata, 0xFF, sizeof(MasteringMetadata)); 399 #if MEDIAINFO_TRACE 400 Trace_Segment_Cluster_Block_Count=0; 401 #endif // MEDIAINFO_TRACE 402 } 403 ~streamstream404 ~stream() 405 { 406 delete Parser; //Parser=NULL; 407 delete[] ContentCompSettings_Buffer; //ContentCompSettings_Buffer=NULL; 408 } 409 }; 410 std::map<int64u, stream> Stream; 411 size_t Stream_Count; 412 413 //Data 414 int64u UInteger_Get(); 415 int128u UInteger16_Get(); 416 void UInteger_Info(); 417 418 float64 Float_Get(); 419 void Float_Info(); 420 421 Ztring UTF8_Get(); 422 void UTF8_Info(); 423 424 Ztring String_Get(); 425 void String_Info(); 426 427 //Temp - TrackEntry 428 int8u* CodecPrivate; 429 size_t CodecPrivate_Size; 430 void CodecPrivate_Manage(); 431 void Audio_Manage(); 432 Ztring CodecID; 433 infocodecid_format_t InfoCodecID_Format_Type; 434 void CodecID_Manage(); 435 int64u TrackType; 436 int64u AudioBitDepth; 437 438 //Temp 439 int8u InvalidByteMax; 440 int64u Format_Version; 441 int64u TimecodeScale; 442 float64 Duration; 443 int64u TrackNumber; 444 int64u TrackVideoDisplayWidth; 445 int64u TrackVideoDisplayHeight; 446 int32u AvgBytesPerSec; 447 int64u Segment_Cluster_TimeCode_Value; 448 size_t Segment_Info_Count; 449 size_t Segment_Tracks_Count; 450 size_t Segment_Cluster_Count; 451 typedef std::map<Ztring, Ztring> tagspertrack; 452 typedef std::map<int64u, tagspertrack> tags; 453 tags Segment_Tags_Tag_Items; 454 int64u Segment_Tags_Tag_Targets_TagTrackUID_Value; 455 bool CurrentAttachmentIsCover; 456 bool CoverIsSetFromAttachment; 457 string AttachedFile_FileName; 458 string AttachedFile_FileMimeType; 459 string AttachedFile_FileDescription; 460 int64u BlockAddIDType; 461 struct crc32 462 { 463 int64u Pos; 464 int64u From; 465 int64u UpTo; 466 int32u Computed; 467 int32u Expected; 468 }; 469 std::vector<crc32> CRC32Compute; 470 int64u CRC32Compute_SkipUpTo; 471 472 //Chapters 473 struct chapterdisplay 474 { 475 Ztring ChapLanguage; 476 Ztring ChapString; 477 }; 478 struct chapteratom 479 { 480 int64u ChapterTimeStart; 481 std::vector<chapterdisplay> ChapterDisplays; 482 chapteratomchapteratom483 chapteratom() 484 { 485 ChapterTimeStart=(int64u)-1; 486 } 487 }; 488 struct editionentry 489 { 490 std::vector<chapteratom> ChapterAtoms; 491 }; 492 std::vector<editionentry> EditionEntries; 493 size_t EditionEntries_Pos; 494 size_t ChapterAtoms_Pos; 495 size_t ChapterDisplays_Pos; 496 int64u Segment_Offset_Begin; 497 int64u Segment_Offset_End; 498 int64u IsParsingSegmentTrack_SeekBackTo; 499 int64u SegmentTrack_Offset_End; 500 struct seek 501 { 502 int64u SeekID; 503 int64u SeekPosition; 504 seekseek505 seek() 506 : SeekID(0) 507 , SeekPosition(0) 508 {} 509 510 bool operator < (const seek &s) const 511 { 512 return SeekPosition < s.SeekPosition; 513 } 514 }; 515 std::vector<seek> Segment_Seeks; 516 size_t Segment_Seeks_Pos; 517 std::vector<Ztring> Segment_Tag_SimpleTag_TagNames; 518 int64u Segment_Cluster_BlockGroup_BlockDuration_Value; 519 int64u Segment_Cluster_BlockGroup_BlockDuration_TrackNumber; 520 std::vector<int64u> Laces; 521 size_t Laces_Pos; 522 #if MEDIAINFO_DEMUX 523 int64u Demux_EventWasSent; 524 #endif //MEDIAINFO_DEMUX 525 526 //RAWcooked data 527 struct rawcookedtrack 528 { 529 struct mask 530 { 531 int8u* Buffer; 532 size_t Size; 533 534 //mask(); //Init done in rawcookedtrack() in 1 shot ~maskrawcookedtrack::mask535 ~mask() 536 { 537 delete[] Buffer; 538 } 539 }; 540 int64u FramePos; 541 mask MaskBaseFileName; 542 mask MaskBaseBeforeData; 543 rawcookedtrackrawcookedtrack544 rawcookedtrack() 545 { 546 memset(this, 0x00, sizeof(rawcookedtrack)); 547 } 548 }; 549 rawcookedtrack RawcookedTrack_Data; 550 const int8u* Rawcooked_Compressed_Save_Buffer; 551 size_t Rawcooked_Compressed_Save_Buffer_Offset; 552 int64u Rawcooked_Compressed_Save_Element_Offset; 553 int64u Rawcooked_Compressed_Save_Element_Size; 554 bool Trace_Activated_Save; 555 bool Rawcooked_Compressed_Start(rawcookedtrack::mask* Mask=NULL, bool UseMask=false); 556 void Rawcooked_Compressed_End(rawcookedtrack::mask* Mask=NULL, bool UseMask=false); 557 558 //Hints 559 size_t* File_Buffer_Size_Hint_Pointer; 560 561 //Helpers 562 void Segment_Tracks_TrackEntry_CodecPrivate__Parse(); 563 void Segment_Tracks_TrackEntry_CodecPrivate_auds(); 564 void Segment_Tracks_TrackEntry_CodecPrivate_auds_ExtensibleWave(int16u BitsPerSample); 565 void Segment_Tracks_TrackEntry_CodecPrivate_vids(); 566 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Primary(int8u i); 567 void Segment_Tracks_TrackEntry_Video_Colour_MasteringMetadata_Luminance(int8u i); 568 void JumpTo(int64u GoTo); 569 void TestMultipleInstances(size_t* Instances=NULL); 570 void CRC32_Check(); 571 #if MEDIAINFO_TRACE 572 bool CRC32_Check_In_Node(const std::string& ToSearchInInfo, const std::string& info, element_details::Element_Node *node); 573 size_t Trace_Segment_Cluster_Count; 574 size_t Trace_Segment_Cues_CuePoint_Count; 575 size_t Trace_Segment_SeekHead_Seek_Count; 576 #endif // MEDIAINFO_TRACE 577 }; 578 579 } //NameSpace 580 581 #endif 582 583