1 | /*
|
---|
2 | * Copyright (C) 2020 Vijay Kiran Kamuju
|
---|
3 | *
|
---|
4 | * This library is free software; you can redistribute it and/or
|
---|
5 | * modify it under the terms of the GNU Lesser General Public
|
---|
6 | * License as published by the Free Software Foundation; either
|
---|
7 | * version 2.1 of the License, or (at your option) any later version.
|
---|
8 | *
|
---|
9 | * This library is distributed in the hope that it will be useful,
|
---|
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
12 | * Lesser General Public License for more details.
|
---|
13 | *
|
---|
14 | * You should have received a copy of the GNU Lesser General Public
|
---|
15 | * License along with this library; if not, write to the Free Software
|
---|
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
---|
17 | */
|
---|
18 |
|
---|
19 | #if 0
|
---|
20 | pragma makedep install
|
---|
21 | #endif
|
---|
22 |
|
---|
23 | import "unknwn.idl";
|
---|
24 | import "objidl.idl";
|
---|
25 |
|
---|
26 | cpp_quote("#include <ddraw.h>")
|
---|
27 |
|
---|
28 | cpp_quote("#if 0")
|
---|
29 | interface IGraphBuilder;
|
---|
30 | cpp_quote("#endif")
|
---|
31 |
|
---|
32 | typedef enum tagDVD_DOMAIN
|
---|
33 | {
|
---|
34 | DVD_DOMAIN_FirstPlay = 1,
|
---|
35 | DVD_DOMAIN_VideoManagerMenu,
|
---|
36 | DVD_DOMAIN_VideoTitleSetMenu,
|
---|
37 | DVD_DOMAIN_Title,
|
---|
38 | DVD_DOMAIN_Stop
|
---|
39 | } DVD_DOMAIN;
|
---|
40 |
|
---|
41 | typedef enum tagDVD_MENU_ID
|
---|
42 | {
|
---|
43 | DVD_MENU_Title = 2,
|
---|
44 | DVD_MENU_Root = 3,
|
---|
45 | DVD_MENU_Subpicture = 4,
|
---|
46 | DVD_MENU_Audio = 5,
|
---|
47 | DVD_MENU_Angle = 6,
|
---|
48 | DVD_MENU_Chapter = 7
|
---|
49 | } DVD_MENU_ID;
|
---|
50 |
|
---|
51 | typedef enum tagDVD_DISC_SIDE
|
---|
52 | {
|
---|
53 | DVD_SIDE_A = 1,
|
---|
54 | DVD_SIDE_B = 2
|
---|
55 | } DVD_DISC_SIDE;
|
---|
56 |
|
---|
57 | typedef enum tagDVD_PREFERRED_DISPLAY_MODE
|
---|
58 | {
|
---|
59 | DISPLAY_CONTENT_DEFAULT = 0,
|
---|
60 | DISPLAY_16x9 = 1,
|
---|
61 | DISPLAY_4x3_PANSCAN_PREFERRED = 2,
|
---|
62 | DISPLAY_4x3_LETTERBOX_PREFERRED = 3
|
---|
63 | } DVD_PREFERRED_DISPLAY_MODE;
|
---|
64 |
|
---|
65 | typedef WORD DVD_REGISTER;
|
---|
66 | typedef DVD_REGISTER GPRMARRAY[16];
|
---|
67 | typedef DVD_REGISTER SPRMARRAY[24];
|
---|
68 |
|
---|
69 | typedef struct tagDVD_ATR
|
---|
70 | {
|
---|
71 | ULONG ulCAT;
|
---|
72 | BYTE pbATRI[768];
|
---|
73 | } DVD_ATR;
|
---|
74 |
|
---|
75 | typedef BYTE DVD_VideoATR[2];
|
---|
76 | typedef BYTE DVD_AudioATR[8];
|
---|
77 | typedef BYTE DVD_SubpictureATR[6];
|
---|
78 |
|
---|
79 | typedef enum tagDVD_FRAMERATE
|
---|
80 | {
|
---|
81 | DVD_FPS_25 = 1,
|
---|
82 | DVD_FPS_30NonDrop = 3
|
---|
83 | } DVD_FRAMERATE;
|
---|
84 |
|
---|
85 | cpp_quote("typedef struct tagDVD_TIMECODE")
|
---|
86 | cpp_quote("{")
|
---|
87 | cpp_quote(" ULONG Hours1 : 4;")
|
---|
88 | cpp_quote(" ULONG Hours10 : 4;")
|
---|
89 | cpp_quote(" ULONG Minutes1 : 4;")
|
---|
90 | cpp_quote(" ULONG Minutes10 : 4;")
|
---|
91 | cpp_quote(" ULONG Seconds1 : 4;")
|
---|
92 | cpp_quote(" ULONG Seconds10 : 4;")
|
---|
93 | cpp_quote(" ULONG Frames1 : 4;")
|
---|
94 | cpp_quote(" ULONG Frames10 : 2;")
|
---|
95 | cpp_quote(" ULONG FrameRateCode : 2;")
|
---|
96 | cpp_quote("} DVD_TIMECODE;")
|
---|
97 |
|
---|
98 | typedef enum tagDVD_NavCmdType
|
---|
99 | {
|
---|
100 | DVD_NavCmdType_Pre = 1,
|
---|
101 | DVD_NavCmdType_Post = 2,
|
---|
102 | DVD_NavCmdType_Cell = 3,
|
---|
103 | DVD_NavCmdType_Button = 4
|
---|
104 | } DVD_NavCmdType;
|
---|
105 |
|
---|
106 | typedef enum tagDVD_TIMECODE_FLAGS
|
---|
107 | {
|
---|
108 | DVD_TC_FLAG_25fps = 0x00000001,
|
---|
109 | DVD_TC_FLAG_30fps = 0x00000002,
|
---|
110 | DVD_TC_FLAG_DropFrame = 0x00000004,
|
---|
111 | DVD_TC_FLAG_Interpolated = 0x00000008
|
---|
112 | } DVD_TIMECODE_FLAGS;
|
---|
113 |
|
---|
114 | typedef struct tagDVD_HMSF_TIMECODE
|
---|
115 | {
|
---|
116 | BYTE bHours;
|
---|
117 | BYTE bMinutes;
|
---|
118 | BYTE bSeconds;
|
---|
119 | BYTE bFrames;
|
---|
120 | } DVD_HMSF_TIMECODE;
|
---|
121 |
|
---|
122 | typedef struct tagDVD_PLAYBACK_LOCATION2
|
---|
123 | {
|
---|
124 | ULONG TitleNum;
|
---|
125 | ULONG ChapterNum;
|
---|
126 | DVD_HMSF_TIMECODE TimeCode;
|
---|
127 | ULONG TimeCodeFlags;
|
---|
128 | } DVD_PLAYBACK_LOCATION2;
|
---|
129 |
|
---|
130 | typedef struct tagDVD_PLAYBACK_LOCATION
|
---|
131 | {
|
---|
132 | ULONG TitleNum;
|
---|
133 | ULONG ChapterNum;
|
---|
134 | ULONG TimeCode;
|
---|
135 | } DVD_PLAYBACK_LOCATION;
|
---|
136 |
|
---|
137 | typedef DWORD VALID_UOP_SOMTHING_OR_OTHER;
|
---|
138 |
|
---|
139 | typedef enum
|
---|
140 | {
|
---|
141 | UOP_FLAG_Play_Title_Or_AtTime = 0x00000001,
|
---|
142 | UOP_FLAG_Play_Chapter = 0x00000002,
|
---|
143 | UOP_FLAG_Play_Title = 0x00000004,
|
---|
144 | UOP_FLAG_Stop = 0x00000008,
|
---|
145 | UOP_FLAG_ReturnFromSubMenu = 0x00000010,
|
---|
146 | UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020,
|
---|
147 | UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040,
|
---|
148 | UOP_FLAG_PlayNext_Chapter = 0x00000080,
|
---|
149 | UOP_FLAG_Play_Forwards = 0x00000100,
|
---|
150 | UOP_FLAG_Play_Backwards = 0x00000200,
|
---|
151 | UOP_FLAG_ShowMenu_Title = 0x00000400,
|
---|
152 | UOP_FLAG_ShowMenu_Root = 0x00000800,
|
---|
153 | UOP_FLAG_ShowMenu_SubPic = 0x00001000,
|
---|
154 | UOP_FLAG_ShowMenu_Audio = 0x00002000,
|
---|
155 | UOP_FLAG_ShowMenu_Angle = 0x00004000,
|
---|
156 | UOP_FLAG_ShowMenu_Chapter = 0x00008000,
|
---|
157 | UOP_FLAG_Resume = 0x00010000,
|
---|
158 | UOP_FLAG_Select_Or_Activate_Button = 0x00020000,
|
---|
159 | UOP_FLAG_Still_Off = 0x00040000,
|
---|
160 | UOP_FLAG_Pause_On = 0x00080000,
|
---|
161 | UOP_FLAG_Select_Audio_Stream = 0x00100000,
|
---|
162 | UOP_FLAG_Select_SubPic_Stream = 0x00200000,
|
---|
163 | UOP_FLAG_Select_Angle = 0x00400000,
|
---|
164 | UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000,
|
---|
165 | UOP_FLAG_Select_Video_Mode_Preference = 0x01000000
|
---|
166 | } VALID_UOP_FLAG;
|
---|
167 |
|
---|
168 | typedef enum
|
---|
169 | {
|
---|
170 | DVD_CMD_FLAG_None = 0x00000000,
|
---|
171 | DVD_CMD_FLAG_Flush = 0x00000001,
|
---|
172 | DVD_CMD_FLAG_SendEvents = 0x00000002,
|
---|
173 | DVD_CMD_FLAG_Block = 0x00000004,
|
---|
174 | DVD_CMD_FLAG_StartWhenRendered = 0x00000008,
|
---|
175 | DVD_CMD_FLAG_EndAfterRendered = 0x00000010
|
---|
176 | } DVD_CMD_FLAGS;
|
---|
177 |
|
---|
178 | typedef enum
|
---|
179 | {
|
---|
180 | DVD_ResetOnStop = 1,
|
---|
181 | DVD_NotifyParentalLevelChange = 2,
|
---|
182 | DVD_HMSF_TimeCodeEvents = 3,
|
---|
183 | DVD_AudioDuringFFwdRew = 4,
|
---|
184 | DVD_EnableNonblockingAPIs = 5,
|
---|
185 | DVD_CacheSizeInMB = 6,
|
---|
186 | DVD_EnablePortableBookmarks = 7,
|
---|
187 | DVD_EnableExtendedCopyProtectErrors = 8,
|
---|
188 | DVD_NotifyPositionChange = 9,
|
---|
189 | DVD_IncreaseOutputControl = 10,
|
---|
190 | DVD_EnableStreaming = 11,
|
---|
191 | DVD_EnableESOutput = 12,
|
---|
192 | DVD_EnableTitleLength = 13,
|
---|
193 | DVD_DisableStillThrottle = 14,
|
---|
194 | DVD_EnableLoggingEvents = 15,
|
---|
195 | DVD_MaxReadBurstInKB = 16,
|
---|
196 | DVD_ReadBurstPeriodInMS = 17,
|
---|
197 | DVD_RestartDisc = 18,
|
---|
198 | DVD_EnableCC = 19
|
---|
199 | } DVD_OPTION_FLAG;
|
---|
200 |
|
---|
201 | typedef enum
|
---|
202 | {
|
---|
203 | DVD_Relative_Upper = 1,
|
---|
204 | DVD_Relative_Lower = 2,
|
---|
205 | DVD_Relative_Left = 3,
|
---|
206 | DVD_Relative_Right = 4
|
---|
207 | } DVD_RELATIVE_BUTTON;
|
---|
208 |
|
---|
209 | typedef enum tagDVD_PARENTAL_LEVEL
|
---|
210 | {
|
---|
211 | DVD_PARENTAL_LEVEL_8 = 0x8000,
|
---|
212 | DVD_PARENTAL_LEVEL_7 = 0x4000,
|
---|
213 | DVD_PARENTAL_LEVEL_6 = 0x2000,
|
---|
214 | DVD_PARENTAL_LEVEL_5 = 0x1000,
|
---|
215 | DVD_PARENTAL_LEVEL_4 = 0x0800,
|
---|
216 | DVD_PARENTAL_LEVEL_3 = 0x0400,
|
---|
217 | DVD_PARENTAL_LEVEL_2 = 0x0200,
|
---|
218 | DVD_PARENTAL_LEVEL_1 = 0x0100
|
---|
219 | } DVD_PARENTAL_LEVEL;
|
---|
220 |
|
---|
221 | typedef enum tagDVD_AUDIO_LANG_EXT
|
---|
222 | {
|
---|
223 | DVD_AUD_EXT_NotSpecified = 0,
|
---|
224 | DVD_AUD_EXT_Captions = 1,
|
---|
225 | DVD_AUD_EXT_VisuallyImpaired = 2,
|
---|
226 | DVD_AUD_EXT_DirectorComments1 = 3,
|
---|
227 | DVD_AUD_EXT_DirectorComments2 = 4
|
---|
228 | } DVD_AUDIO_LANG_EXT;
|
---|
229 |
|
---|
230 | typedef enum tagDVD_SUBPICTURE_LANG_EXT
|
---|
231 | {
|
---|
232 | DVD_SP_EXT_NotSpecified = 0,
|
---|
233 | DVD_SP_EXT_Caption_Normal = 1,
|
---|
234 | DVD_SP_EXT_Caption_Big = 2,
|
---|
235 | DVD_SP_EXT_Caption_Children = 3,
|
---|
236 | DVD_SP_EXT_CC_Normal = 5,
|
---|
237 | DVD_SP_EXT_CC_Big = 6,
|
---|
238 | DVD_SP_EXT_CC_Children = 7,
|
---|
239 | DVD_SP_EXT_Forced = 9,
|
---|
240 | DVD_SP_EXT_DirectorComments_Normal = 13,
|
---|
241 | DVD_SP_EXT_DirectorComments_Big = 14,
|
---|
242 | DVD_SP_EXT_DirectorComments_Children = 15
|
---|
243 | } DVD_SUBPICTURE_LANG_EXT;
|
---|
244 |
|
---|
245 | typedef enum tagDVD_AUDIO_APPMODE
|
---|
246 | {
|
---|
247 | DVD_AudioMode_None = 0,
|
---|
248 | DVD_AudioMode_Karaoke = 1,
|
---|
249 | DVD_AudioMode_Surround = 2,
|
---|
250 | DVD_AudioMode_Other = 3
|
---|
251 | } DVD_AUDIO_APPMODE;
|
---|
252 |
|
---|
253 | typedef enum tagDVD_AUDIO_FORMAT
|
---|
254 | {
|
---|
255 | DVD_AudioFormat_AC3 = 0,
|
---|
256 | DVD_AudioFormat_MPEG1 = 1,
|
---|
257 | DVD_AudioFormat_MPEG1_DRC = 2,
|
---|
258 | DVD_AudioFormat_MPEG2 = 3,
|
---|
259 | DVD_AudioFormat_MPEG2_DRC = 4,
|
---|
260 | DVD_AudioFormat_LPCM = 5,
|
---|
261 | DVD_AudioFormat_DTS = 6,
|
---|
262 | DVD_AudioFormat_SDDS = 7,
|
---|
263 | DVD_AudioFormat_Other = 8
|
---|
264 | } DVD_AUDIO_FORMAT;
|
---|
265 |
|
---|
266 | typedef enum tagDVD_KARAOKE_DOWNMIX
|
---|
267 | {
|
---|
268 | DVD_Mix_0to0 = 0x0001,
|
---|
269 | DVD_Mix_1to0 = 0x0002,
|
---|
270 | DVD_Mix_2to0 = 0x0004,
|
---|
271 | DVD_Mix_3to0 = 0x0008,
|
---|
272 | DVD_Mix_4to0 = 0x0010,
|
---|
273 | DVD_Mix_Lto0 = 0x0020,
|
---|
274 | DVD_Mix_Rto0 = 0x0040,
|
---|
275 | DVD_Mix_0to1 = 0x0100,
|
---|
276 | DVD_Mix_1to1 = 0x0200,
|
---|
277 | DVD_Mix_2to1 = 0x0400,
|
---|
278 | DVD_Mix_3to1 = 0x0800,
|
---|
279 | DVD_Mix_4to1 = 0x1000,
|
---|
280 | DVD_Mix_Lto1 = 0x2000,
|
---|
281 | DVD_Mix_Rto1 = 0x4000
|
---|
282 | } DVD_KARAOKE_DOWNMIX;
|
---|
283 |
|
---|
284 | typedef enum tagDVD_KARAOKE_CONTENTS
|
---|
285 | {
|
---|
286 | DVD_Karaoke_GuideVocal1 = 0x0001,
|
---|
287 | DVD_Karaoke_GuideVocal2 = 0x0002,
|
---|
288 | DVD_Karaoke_GuideMelody1 = 0x0004,
|
---|
289 | DVD_Karaoke_GuideMelody2 = 0x0008,
|
---|
290 | DVD_Karaoke_GuideMelodyA = 0x0010,
|
---|
291 | DVD_Karaoke_GuideMelodyB = 0x0020,
|
---|
292 | DVD_Karaoke_SoundEffectA = 0x0040,
|
---|
293 | DVD_Karaoke_SoundEffectB = 0x0080
|
---|
294 | } DVD_KARAOKE_CONTENTS;
|
---|
295 |
|
---|
296 | typedef enum tagDVD_KARAOKE_ASSIGNMENT
|
---|
297 | {
|
---|
298 | DVD_Assignment_reserved0 = 0,
|
---|
299 | DVD_Assignment_reserved1 = 1,
|
---|
300 | DVD_Assignment_LR = 2,
|
---|
301 | DVD_Assignment_LRM = 3,
|
---|
302 | DVD_Assignment_LR1 = 4,
|
---|
303 | DVD_Assignment_LRM1 = 5,
|
---|
304 | DVD_Assignment_LR12 = 6,
|
---|
305 | DVD_Assignment_LRM12 = 7
|
---|
306 | } DVD_KARAOKE_ASSIGNMENT;
|
---|
307 |
|
---|
308 | typedef struct tagDVD_MUA_MixingInfo
|
---|
309 | {
|
---|
310 | BOOL fMixTo0;
|
---|
311 | BOOL fMixTo1;
|
---|
312 | BOOL fMix0InPhase;
|
---|
313 | BOOL fMix1InPhase;
|
---|
314 | DWORD dwSpeakerPosition;
|
---|
315 | } DVD_MUA_MixingInfo;
|
---|
316 |
|
---|
317 | typedef struct tagDVD_MUA_Coeff
|
---|
318 | {
|
---|
319 | double log2_alpha;
|
---|
320 | double log2_beta;
|
---|
321 | } DVD_MUA_Coeff;
|
---|
322 |
|
---|
323 | typedef enum tagDVD_VIDEO_COMPRESSION
|
---|
324 | {
|
---|
325 | DVD_VideoCompression_Other = 0,
|
---|
326 | DVD_VideoCompression_MPEG1 = 1,
|
---|
327 | DVD_VideoCompression_MPEG2 = 2
|
---|
328 | } DVD_VIDEO_COMPRESSION;
|
---|
329 |
|
---|
330 | typedef enum tagDVD_SUBPICTURE_TYPE
|
---|
331 | {
|
---|
332 | DVD_SPType_NotSpecified = 0,
|
---|
333 | DVD_SPType_Language = 1,
|
---|
334 | DVD_SPType_Other = 2
|
---|
335 | } DVD_SUBPICTURE_TYPE;
|
---|
336 |
|
---|
337 | typedef enum tagDVD_SUBPICTURE_CODING
|
---|
338 | {
|
---|
339 | DVD_SPCoding_RunLength = 0,
|
---|
340 | DVD_SPCoding_Extended = 1,
|
---|
341 | DVD_SPCoding_Other = 2
|
---|
342 | } DVD_SUBPICTURE_CODING;
|
---|
343 |
|
---|
344 | typedef enum tagDVD_TITLE_APPMODE
|
---|
345 | {
|
---|
346 | DVD_AppMode_Not_Specified = 0,
|
---|
347 | DVD_AppMode_Karaoke = 1,
|
---|
348 | DVD_AppMode_Other = 3
|
---|
349 | } DVD_TITLE_APPMODE;
|
---|
350 |
|
---|
351 | enum DVD_TextStringType
|
---|
352 | {
|
---|
353 | DVD_Struct_Volume = 0x01,
|
---|
354 | DVD_Struct_Title = 0x02,
|
---|
355 | DVD_Struct_ParentalID = 0x03,
|
---|
356 | DVD_Struct_PartOfTitle = 0x04,
|
---|
357 | DVD_Struct_Cell = 0x05,
|
---|
358 | DVD_Stream_Audio = 0x10,
|
---|
359 | DVD_Stream_Subpicture = 0x11,
|
---|
360 | DVD_Stream_Angle = 0x12,
|
---|
361 | DVD_Channel_Audio = 0x20,
|
---|
362 | DVD_General_Name = 0x30,
|
---|
363 | DVD_General_Comments = 0x31,
|
---|
364 | DVD_Title_Series = 0x38,
|
---|
365 | DVD_Title_Movie = 0x39,
|
---|
366 | DVD_Title_Video = 0x3a,
|
---|
367 | DVD_Title_Album = 0x3b,
|
---|
368 | DVD_Title_Song = 0x3c,
|
---|
369 | DVD_Title_Other = 0x3f,
|
---|
370 | DVD_Title_Sub_Series = 0x40,
|
---|
371 | DVD_Title_Sub_Movie = 0x41,
|
---|
372 | DVD_Title_Sub_Video = 0x42,
|
---|
373 | DVD_Title_Sub_Album = 0x43,
|
---|
374 | DVD_Title_Sub_Song = 0x44,
|
---|
375 | DVD_Title_Sub_Other = 0x47,
|
---|
376 | DVD_Title_Orig_Series = 0x48,
|
---|
377 | DVD_Title_Orig_Movie = 0x49,
|
---|
378 | DVD_Title_Orig_Video = 0x4a,
|
---|
379 | DVD_Title_Orig_Album = 0x4b,
|
---|
380 | DVD_Title_Orig_Song = 0x4c,
|
---|
381 | DVD_Title_Orig_Other = 0x4f,
|
---|
382 | DVD_Other_Scene = 0x50,
|
---|
383 | DVD_Other_Cut = 0x51,
|
---|
384 | DVD_Other_Take = 0x52
|
---|
385 | };
|
---|
386 |
|
---|
387 | enum DVD_TextCharSet
|
---|
388 | {
|
---|
389 | DVD_CharSet_Unicode = 0,
|
---|
390 | DVD_CharSet_ISO646 = 1,
|
---|
391 | DVD_CharSet_JIS_Roman_Kanji = 2,
|
---|
392 | DVD_CharSet_ISO8859_1 = 3,
|
---|
393 | DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4
|
---|
394 | };
|
---|
395 |
|
---|
396 | typedef struct tagDVD_AudioAttributes
|
---|
397 | {
|
---|
398 | DVD_AUDIO_APPMODE AppMode;
|
---|
399 | BYTE AppModeData;
|
---|
400 | DVD_AUDIO_FORMAT AudioFormat;
|
---|
401 | LCID Language;
|
---|
402 | DVD_AUDIO_LANG_EXT LanguageExtension;
|
---|
403 | BOOL fHasMultichannelInfo;
|
---|
404 | DWORD dwFrequency;
|
---|
405 | BYTE bQuantization;
|
---|
406 | BYTE bNumberOfChannels;
|
---|
407 | DWORD dwReserved[2];
|
---|
408 | } DVD_AudioAttributes;
|
---|
409 |
|
---|
410 | typedef struct tagDVD_MultichannelAudioAttributes
|
---|
411 | {
|
---|
412 | DVD_MUA_MixingInfo Info[8];
|
---|
413 | DVD_MUA_Coeff Coeff[8];
|
---|
414 | } DVD_MultichannelAudioAttributes;
|
---|
415 |
|
---|
416 | typedef struct tagDVD_VideoAttributes
|
---|
417 | {
|
---|
418 | BOOL fPanscanPermitted;
|
---|
419 | BOOL fLetterboxPermitted;
|
---|
420 | ULONG ulAspectX;
|
---|
421 | ULONG ulAspectY;
|
---|
422 | ULONG ulFrameRate;
|
---|
423 | ULONG ulFrameHeight;
|
---|
424 | DVD_VIDEO_COMPRESSION Compression;
|
---|
425 | BOOL fLine21Field1InGOP;
|
---|
426 | BOOL fLine21Field2InGOP;
|
---|
427 | ULONG ulSourceResolutionX;
|
---|
428 | ULONG ulSourceResolutionY;
|
---|
429 | BOOL fIsSourceLetterboxed;
|
---|
430 | BOOL fIsFilmMode;
|
---|
431 | } DVD_VideoAttributes;
|
---|
432 |
|
---|
433 | typedef struct tagDVD_SubpictureAttributes
|
---|
434 | {
|
---|
435 | DVD_SUBPICTURE_TYPE Type;
|
---|
436 | DVD_SUBPICTURE_CODING CodingMode;
|
---|
437 | LCID Language;
|
---|
438 | DVD_SUBPICTURE_LANG_EXT LanguageExtension;
|
---|
439 | } DVD_SubpictureAttributes;
|
---|
440 |
|
---|
441 | typedef struct tagDVD_KaraokeAttributes
|
---|
442 | {
|
---|
443 | BYTE bVersion;
|
---|
444 | BOOL fMasterOfCeremoniesInGuideVocal1;
|
---|
445 | BOOL fDuet;
|
---|
446 | DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
|
---|
447 | WORD wChannelContents[8];
|
---|
448 | } DVD_KaraokeAttributes;
|
---|
449 |
|
---|
450 | typedef struct tagDVD_TitleMainAttributes
|
---|
451 | {
|
---|
452 | union
|
---|
453 | {
|
---|
454 | DVD_TITLE_APPMODE AppMode;
|
---|
455 | DVD_HMSF_TIMECODE TitleLength;
|
---|
456 | } DUMMYUNIONNAME;
|
---|
457 | DVD_VideoAttributes VideoAttributes;
|
---|
458 | ULONG ulNumberOfAudioStreams;
|
---|
459 | DVD_AudioAttributes AudioAttributes[8];
|
---|
460 | DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
|
---|
461 | ULONG ulNumberOfSubpictureStreams;
|
---|
462 | DVD_SubpictureAttributes SubpictureAttributes[32];
|
---|
463 | } DVD_TitleAttributes;
|
---|
464 |
|
---|
465 | typedef struct tagDVD_MenuAttributes
|
---|
466 | {
|
---|
467 | BOOL fCompatibleRegion[8];
|
---|
468 | DVD_VideoAttributes VideoAttributes;
|
---|
469 | BOOL fAudioPresent;
|
---|
470 | DVD_AudioAttributes AudioAttributes;
|
---|
471 | BOOL fSubpicturePresent;
|
---|
472 | DVD_SubpictureAttributes SubpictureAttributes;
|
---|
473 | } DVD_MenuAttributes;
|
---|
474 |
|
---|
475 | cpp_quote ("#define DVD_TITLE_MENU 0x000")
|
---|
476 | cpp_quote ("#define DVD_STREAM_DATA_VMGM 0x400")
|
---|
477 | cpp_quote ("#define DVD_STREAM_DATA_VTSM 0x401")
|
---|
478 | cpp_quote ("#define DVD_STREAM_DATA_CURRENT 0x800")
|
---|
479 | cpp_quote ("#define DVD_DEFAULT_AUDIO_STREAM 0x00f")
|
---|
480 |
|
---|
481 | cpp_quote ("#define DVD_AUDIO_CAPS_AC3 0x00000001")
|
---|
482 | cpp_quote ("#define DVD_AUDIO_CAPS_MPEG2 0x00000002")
|
---|
483 | cpp_quote ("#define DVD_AUDIO_CAPS_LPCM 0x00000004")
|
---|
484 | cpp_quote ("#define DVD_AUDIO_CAPS_DTS 0x00000008")
|
---|
485 | cpp_quote ("#define DVD_AUDIO_CAPS_SDDS 0x00000010")
|
---|
486 |
|
---|
487 | typedef struct tagDVD_DECODER_CAPS
|
---|
488 | {
|
---|
489 | DWORD dwSize;
|
---|
490 | DWORD dwAudioCaps;
|
---|
491 | double dFwdMaxRateVideo;
|
---|
492 | double dFwdMaxRateAudio;
|
---|
493 | double dFwdMaxRateSP;
|
---|
494 | double dBwdMaxRateVideo;
|
---|
495 | double dBwdMaxRateAudio;
|
---|
496 | double dBwdMaxRateSP;
|
---|
497 | DWORD dwRes1;
|
---|
498 | DWORD dwRes2;
|
---|
499 | DWORD dwRes3;
|
---|
500 | DWORD dwRes4;
|
---|
501 | } DVD_DECODER_CAPS;
|
---|
502 |
|
---|
503 | typedef enum _AM_DVD_GRAPH_FLAGS
|
---|
504 | {
|
---|
505 | AM_DVD_HWDEC_PREFER = 0x0001,
|
---|
506 | AM_DVD_HWDEC_ONLY = 0x0002,
|
---|
507 | AM_DVD_SWDEC_PREFER = 0x0004,
|
---|
508 | AM_DVD_SWDEC_ONLY = 0x0008,
|
---|
509 | AM_DVD_NOVPE = 0x0100,
|
---|
510 | AM_DVD_DO_NOT_CLEAR = 0x0200,
|
---|
511 | AM_DVD_VMR9_ONLY = 0x0800,
|
---|
512 | AM_DVD_EVR_ONLY = 0x1000,
|
---|
513 | AM_DVD_EVR_QOS = 0x2000,
|
---|
514 | AM_DVD_ADAPT_GRAPH = 0x4000,
|
---|
515 | AM_DVD_MASK = 0xffff
|
---|
516 | } AM_DVD_GRAPH_FLAGS;
|
---|
517 |
|
---|
518 | typedef enum _AM_DVD_STREAM_FLAGS
|
---|
519 | {
|
---|
520 | AM_DVD_STREAM_VIDEO = 0x01,
|
---|
521 | AM_DVD_STREAM_AUDIO = 0x02,
|
---|
522 | AM_DVD_STREAM_SUBPIC = 0x04
|
---|
523 | } AM_DVD_STREAM_FLAGS;
|
---|
524 |
|
---|
525 | typedef struct tagAM_DVD_RENDERSTATUS
|
---|
526 | {
|
---|
527 | HRESULT hrVPEStatus;
|
---|
528 | BOOL bDvdVolInvalid;
|
---|
529 | BOOL bDvdVolUnknown;
|
---|
530 | BOOL bNoLine21In;
|
---|
531 | BOOL bNoLine21Out;
|
---|
532 | int iNumStreams;
|
---|
533 | int iNumStreamsFailed;
|
---|
534 | DWORD dwFailedStreamsFlag;
|
---|
535 | } AM_DVD_RENDERSTATUS;
|
---|
536 |
|
---|
537 | [
|
---|
538 | local,
|
---|
539 | object,
|
---|
540 | uuid(a70efe61-e2a3-11d0-a9be-00aa0061be93),
|
---|
541 | ]
|
---|
542 | interface IDvdControl : IUnknown
|
---|
543 | {
|
---|
544 | HRESULT TitlePlay([in] ULONG title);
|
---|
545 | HRESULT ChapterPlay([in] ULONG title, [in] ULONG chapter);
|
---|
546 | HRESULT TimePlay([in] ULONG title, [in] ULONG time);
|
---|
547 | HRESULT StopForResume();
|
---|
548 | HRESULT GoUp();
|
---|
549 | HRESULT TimeSearch([in] ULONG time);
|
---|
550 | HRESULT ChapterSearch([in] ULONG chapter);
|
---|
551 | HRESULT PrevPGSearch();
|
---|
552 | HRESULT TopPGSearch();
|
---|
553 | HRESULT NextPGSearch();
|
---|
554 | HRESULT ForwardScan([in] double speed);
|
---|
555 | HRESULT BackwardScan([in] double speed);
|
---|
556 | HRESULT MenuCall([in] DVD_MENU_ID id);
|
---|
557 | HRESULT Resume();
|
---|
558 | HRESULT UpperButtonSelect();
|
---|
559 | HRESULT LowerButtonSelect();
|
---|
560 | HRESULT LeftButtonSelect();
|
---|
561 | HRESULT RightButtonSelect();
|
---|
562 | HRESULT ButtonActivate();
|
---|
563 | HRESULT ButtonSelectActivate([in] ULONG button);
|
---|
564 | HRESULT StillOff();
|
---|
565 | HRESULT PauseOn();
|
---|
566 | HRESULT PauseOff();
|
---|
567 | HRESULT MenuLanguageSelect([in] LCID language);
|
---|
568 | HRESULT AudioStreamChange([in] ULONG audio);
|
---|
569 | HRESULT SubpictureStreamChange([in] ULONG subpicture, [in] BOOL enable);
|
---|
570 | HRESULT AngleChange([in] ULONG angle);
|
---|
571 | HRESULT ParentalLevelSelect([in] ULONG level);
|
---|
572 | HRESULT ParentalCountrySelect([in] WORD country);
|
---|
573 | HRESULT KaraokeAudioPresentationModeChange([in] ULONG mode);
|
---|
574 | HRESULT VideoModePreference([in] ULONG mode);
|
---|
575 | HRESULT SetRoot([in] const WCHAR *path);
|
---|
576 | HRESULT MouseActivate([in] POINT point);
|
---|
577 | HRESULT MouseSelect([in] POINT point);
|
---|
578 | HRESULT ChapterPlayAutoStop([in] ULONG title, [in] ULONG chapter, [in] ULONG count);
|
---|
579 | }
|
---|
580 |
|
---|
581 | [
|
---|
582 | local,
|
---|
583 | object,
|
---|
584 | uuid(a70efe60-e2a3-11d0-a9be-00aa0061be93),
|
---|
585 | ]
|
---|
586 | interface IDvdInfo : IUnknown
|
---|
587 | {
|
---|
588 | HRESULT GetCurrentDomain([out] DVD_DOMAIN *domain);
|
---|
589 | HRESULT GetCurrentLocation([out] DVD_PLAYBACK_LOCATION *location);
|
---|
590 | HRESULT GetTotalTitleTime([out] ULONG *time);
|
---|
591 | HRESULT GetCurrentButton([out] ULONG *count, [out] ULONG *current);
|
---|
592 | HRESULT GetCurrentAngle([out] ULONG *count, [out] ULONG *current);
|
---|
593 | HRESULT GetCurrentAudio([out] ULONG *count, [out] ULONG *current);
|
---|
594 | HRESULT GetCurrentSubpicture([out] ULONG *count, [out] ULONG *current, [out] BOOL *enable);
|
---|
595 | HRESULT GetCurrentUOPS([out] VALID_UOP_SOMTHING_OR_OTHER *uops);
|
---|
596 | HRESULT GetAllSPRMs([out] SPRMARRAY *regs);
|
---|
597 | HRESULT GetAllGPRMs([out] GPRMARRAY *regs);
|
---|
598 | HRESULT GetAudioLanguage([in] ULONG stream, [out] LCID *language);
|
---|
599 | HRESULT GetSubpictureLanguage([in] ULONG stream, [out] LCID *language);
|
---|
600 | HRESULT GetTitleAttributes([in] ULONG title, [out] DVD_ATR *attr);
|
---|
601 | HRESULT GetVMGAttributes([out] DVD_ATR *attr);
|
---|
602 | HRESULT GetCurrentVideoAttributes([out] DVD_VideoATR *attr);
|
---|
603 | HRESULT GetCurrentAudioAttributes([out] DVD_AudioATR *attr);
|
---|
604 | HRESULT GetCurrentSubpictureAttributes([out] DVD_SubpictureATR *attr);
|
---|
605 | HRESULT GetCurrentVolumeInfo([out] ULONG *volume_count, [out] ULONG *current, [out] DVD_DISC_SIDE *side, [out] ULONG *title_count);
|
---|
606 | HRESULT GetDVDTextInfo([out, size_is(size)] BYTE *text_manager, [in] ULONG size, [out] ULONG *ret_size);
|
---|
607 | HRESULT GetPlayerParentalLevel([out] ULONG *level, [out] ULONG *country_code);
|
---|
608 | HRESULT GetNumberOfChapters([in] ULONG title, [out] ULONG *count);
|
---|
609 | HRESULT GetTitleParentalLevels([in] ULONG title, [out] ULONG *levels);
|
---|
610 | HRESULT GetRoot([out, size_is(size)] char *path, [in] ULONG size, [out] ULONG *ret_size);
|
---|
611 | }
|
---|
612 |
|
---|
613 | [
|
---|
614 | local,
|
---|
615 | object,
|
---|
616 | uuid(5a4a97e4-94ee-4a55-9751-74b5643aa27d),
|
---|
617 | ]
|
---|
618 | interface IDvdCmd : IUnknown
|
---|
619 | {
|
---|
620 | HRESULT WaitForStart();
|
---|
621 | HRESULT WaitForEnd();
|
---|
622 | }
|
---|
623 |
|
---|
624 | [
|
---|
625 | local,
|
---|
626 | object,
|
---|
627 | uuid(86303d6d-1c4a-4087-ab42-f711167048ef),
|
---|
628 | ]
|
---|
629 | interface IDvdState : IUnknown
|
---|
630 | {
|
---|
631 | HRESULT GetDiscID([out] ULONGLONG *id);
|
---|
632 | HRESULT GetParentalLevel([out] ULONG *level);
|
---|
633 | }
|
---|
634 |
|
---|
635 | [
|
---|
636 | local,
|
---|
637 | object,
|
---|
638 | uuid(33bc7430-eec0-11d2-8201-00a0c9d74842),
|
---|
639 | ]
|
---|
640 | interface IDvdControl2 : IUnknown
|
---|
641 | {
|
---|
642 | HRESULT PlayTitle([in] ULONG title, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
643 | HRESULT PlayChapterInTitle([in] ULONG title, [in] ULONG chapter, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
644 | HRESULT PlayTimeInTitle([in] ULONG title, [in] DVD_HMSF_TIMECODE *time, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
645 | HRESULT Stop();
|
---|
646 | HRESULT ReturnFromSubmenu([in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
647 | HRESULT PlayAtTime([in] DVD_HMSF_TIMECODE *time, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
648 | HRESULT PlayChapter([in] ULONG chapter, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
649 | HRESULT PlayPrevChapter([in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
650 | HRESULT ReplayChapter([in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
651 | HRESULT PlayNextChapter([in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
652 | HRESULT PlayForwards([in] double speed, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
653 | HRESULT PlayBackwards([in] double speed, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
654 | HRESULT ShowMenu([in] DVD_MENU_ID id, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
655 | HRESULT Resume([in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
656 | HRESULT SelectRelativeButton([in] DVD_RELATIVE_BUTTON button);
|
---|
657 | HRESULT ActivateButton();
|
---|
658 | HRESULT SelectButton([in] ULONG button);
|
---|
659 | HRESULT SelectAndActivateButton([in] ULONG button);
|
---|
660 | HRESULT StillOff();
|
---|
661 | HRESULT Pause([in] BOOL enable);
|
---|
662 | HRESULT SelectAudioStream([in] ULONG stream, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
663 | HRESULT SelectSubpictureStream([in] ULONG stream, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
664 | HRESULT SetSubpictureState([in] BOOL enable, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
665 | HRESULT SelectAngle([in] ULONG angle, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
666 | HRESULT SelectParentalLevel([in] ULONG level);
|
---|
667 | HRESULT SelectParentalCountry([in] BYTE country[2]);
|
---|
668 | HRESULT SelectKaraokeAudioPresentationMode([in] ULONG mode);
|
---|
669 | HRESULT SelectVideoModePreference([in] ULONG mode);
|
---|
670 | HRESULT SetDVDDirectory([in] const WCHAR *path);
|
---|
671 | HRESULT ActivateAtPosition([in] POINT point);
|
---|
672 | HRESULT SelectAtPosition([in] POINT point);
|
---|
673 | HRESULT PlayChaptersAutoStop([in] ULONG title, [in] ULONG chapter, [in] ULONG count, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
674 | HRESULT AcceptParentalLevelChange([in] BOOL accept);
|
---|
675 | HRESULT SetOption([in] DVD_OPTION_FLAG flag, [in] BOOL option);
|
---|
676 | HRESULT SetState([in] IDvdState *state, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
677 | HRESULT PlayPeriodInTitleAutoStop([in] ULONG title, [in] DVD_HMSF_TIMECODE *start_time, [in] DVD_HMSF_TIMECODE *end_time, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
678 | HRESULT SetGRPM([in] ULONG index, [in] WORD value, [in] DWORD flags, [out] IDvdCmd **cmd);
|
---|
679 | HRESULT SelectDefaultMenuLanguage([in] LCID language);
|
---|
680 | HRESULT SelectDefaultAudioLanguage([in] LCID language, [in] DVD_AUDIO_LANG_EXT extension);
|
---|
681 | HRESULT SelectDefaultSubpictureLanguage([in] LCID language, [in] DVD_SUBPICTURE_LANG_EXT extension);
|
---|
682 | }
|
---|
683 |
|
---|
684 | [
|
---|
685 | local,
|
---|
686 | object,
|
---|
687 | uuid(34151510-eec0-11d2-8201-00a0c9d74842),
|
---|
688 | ]
|
---|
689 | interface IDvdInfo2 : IUnknown
|
---|
690 | {
|
---|
691 | HRESULT GetCurrentDomain([out] DVD_DOMAIN *domain);
|
---|
692 | HRESULT GetCurrentLocation([out] DVD_PLAYBACK_LOCATION2 *location);
|
---|
693 | HRESULT GetTotalTitleTime([out] DVD_HMSF_TIMECODE *time, [out] ULONG *flags);
|
---|
694 | HRESULT GetCurrentButton([out] ULONG *count, [out] ULONG *current);
|
---|
695 | HRESULT GetCurrentAngle([out] ULONG *count, [out] ULONG *current);
|
---|
696 | HRESULT GetCurrentAudio([out] ULONG *count, [out] ULONG *current);
|
---|
697 | HRESULT GetCurrentSubpicture([out] ULONG *count, [out] ULONG *current, [out] BOOL *enable);
|
---|
698 | HRESULT GetCurrentUOPS([out] ULONG *uops);
|
---|
699 | HRESULT GetAllSPRMs([out] SPRMARRAY *regs);
|
---|
700 | HRESULT GetAllGPRMs([out] GPRMARRAY *regs);
|
---|
701 | HRESULT GetAudioLanguage([in] ULONG stream, [out] LCID *language);
|
---|
702 | HRESULT GetSubpictureLanguage([in] ULONG stream, [out] LCID *language);
|
---|
703 | HRESULT GetTitleAttributes([in] ULONG index, [out] DVD_MenuAttributes *menu, [out] DVD_TitleAttributes *title);
|
---|
704 | HRESULT GetVMGAttributes([out] DVD_MenuAttributes *attr);
|
---|
705 | HRESULT GetVideoAttributes([out] DVD_VideoAttributes *attr);
|
---|
706 | HRESULT GetAudioAttributes([in] ULONG stream, [out] DVD_AudioAttributes *attr);
|
---|
707 | HRESULT GetKaraokeAttributes([in] ULONG stream, [out] DVD_KaraokeAttributes *attr);
|
---|
708 | HRESULT GetSubpictureAttributes([in] ULONG stream, [out] DVD_SubpictureAttributes *attr);
|
---|
709 | HRESULT GetCurrentVolumeInfo([out] ULONG *volume_count, [out] ULONG *current, [out] DVD_DISC_SIDE *side, [out] ULONG *title_count);
|
---|
710 | HRESULT GetDVDTextNumberOfLanguages([out] ULONG *count);
|
---|
711 | HRESULT GetDVDTextLanguageInfo([in] ULONG index, [out] ULONG *string_count, [out] LCID *language, [out] enum DVD_TextCharSet *character_set);
|
---|
712 | HRESULT GetDVDTextStringAsNative([in] ULONG lang_index, [in] ULONG string_index, [out] BYTE *string, [in] ULONG size, [out] ULONG *ret_size, [out] enum DVD_TextStringType *type);
|
---|
713 | HRESULT GetDVDTextStringAsUnicode([in] ULONG lang_index, [in] ULONG string_index, [out] WCHAR *string, [in] ULONG size, [out] ULONG *ret_size, [out] enum DVD_TextStringType *type);
|
---|
714 | HRESULT GetPlayerParentalLevel([out] ULONG *level, [out] BYTE country_code[2]);
|
---|
715 | HRESULT GetNumberOfChapters([in] ULONG title, [out] ULONG *count);
|
---|
716 | HRESULT GetTitleParentalLevels([in] ULONG title, [out] ULONG *levels);
|
---|
717 | HRESULT GetDVDDirectory([out, size_is(size)] WCHAR *path, [in] ULONG size, [out] ULONG *ret_size);
|
---|
718 | HRESULT IsAudioStreamEnabled([in] ULONG stream, [out] BOOL *enable);
|
---|
719 | HRESULT GetDiscID([in] const WCHAR *path, [out] ULONGLONG *id);
|
---|
720 | HRESULT GetState([out] IDvdState **state);
|
---|
721 | HRESULT GetMenuLanguages([out] LCID *languages, [in] ULONG count, [out] ULONG *ret_count);
|
---|
722 | HRESULT GetButtonAtPosition([in] POINT point, [out] ULONG *button);
|
---|
723 | HRESULT GetCmdFromEvent([in] LONG_PTR param, [out] IDvdCmd **cmd);
|
---|
724 | HRESULT GetDefaultMenuLanguage([out] LCID *language);
|
---|
725 | HRESULT GetDefaultAudioLanguage([out] LCID *language, [out] DVD_AUDIO_LANG_EXT *extension);
|
---|
726 | HRESULT SelectDefaultSubpictureLanguage([out] LCID *language, [out] DVD_SUBPICTURE_LANG_EXT *extension);
|
---|
727 | HRESULT GetDecoderCaps([out] DVD_DECODER_CAPS *caps);
|
---|
728 | HRESULT GetButtonRect([in] ULONG button, [out] RECT *rect);
|
---|
729 | HRESULT IsSubpictureStreamEnabled([in] ULONG stream, [out] BOOL *enable);
|
---|
730 | }
|
---|
731 |
|
---|
732 | [
|
---|
733 | local,
|
---|
734 | object,
|
---|
735 | uuid(fcc152b6-f372-11d0-8e00-00c04fd7c08b),
|
---|
736 | ]
|
---|
737 | interface IDvdGraphBuilder : IUnknown
|
---|
738 | {
|
---|
739 | HRESULT GetFiltergraph([out] IGraphBuilder **graph);
|
---|
740 | HRESULT GetDvdInterface([in] REFIID iid, [out] void **out);
|
---|
741 | HRESULT RenderDvdVideoVolume([in] const WCHAR *path, [in] DWORD flags, [out] AM_DVD_RENDERSTATUS *status);
|
---|
742 | }
|
---|