3 * Copyright 2012, 2013 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
35 /*--- DirectShow Reference - DirectShow Structures - AM_SAMPLE2_PROPERTIES Structure */
36 #define AM_VIDEO_FLAG_FIELD_MASK 0x0003
37 #define AM_VIDEO_FLAG_INTERLEAVED_FRAME 0x0000
38 #define AM_VIDEO_FLAG_FIELD1 0x0001
39 #define AM_VIDEO_FLAG_FIELD2 0x0002
40 #define AM_VIDEO_FLAG_FIELD1FIRST 0x0004
41 #define AM_VIDEO_FLAG_WEAVE 0x0008
42 #define AM_VIDEO_FLAG_REPEAT_FIELD 0x0040
43 /*--- DirectShow Reference - DirectShow Enumerated Types */
45 AM_MPEG2Level_Low = 1,
47 AM_MPEG2Level_High1440,
50 enum AM_MPEG2Profile {
51 AM_MPEG2Profile_Simple = 1,
53 AM_MPEG2Profile_SNRScalable,
54 AM_MPEG2Profile_SpatiallyScalable,
58 AM_RATE_ChangeRate = 1,
59 AM_RATE_FullDataRateMax = 2,
60 AM_RATE_ReverseDecode = 3,
61 AM_RATE_DecoderPosition = 4,
62 AM_RATE_DecoderVersion = 5
63 } AM_PROPERTY_DVD_RATE_CHANGE;
64 /*--- DirectShow Reference - DirectShow Structures */
65 typedef struct tagVIDEOINFOHEADER2 {
70 REFERENCE_TIME AvgTimePerFrame;
71 DWORD dwInterlaceFlags;
72 DWORD dwCopyProtectFlags;
73 DWORD dwPictAspectRatioX;
74 DWORD dwPictAspectRatioY;
80 BITMAPINFOHEADER bmiHeader;
82 #define AMINTERLACE_IsInterlaced 0x00000001
83 #define AMINTERLACE_1FieldPerSample 0x00000002
84 #define AMINTERLACE_Field1First 0x00000004
85 #define AMINTERLACE_FieldPatField1Only 0x00000000
86 #define AMINTERLACE_FieldPatField2Only 0x00000010
87 #define AMINTERLACE_FieldPatBothRegular 0x00000020
88 #define AMINTERLACE_FieldPatBothIrregular 0x00000030
89 #define AMINTERLACE_DisplayModeBobOnly 0x00000000
90 #define AMINTERLACE_DisplayModeWeaveOnly 0x00000040
91 #define AMINTERLACE_DisplayModeBobOrWeave 0x00000080
92 #define AMINTERLACE_FieldPatternMask 0x00000030
93 #define AMINTERLACE_DisplayModeMask 0x000000C0
94 #define AMCONTROL_USED 0x00000001
95 #define AMCONTROL_PAD_TO_4x3 0x00000002
96 #define AMCONTROL_PAD_TO_16x9 0x00000004
97 #define AMCONTROL_COLORINFO_PRESENT 0x00000008
98 typedef struct tagMPEG2VIDEOINFO {
100 DWORD dwStartTimeCode;
101 DWORD cbSequenceHeader;
105 DWORD dwSequenceHeader[1];
107 #define AMMPEG2_DoPanScan 0x00000001
108 #define AMMPEG2_DVDLine21Field1 0x00000002
109 #define AMMPEG2_DVDLine21Field2 0x00000004
110 #define AMMPEG2_SourceIsLetterboxed 0x00000008
111 #define AMMPEG2_FilmCameraMode 0x00000010
112 #define AMMPEG2_LetterboxAnalogOut 0x00000020
113 #define AMMPEG2_DSS_UserData 0x00000040
114 #define AMMPEG2_DVB_UserData 0x00000080
115 #define AMMPEG2_27MhzTimebase 0x00000100
116 #define AMMPEG2_WidescreenAnalogOut 0x00000200