| 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 |
} |