You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/mxv-container.hexpat
+39-9Lines changed: 39 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,20 @@ enum MXContentType64 : u64 {
52
52
MXJVTL32 = 0x32334C54564A584D, // List of offsets of the respective video and audio chunks.
53
53
};
54
54
55
+
// Color formats.
56
+
enum ColorFormat : u32 {
57
+
ColorFormatZero = 0,
58
+
ColorFormatThree = 3,
59
+
ColorFormatI420 = 0x30323449,
60
+
ColorFormatIYUV = 0x56555949,
61
+
ColorFormatY411 = 0x31313459,
62
+
ColorFormatY422 = 0x32323456,
63
+
ColorFormatYUNV = 0x564e5559,
64
+
ColorFormatYUY2 = 0x32595559,
65
+
ColorFormatYUYV = 0x56595559,
66
+
ColorFormatYV12 = 0x32315659,
67
+
};
68
+
55
69
using Chunk64;
56
70
57
71
struct ChunkMXAFTE {
@@ -122,6 +136,21 @@ struct ChunkMXJVFT64 {
122
136
MXJVFT64Entries += parent.Length/8;
123
137
};
124
138
139
+
bitfield ChunkMXJVH264Flags {
140
+
A : 1;
141
+
B : 1;
142
+
C : 1; // Is set in all test files i have.
143
+
D : 1; // Guess: Something about interlacing. I haven't seen a file with this flag set, but the software queries this flag with code that's related to (de)interlacing.
144
+
E : 1;
145
+
F : 1;
146
+
G : 1;
147
+
H : 1;
148
+
I : 1;
149
+
J : 1;
150
+
K : 1;
151
+
padding : 21;
152
+
};
153
+
125
154
struct ChunkMXJVH264 {
126
155
u32; // Seems to be always 112, may be the size of this struct.
127
156
u32; // Guess: May be some sort of version. (File or encoding software)
@@ -133,15 +162,16 @@ struct ChunkMXJVH264 {
133
162
double Framerate; // Number of frames per second. For interlaced video it will store the number of full frames per second. I.e. PAL has 50 fields/s and therefore 25 full frames/s.
134
163
u32 FrameWidth;
135
164
u32 FrameHeight;
136
-
u32 FrameWidth2; // Maybe needed when the video is anamorphic? It's the same as the above width in all my test files.
137
-
u32 FrameHeight2; // Maybe needed when the video is anamorphic? It's the same as the above height in all my test files.
165
+
u32 FrameWidth2; // Maybe needed when the video is anamorphic? It's the same as the above width in all my test files.
166
+
u32 FrameHeight2; // Maybe needed when the video is anamorphic? It's the same as the above height in all my test files.
167
+
ChunkMXJVH264Flags Flags;
168
+
u32 MaxJPEGSize; // The JPEG data size of the largest MXJVVF64 chunk. (The size only includes the JPEG data)
169
+
u64 AudioFrames; // Number of AFTE entries (These point to MXJVAF64 chunks that contain waveform data)
170
+
u64 MaxAudioChunkSize; // The size of the largest MXJVAF64 chunk. (The size includes the chunk identifier and length field and all its data)
171
+
double AspectRatio; // Final image aspect ratio. If this ratio != FrameWidth / FrameHeight the video doesn't have square pixels.
172
+
ColorFormat ColorFormat; // Color format.
138
173
u32;
139
-
u32 MaxJPEGSize; // The JPEG data size of the largest MXJVVF64 chunk. (The size only includes the JPEG data)
140
-
u64 AudioFrames; // Number of AFTE entries (These point to MXJVAF64 chunks that contain waveform data)
141
-
u64 MaxAudioChunkSize; // The size of the largest MXJVAF64 chunk. (The size includes the chunk identifier and length field and all its data)
142
-
double AspectRatio; // Final image aspect ratio. If this ratio != FrameWidth / FrameHeight the video doesn't have square pixels.
143
-
u64; // Guess: This could be audio related stuff.
144
-
u64 AudioSamples; // Total number of audio samples.
174
+
u64 AudioSamples; // Total number of audio samples.
0 commit comments