blob: b0dbf3025ab73a610a8ef3a7ffe688fd2ade5f7a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
/* Copyright (c) MediaArea.net SARL. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license that can
* be found in the License.html file in the root of the source tree.
*/
//---------------------------------------------------------------------------
#ifndef MediaInfo_File_WmH
#define MediaInfo_File_WmH
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include "MediaInfo/File__Analyze.h"
//---------------------------------------------------------------------------
namespace MediaInfoLib
{
//***************************************************************************
// Class File_Wm
//***************************************************************************
class File_Wm : public File__Analyze
{
public :
File_Wm();
protected :
//Streams management
void Streams_Finish();
private :
//Buffer
void Header_Parse();
void Data_Parse();
//Elements
void Header();
void Header_FileProperties();
void Header_StreamProperties();
void Header_StreamProperties_Audio();
void Header_StreamProperties_Audio_WMA();
void Header_StreamProperties_Audio_AMR();
void Header_StreamProperties_Video();
void Header_StreamProperties_JFIF();
void Header_StreamProperties_DegradableJPEG();
void Header_StreamProperties_Binary();
void Header_HeaderExtension();
void Header_HeaderExtension_ExtendedStreamProperties();
void Header_HeaderExtension_AdvancedMutualExclusion();
void Header_HeaderExtension_GroupMutualExclusion();
void Header_HeaderExtension_StreamPrioritization();
void Header_HeaderExtension_BandwidthSharing();
void Header_HeaderExtension_LanguageList();
void Header_HeaderExtension_Metadata();
void Header_HeaderExtension_MetadataLibrary();
void Header_HeaderExtension_IndexParameters();
void Header_HeaderExtension_MediaIndexParameters();
void Header_HeaderExtension_TimecodeIndexParameters();
void Header_HeaderExtension_Compatibility();
void Header_HeaderExtension_AdvancedContentEncryption();
void Header_HeaderExtension_IndexPlaceholder();
void Header_CodecList();
void Header_ScriptCommand();
void Header_Marker();
void Header_BitRateMutualExclusion();
void Header_ErrorCorrection();
void Header_ContentDescription();
void Header_ExtendedContentDescription();
void Header_ExtendedContentDescription_ASFLeakyBucketPairs(int16u Value_Length);
void Header_StreamBitRate();
void Header_ContentBranding();
void Header_ContentEncryption();
void Header_ExtendedContentEncryption();
void Header_DigitalSignature();
void Header_Padding();
void Data();
void Data_Packet();
void Data_Packet_ReplicatedData(int32u Size);
void Data_Packet_ReplicatedData_TimeStamp();
void SimpleIndex();
void Index();
void MediaIndex();
void TimecodeIndex();
//Data
struct stream
{
struct payload_extension_system
{
int128u ID;
int16u Size;
};
File__Analyze* Parser;
File__Analyze* Parser2;
File__Analyze* Parser3;
stream_t StreamKind;
size_t StreamPos;
size_t PacketCount;
int64u AverageTimePerFrame;
int32u AverageBitRate;
int16u LanguageID;
std::map<std::string, ZenLib::Ztring> Info;
bool IsCreated; //if Stream_Prepare() is done
bool SearchingPayload;
int32u PresentationTime_Old;
int32u PresentationTime_Count;
std::map<int32u, int32u> PresentationTime_Deltas;
std::vector<payload_extension_system> Payload_Extension_Systems;
int64u TimeCode_First;
stream()
{
Parser=NULL;
Parser2=NULL;
Parser3=NULL;
StreamKind=Stream_Max;
StreamPos=0;
PacketCount=0;
AverageTimePerFrame=0;
AverageBitRate=0;
LanguageID=(int16u)-1;
IsCreated=false;
SearchingPayload=false;
PresentationTime_Old=0;
PresentationTime_Count=0;
TimeCode_First=(int64u)-1;
}
~stream()
{
delete Parser; //Parser=NULL;
delete Parser2; //Parser2=NULL
delete Parser3; //Parser3=NULL
}
};
struct codecinfo
{
int16u Type;
Ztring Info;
};
std::map<int16u, stream> Stream;
int16u Stream_Number; //In header: current pos, in Data: Count of enabled parsers
std::vector<ZenLib::Ztring> Languages;
std::vector<codecinfo> CodecInfos;
Ztring Language_ForAll;
int32u Data_Parse_Padding;
int32u MaximumDataPacketSize;
bool Data_Parse_Begin;
bool Data_Parse_MultiplePayloads;
bool Data_Parse_CompressedPayload;
bool IsDvrMs; //Is DVR-Ms format (for finding MPEG Audio)
//From Data headers
size_t Codec_Description_Count;
size_t Packet_Count;
size_t Streams_Count;
int64u Header_ExtendedContentDescription_AspectRatioX;
int64u Header_ExtendedContentDescription_AspectRatioY;
size_t Header_StreamProperties_StreamOrder;
int64u Data_AfterTheDataChunk;
int32u SizeOfMediaObject_BytesAlreadyParsed;
int32u FileProperties_Preroll;
int8u ReplicatedDataLengthType;
int8u OffsetIntoMediaObjectLengthType;
int8u MediaObjectNumberLengthType;
int8u StreamNumberLengthType;
int8u PayloadLengthType;
int8u NumberPayloads;
int8u NumberPayloads_Pos;
bool MultiplePayloadsPresent;
};
} //NameSpace
#endif
|