master
   1/*** Autogenerated by WIDL 10.4 from include/dvdif.idl - Do not edit ***/
   2
   3#ifdef _WIN32
   4#ifndef __REQUIRED_RPCNDR_H_VERSION__
   5#define __REQUIRED_RPCNDR_H_VERSION__ 475
   6#endif
   7#include <rpc.h>
   8#include <rpcndr.h>
   9#endif
  10
  11#ifndef COM_NO_WINDOWS_H
  12#include <windows.h>
  13#include <ole2.h>
  14#endif
  15
  16#ifndef __dvdif_h__
  17#define __dvdif_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IDvdControl_FWD_DEFINED__
  22#define __IDvdControl_FWD_DEFINED__
  23typedef interface IDvdControl IDvdControl;
  24#ifdef __cplusplus
  25interface IDvdControl;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IDvdInfo_FWD_DEFINED__
  30#define __IDvdInfo_FWD_DEFINED__
  31typedef interface IDvdInfo IDvdInfo;
  32#ifdef __cplusplus
  33interface IDvdInfo;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IDvdCmd_FWD_DEFINED__
  38#define __IDvdCmd_FWD_DEFINED__
  39typedef interface IDvdCmd IDvdCmd;
  40#ifdef __cplusplus
  41interface IDvdCmd;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IDvdState_FWD_DEFINED__
  46#define __IDvdState_FWD_DEFINED__
  47typedef interface IDvdState IDvdState;
  48#ifdef __cplusplus
  49interface IDvdState;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IDvdControl2_FWD_DEFINED__
  54#define __IDvdControl2_FWD_DEFINED__
  55typedef interface IDvdControl2 IDvdControl2;
  56#ifdef __cplusplus
  57interface IDvdControl2;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IDvdInfo2_FWD_DEFINED__
  62#define __IDvdInfo2_FWD_DEFINED__
  63typedef interface IDvdInfo2 IDvdInfo2;
  64#ifdef __cplusplus
  65interface IDvdInfo2;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IDvdGraphBuilder_FWD_DEFINED__
  70#define __IDvdGraphBuilder_FWD_DEFINED__
  71typedef interface IDvdGraphBuilder IDvdGraphBuilder;
  72#ifdef __cplusplus
  73interface IDvdGraphBuilder;
  74#endif /* __cplusplus */
  75#endif
  76
  77/* Headers for imported files */
  78
  79#include <unknwn.h>
  80#include <objidl.h>
  81
  82#ifdef __cplusplus
  83extern "C" {
  84#endif
  85
  86#include <ddraw.h>
  87#if 0
  88#ifndef __IGraphBuilder_FWD_DEFINED__
  89#define __IGraphBuilder_FWD_DEFINED__
  90typedef interface IGraphBuilder IGraphBuilder;
  91#ifdef __cplusplus
  92interface IGraphBuilder;
  93#endif /* __cplusplus */
  94#endif
  95
  96#endif
  97typedef enum tagDVD_DOMAIN {
  98    DVD_DOMAIN_FirstPlay = 1,
  99    DVD_DOMAIN_VideoManagerMenu = 2,
 100    DVD_DOMAIN_VideoTitleSetMenu = 3,
 101    DVD_DOMAIN_Title = 4,
 102    DVD_DOMAIN_Stop = 5
 103} DVD_DOMAIN;
 104typedef enum tagDVD_MENU_ID {
 105    DVD_MENU_Title = 2,
 106    DVD_MENU_Root = 3,
 107    DVD_MENU_Subpicture = 4,
 108    DVD_MENU_Audio = 5,
 109    DVD_MENU_Angle = 6,
 110    DVD_MENU_Chapter = 7
 111} DVD_MENU_ID;
 112typedef enum tagDVD_DISC_SIDE {
 113    DVD_SIDE_A = 1,
 114    DVD_SIDE_B = 2
 115} DVD_DISC_SIDE;
 116typedef enum tagDVD_PREFERRED_DISPLAY_MODE {
 117    DISPLAY_CONTENT_DEFAULT = 0,
 118    DISPLAY_16x9 = 1,
 119    DISPLAY_4x3_PANSCAN_PREFERRED = 2,
 120    DISPLAY_4x3_LETTERBOX_PREFERRED = 3
 121} DVD_PREFERRED_DISPLAY_MODE;
 122typedef WORD DVD_REGISTER;
 123typedef DVD_REGISTER GPRMARRAY[16];
 124typedef DVD_REGISTER SPRMARRAY[24];
 125typedef struct tagDVD_ATR {
 126    ULONG ulCAT;
 127    BYTE pbATRI[768];
 128} DVD_ATR;
 129typedef BYTE DVD_VideoATR[2];
 130typedef BYTE DVD_AudioATR[8];
 131typedef BYTE DVD_SubpictureATR[6];
 132typedef enum tagDVD_FRAMERATE {
 133    DVD_FPS_25 = 1,
 134    DVD_FPS_30NonDrop = 3
 135} DVD_FRAMERATE;
 136typedef struct tagDVD_TIMECODE
 137{
 138   ULONG Hours1 : 4;
 139   ULONG Hours10 : 4;
 140   ULONG Minutes1 : 4;
 141   ULONG Minutes10 : 4;
 142   ULONG Seconds1 : 4;
 143   ULONG Seconds10 : 4;
 144   ULONG Frames1 : 4;
 145   ULONG Frames10 : 2;
 146   ULONG FrameRateCode : 2;
 147} DVD_TIMECODE;
 148typedef enum tagDVD_NavCmdType {
 149    DVD_NavCmdType_Pre = 1,
 150    DVD_NavCmdType_Post = 2,
 151    DVD_NavCmdType_Cell = 3,
 152    DVD_NavCmdType_Button = 4
 153} DVD_NavCmdType;
 154typedef enum tagDVD_TIMECODE_FLAGS {
 155    DVD_TC_FLAG_25fps = 0x1,
 156    DVD_TC_FLAG_30fps = 0x2,
 157    DVD_TC_FLAG_DropFrame = 0x4,
 158    DVD_TC_FLAG_Interpolated = 0x8
 159} DVD_TIMECODE_FLAGS;
 160typedef struct tagDVD_HMSF_TIMECODE {
 161    BYTE bHours;
 162    BYTE bMinutes;
 163    BYTE bSeconds;
 164    BYTE bFrames;
 165} DVD_HMSF_TIMECODE;
 166typedef struct tagDVD_PLAYBACK_LOCATION2 {
 167    ULONG TitleNum;
 168    ULONG ChapterNum;
 169    DVD_HMSF_TIMECODE TimeCode;
 170    ULONG TimeCodeFlags;
 171} DVD_PLAYBACK_LOCATION2;
 172typedef struct tagDVD_PLAYBACK_LOCATION {
 173    ULONG TitleNum;
 174    ULONG ChapterNum;
 175    ULONG TimeCode;
 176} DVD_PLAYBACK_LOCATION;
 177typedef DWORD VALID_UOP_SOMTHING_OR_OTHER;
 178typedef enum __WIDL_dvdif_generated_name_0000000E {
 179    UOP_FLAG_Play_Title_Or_AtTime = 0x1,
 180    UOP_FLAG_Play_Chapter = 0x2,
 181    UOP_FLAG_Play_Title = 0x4,
 182    UOP_FLAG_Stop = 0x8,
 183    UOP_FLAG_ReturnFromSubMenu = 0x10,
 184    UOP_FLAG_Play_Chapter_Or_AtTime = 0x20,
 185    UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x40,
 186    UOP_FLAG_PlayNext_Chapter = 0x80,
 187    UOP_FLAG_Play_Forwards = 0x100,
 188    UOP_FLAG_Play_Backwards = 0x200,
 189    UOP_FLAG_ShowMenu_Title = 0x400,
 190    UOP_FLAG_ShowMenu_Root = 0x800,
 191    UOP_FLAG_ShowMenu_SubPic = 0x1000,
 192    UOP_FLAG_ShowMenu_Audio = 0x2000,
 193    UOP_FLAG_ShowMenu_Angle = 0x4000,
 194    UOP_FLAG_ShowMenu_Chapter = 0x8000,
 195    UOP_FLAG_Resume = 0x10000,
 196    UOP_FLAG_Select_Or_Activate_Button = 0x20000,
 197    UOP_FLAG_Still_Off = 0x40000,
 198    UOP_FLAG_Pause_On = 0x80000,
 199    UOP_FLAG_Select_Audio_Stream = 0x100000,
 200    UOP_FLAG_Select_SubPic_Stream = 0x200000,
 201    UOP_FLAG_Select_Angle = 0x400000,
 202    UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x800000,
 203    UOP_FLAG_Select_Video_Mode_Preference = 0x1000000
 204} VALID_UOP_FLAG;
 205typedef enum __WIDL_dvdif_generated_name_0000000F {
 206    DVD_CMD_FLAG_None = 0x0,
 207    DVD_CMD_FLAG_Flush = 0x1,
 208    DVD_CMD_FLAG_SendEvents = 0x2,
 209    DVD_CMD_FLAG_Block = 0x4,
 210    DVD_CMD_FLAG_StartWhenRendered = 0x8,
 211    DVD_CMD_FLAG_EndAfterRendered = 0x10
 212} DVD_CMD_FLAGS;
 213typedef enum __WIDL_dvdif_generated_name_00000010 {
 214    DVD_ResetOnStop = 1,
 215    DVD_NotifyParentalLevelChange = 2,
 216    DVD_HMSF_TimeCodeEvents = 3,
 217    DVD_AudioDuringFFwdRew = 4,
 218    DVD_EnableNonblockingAPIs = 5,
 219    DVD_CacheSizeInMB = 6,
 220    DVD_EnablePortableBookmarks = 7,
 221    DVD_EnableExtendedCopyProtectErrors = 8,
 222    DVD_NotifyPositionChange = 9,
 223    DVD_IncreaseOutputControl = 10,
 224    DVD_EnableStreaming = 11,
 225    DVD_EnableESOutput = 12,
 226    DVD_EnableTitleLength = 13,
 227    DVD_DisableStillThrottle = 14,
 228    DVD_EnableLoggingEvents = 15,
 229    DVD_MaxReadBurstInKB = 16,
 230    DVD_ReadBurstPeriodInMS = 17,
 231    DVD_RestartDisc = 18,
 232    DVD_EnableCC = 19
 233} DVD_OPTION_FLAG;
 234typedef enum __WIDL_dvdif_generated_name_00000011 {
 235    DVD_Relative_Upper = 1,
 236    DVD_Relative_Lower = 2,
 237    DVD_Relative_Left = 3,
 238    DVD_Relative_Right = 4
 239} DVD_RELATIVE_BUTTON;
 240typedef enum tagDVD_PARENTAL_LEVEL {
 241    DVD_PARENTAL_LEVEL_8 = 0x8000,
 242    DVD_PARENTAL_LEVEL_7 = 0x4000,
 243    DVD_PARENTAL_LEVEL_6 = 0x2000,
 244    DVD_PARENTAL_LEVEL_5 = 0x1000,
 245    DVD_PARENTAL_LEVEL_4 = 0x800,
 246    DVD_PARENTAL_LEVEL_3 = 0x400,
 247    DVD_PARENTAL_LEVEL_2 = 0x200,
 248    DVD_PARENTAL_LEVEL_1 = 0x100
 249} DVD_PARENTAL_LEVEL;
 250typedef enum tagDVD_AUDIO_LANG_EXT {
 251    DVD_AUD_EXT_NotSpecified = 0,
 252    DVD_AUD_EXT_Captions = 1,
 253    DVD_AUD_EXT_VisuallyImpaired = 2,
 254    DVD_AUD_EXT_DirectorComments1 = 3,
 255    DVD_AUD_EXT_DirectorComments2 = 4
 256} DVD_AUDIO_LANG_EXT;
 257typedef enum tagDVD_SUBPICTURE_LANG_EXT {
 258    DVD_SP_EXT_NotSpecified = 0,
 259    DVD_SP_EXT_Caption_Normal = 1,
 260    DVD_SP_EXT_Caption_Big = 2,
 261    DVD_SP_EXT_Caption_Children = 3,
 262    DVD_SP_EXT_CC_Normal = 5,
 263    DVD_SP_EXT_CC_Big = 6,
 264    DVD_SP_EXT_CC_Children = 7,
 265    DVD_SP_EXT_Forced = 9,
 266    DVD_SP_EXT_DirectorComments_Normal = 13,
 267    DVD_SP_EXT_DirectorComments_Big = 14,
 268    DVD_SP_EXT_DirectorComments_Children = 15
 269} DVD_SUBPICTURE_LANG_EXT;
 270typedef enum tagDVD_AUDIO_APPMODE {
 271    DVD_AudioMode_None = 0,
 272    DVD_AudioMode_Karaoke = 1,
 273    DVD_AudioMode_Surround = 2,
 274    DVD_AudioMode_Other = 3
 275} DVD_AUDIO_APPMODE;
 276typedef enum tagDVD_AUDIO_FORMAT {
 277    DVD_AudioFormat_AC3 = 0,
 278    DVD_AudioFormat_MPEG1 = 1,
 279    DVD_AudioFormat_MPEG1_DRC = 2,
 280    DVD_AudioFormat_MPEG2 = 3,
 281    DVD_AudioFormat_MPEG2_DRC = 4,
 282    DVD_AudioFormat_LPCM = 5,
 283    DVD_AudioFormat_DTS = 6,
 284    DVD_AudioFormat_SDDS = 7,
 285    DVD_AudioFormat_Other = 8
 286} DVD_AUDIO_FORMAT;
 287typedef enum tagDVD_KARAOKE_DOWNMIX {
 288    DVD_Mix_0to0 = 0x1,
 289    DVD_Mix_1to0 = 0x2,
 290    DVD_Mix_2to0 = 0x4,
 291    DVD_Mix_3to0 = 0x8,
 292    DVD_Mix_4to0 = 0x10,
 293    DVD_Mix_Lto0 = 0x20,
 294    DVD_Mix_Rto0 = 0x40,
 295    DVD_Mix_0to1 = 0x100,
 296    DVD_Mix_1to1 = 0x200,
 297    DVD_Mix_2to1 = 0x400,
 298    DVD_Mix_3to1 = 0x800,
 299    DVD_Mix_4to1 = 0x1000,
 300    DVD_Mix_Lto1 = 0x2000,
 301    DVD_Mix_Rto1 = 0x4000
 302} DVD_KARAOKE_DOWNMIX;
 303typedef enum tagDVD_KARAOKE_CONTENTS {
 304    DVD_Karaoke_GuideVocal1 = 0x1,
 305    DVD_Karaoke_GuideVocal2 = 0x2,
 306    DVD_Karaoke_GuideMelody1 = 0x4,
 307    DVD_Karaoke_GuideMelody2 = 0x8,
 308    DVD_Karaoke_GuideMelodyA = 0x10,
 309    DVD_Karaoke_GuideMelodyB = 0x20,
 310    DVD_Karaoke_SoundEffectA = 0x40,
 311    DVD_Karaoke_SoundEffectB = 0x80
 312} DVD_KARAOKE_CONTENTS;
 313typedef enum tagDVD_KARAOKE_ASSIGNMENT {
 314    DVD_Assignment_reserved0 = 0,
 315    DVD_Assignment_reserved1 = 1,
 316    DVD_Assignment_LR = 2,
 317    DVD_Assignment_LRM = 3,
 318    DVD_Assignment_LR1 = 4,
 319    DVD_Assignment_LRM1 = 5,
 320    DVD_Assignment_LR12 = 6,
 321    DVD_Assignment_LRM12 = 7
 322} DVD_KARAOKE_ASSIGNMENT;
 323typedef struct tagDVD_MUA_MixingInfo {
 324    WINBOOL fMixTo0;
 325    WINBOOL fMixTo1;
 326    WINBOOL fMix0InPhase;
 327    WINBOOL fMix1InPhase;
 328    DWORD dwSpeakerPosition;
 329} DVD_MUA_MixingInfo;
 330typedef struct tagDVD_MUA_Coeff {
 331    double log2_alpha;
 332    double log2_beta;
 333} DVD_MUA_Coeff;
 334typedef enum tagDVD_VIDEO_COMPRESSION {
 335    DVD_VideoCompression_Other = 0,
 336    DVD_VideoCompression_MPEG1 = 1,
 337    DVD_VideoCompression_MPEG2 = 2
 338} DVD_VIDEO_COMPRESSION;
 339typedef enum tagDVD_SUBPICTURE_TYPE {
 340    DVD_SPType_NotSpecified = 0,
 341    DVD_SPType_Language = 1,
 342    DVD_SPType_Other = 2
 343} DVD_SUBPICTURE_TYPE;
 344typedef enum tagDVD_SUBPICTURE_CODING {
 345    DVD_SPCoding_RunLength = 0,
 346    DVD_SPCoding_Extended = 1,
 347    DVD_SPCoding_Other = 2
 348} DVD_SUBPICTURE_CODING;
 349typedef enum tagDVD_TITLE_APPMODE {
 350    DVD_AppMode_Not_Specified = 0,
 351    DVD_AppMode_Karaoke = 1,
 352    DVD_AppMode_Other = 3
 353} DVD_TITLE_APPMODE;
 354enum DVD_TextStringType {
 355    DVD_Struct_Volume = 0x1,
 356    DVD_Struct_Title = 0x2,
 357    DVD_Struct_ParentalID = 0x3,
 358    DVD_Struct_PartOfTitle = 0x4,
 359    DVD_Struct_Cell = 0x5,
 360    DVD_Stream_Audio = 0x10,
 361    DVD_Stream_Subpicture = 0x11,
 362    DVD_Stream_Angle = 0x12,
 363    DVD_Channel_Audio = 0x20,
 364    DVD_General_Name = 0x30,
 365    DVD_General_Comments = 0x31,
 366    DVD_Title_Series = 0x38,
 367    DVD_Title_Movie = 0x39,
 368    DVD_Title_Video = 0x3a,
 369    DVD_Title_Album = 0x3b,
 370    DVD_Title_Song = 0x3c,
 371    DVD_Title_Other = 0x3f,
 372    DVD_Title_Sub_Series = 0x40,
 373    DVD_Title_Sub_Movie = 0x41,
 374    DVD_Title_Sub_Video = 0x42,
 375    DVD_Title_Sub_Album = 0x43,
 376    DVD_Title_Sub_Song = 0x44,
 377    DVD_Title_Sub_Other = 0x47,
 378    DVD_Title_Orig_Series = 0x48,
 379    DVD_Title_Orig_Movie = 0x49,
 380    DVD_Title_Orig_Video = 0x4a,
 381    DVD_Title_Orig_Album = 0x4b,
 382    DVD_Title_Orig_Song = 0x4c,
 383    DVD_Title_Orig_Other = 0x4f,
 384    DVD_Other_Scene = 0x50,
 385    DVD_Other_Cut = 0x51,
 386    DVD_Other_Take = 0x52
 387};
 388enum DVD_TextCharSet {
 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};
 395typedef struct tagDVD_AudioAttributes {
 396    DVD_AUDIO_APPMODE AppMode;
 397    BYTE AppModeData;
 398    DVD_AUDIO_FORMAT AudioFormat;
 399    LCID Language;
 400    DVD_AUDIO_LANG_EXT LanguageExtension;
 401    WINBOOL fHasMultichannelInfo;
 402    DWORD dwFrequency;
 403    BYTE bQuantization;
 404    BYTE bNumberOfChannels;
 405    DWORD dwReserved[2];
 406} DVD_AudioAttributes;
 407typedef struct tagDVD_MultichannelAudioAttributes {
 408    DVD_MUA_MixingInfo Info[8];
 409    DVD_MUA_Coeff Coeff[8];
 410} DVD_MultichannelAudioAttributes;
 411typedef struct tagDVD_VideoAttributes {
 412    WINBOOL fPanscanPermitted;
 413    WINBOOL fLetterboxPermitted;
 414    ULONG ulAspectX;
 415    ULONG ulAspectY;
 416    ULONG ulFrameRate;
 417    ULONG ulFrameHeight;
 418    DVD_VIDEO_COMPRESSION Compression;
 419    WINBOOL fLine21Field1InGOP;
 420    WINBOOL fLine21Field2InGOP;
 421    ULONG ulSourceResolutionX;
 422    ULONG ulSourceResolutionY;
 423    WINBOOL fIsSourceLetterboxed;
 424    WINBOOL fIsFilmMode;
 425} DVD_VideoAttributes;
 426typedef struct tagDVD_SubpictureAttributes {
 427    DVD_SUBPICTURE_TYPE Type;
 428    DVD_SUBPICTURE_CODING CodingMode;
 429    LCID Language;
 430    DVD_SUBPICTURE_LANG_EXT LanguageExtension;
 431} DVD_SubpictureAttributes;
 432typedef struct tagDVD_KaraokeAttributes {
 433    BYTE bVersion;
 434    WINBOOL fMasterOfCeremoniesInGuideVocal1;
 435    WINBOOL fDuet;
 436    DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
 437    WORD wChannelContents[8];
 438} DVD_KaraokeAttributes;
 439typedef struct tagDVD_TitleMainAttributes {
 440    union {
 441        DVD_TITLE_APPMODE AppMode;
 442        DVD_HMSF_TIMECODE TitleLength;
 443    } DUMMYUNIONNAME;
 444    DVD_VideoAttributes VideoAttributes;
 445    ULONG ulNumberOfAudioStreams;
 446    DVD_AudioAttributes AudioAttributes[8];
 447    DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
 448    ULONG ulNumberOfSubpictureStreams;
 449    DVD_SubpictureAttributes SubpictureAttributes[32];
 450} DVD_TitleAttributes;
 451typedef struct tagDVD_MenuAttributes {
 452    WINBOOL fCompatibleRegion[8];
 453    DVD_VideoAttributes VideoAttributes;
 454    WINBOOL fAudioPresent;
 455    DVD_AudioAttributes AudioAttributes;
 456    WINBOOL fSubpicturePresent;
 457    DVD_SubpictureAttributes SubpictureAttributes;
 458} DVD_MenuAttributes;
 459#define DVD_TITLE_MENU           0x000
 460#define DVD_STREAM_DATA_VMGM     0x400
 461#define DVD_STREAM_DATA_VTSM     0x401
 462#define DVD_STREAM_DATA_CURRENT  0x800
 463#define DVD_DEFAULT_AUDIO_STREAM 0x00f
 464#define DVD_AUDIO_CAPS_AC3   0x00000001
 465#define DVD_AUDIO_CAPS_MPEG2 0x00000002
 466#define DVD_AUDIO_CAPS_LPCM  0x00000004
 467#define DVD_AUDIO_CAPS_DTS   0x00000008
 468#define DVD_AUDIO_CAPS_SDDS  0x00000010
 469typedef struct tagDVD_DECODER_CAPS {
 470    DWORD dwSize;
 471    DWORD dwAudioCaps;
 472    double dFwdMaxRateVideo;
 473    double dFwdMaxRateAudio;
 474    double dFwdMaxRateSP;
 475    double dBwdMaxRateVideo;
 476    double dBwdMaxRateAudio;
 477    double dBwdMaxRateSP;
 478    DWORD dwRes1;
 479    DWORD dwRes2;
 480    DWORD dwRes3;
 481    DWORD dwRes4;
 482} DVD_DECODER_CAPS;
 483typedef enum _AM_DVD_GRAPH_FLAGS {
 484    AM_DVD_HWDEC_PREFER = 0x1,
 485    AM_DVD_HWDEC_ONLY = 0x2,
 486    AM_DVD_SWDEC_PREFER = 0x4,
 487    AM_DVD_SWDEC_ONLY = 0x8,
 488    AM_DVD_NOVPE = 0x100,
 489    AM_DVD_DO_NOT_CLEAR = 0x200,
 490    AM_DVD_VMR9_ONLY = 0x800,
 491    AM_DVD_EVR_ONLY = 0x1000,
 492    AM_DVD_EVR_QOS = 0x2000,
 493    AM_DVD_ADAPT_GRAPH = 0x4000,
 494    AM_DVD_MASK = 0xffff
 495} AM_DVD_GRAPH_FLAGS;
 496typedef enum _AM_DVD_STREAM_FLAGS {
 497    AM_DVD_STREAM_VIDEO = 0x1,
 498    AM_DVD_STREAM_AUDIO = 0x2,
 499    AM_DVD_STREAM_SUBPIC = 0x4
 500} AM_DVD_STREAM_FLAGS;
 501typedef struct tagAM_DVD_RENDERSTATUS {
 502    HRESULT hrVPEStatus;
 503    WINBOOL bDvdVolInvalid;
 504    WINBOOL bDvdVolUnknown;
 505    WINBOOL bNoLine21In;
 506    WINBOOL bNoLine21Out;
 507    int iNumStreams;
 508    int iNumStreamsFailed;
 509    DWORD dwFailedStreamsFlag;
 510} AM_DVD_RENDERSTATUS;
 511/*****************************************************************************
 512 * IDvdControl interface
 513 */
 514#ifndef __IDvdControl_INTERFACE_DEFINED__
 515#define __IDvdControl_INTERFACE_DEFINED__
 516
 517DEFINE_GUID(IID_IDvdControl, 0xa70efe61, 0xe2a3, 0x11d0, 0xa9,0xbe, 0x00,0xaa,0x00,0x61,0xbe,0x93);
 518#if defined(__cplusplus) && !defined(CINTERFACE)
 519MIDL_INTERFACE("a70efe61-e2a3-11d0-a9be-00aa0061be93")
 520IDvdControl : public IUnknown
 521{
 522    virtual HRESULT STDMETHODCALLTYPE TitlePlay(
 523        ULONG title) = 0;
 524
 525    virtual HRESULT STDMETHODCALLTYPE ChapterPlay(
 526        ULONG title,
 527        ULONG chapter) = 0;
 528
 529    virtual HRESULT STDMETHODCALLTYPE TimePlay(
 530        ULONG title,
 531        ULONG time) = 0;
 532
 533    virtual HRESULT STDMETHODCALLTYPE StopForResume(
 534        ) = 0;
 535
 536    virtual HRESULT STDMETHODCALLTYPE GoUp(
 537        ) = 0;
 538
 539    virtual HRESULT STDMETHODCALLTYPE TimeSearch(
 540        ULONG time) = 0;
 541
 542    virtual HRESULT STDMETHODCALLTYPE ChapterSearch(
 543        ULONG chapter) = 0;
 544
 545    virtual HRESULT STDMETHODCALLTYPE PrevPGSearch(
 546        ) = 0;
 547
 548    virtual HRESULT STDMETHODCALLTYPE TopPGSearch(
 549        ) = 0;
 550
 551    virtual HRESULT STDMETHODCALLTYPE NextPGSearch(
 552        ) = 0;
 553
 554    virtual HRESULT STDMETHODCALLTYPE ForwardScan(
 555        double speed) = 0;
 556
 557    virtual HRESULT STDMETHODCALLTYPE BackwardScan(
 558        double speed) = 0;
 559
 560    virtual HRESULT STDMETHODCALLTYPE MenuCall(
 561        DVD_MENU_ID id) = 0;
 562
 563    virtual HRESULT STDMETHODCALLTYPE Resume(
 564        ) = 0;
 565
 566    virtual HRESULT STDMETHODCALLTYPE UpperButtonSelect(
 567        ) = 0;
 568
 569    virtual HRESULT STDMETHODCALLTYPE LowerButtonSelect(
 570        ) = 0;
 571
 572    virtual HRESULT STDMETHODCALLTYPE LeftButtonSelect(
 573        ) = 0;
 574
 575    virtual HRESULT STDMETHODCALLTYPE RightButtonSelect(
 576        ) = 0;
 577
 578    virtual HRESULT STDMETHODCALLTYPE ButtonActivate(
 579        ) = 0;
 580
 581    virtual HRESULT STDMETHODCALLTYPE ButtonSelectActivate(
 582        ULONG button) = 0;
 583
 584    virtual HRESULT STDMETHODCALLTYPE StillOff(
 585        ) = 0;
 586
 587    virtual HRESULT STDMETHODCALLTYPE PauseOn(
 588        ) = 0;
 589
 590    virtual HRESULT STDMETHODCALLTYPE PauseOff(
 591        ) = 0;
 592
 593    virtual HRESULT STDMETHODCALLTYPE MenuLanguageSelect(
 594        LCID language) = 0;
 595
 596    virtual HRESULT STDMETHODCALLTYPE AudioStreamChange(
 597        ULONG audio) = 0;
 598
 599    virtual HRESULT STDMETHODCALLTYPE SubpictureStreamChange(
 600        ULONG subpicture,
 601        WINBOOL enable) = 0;
 602
 603    virtual HRESULT STDMETHODCALLTYPE AngleChange(
 604        ULONG angle) = 0;
 605
 606    virtual HRESULT STDMETHODCALLTYPE ParentalLevelSelect(
 607        ULONG level) = 0;
 608
 609    virtual HRESULT STDMETHODCALLTYPE ParentalCountrySelect(
 610        WORD country) = 0;
 611
 612    virtual HRESULT STDMETHODCALLTYPE KaraokeAudioPresentationModeChange(
 613        ULONG mode) = 0;
 614
 615    virtual HRESULT STDMETHODCALLTYPE VideoModePreference(
 616        ULONG mode) = 0;
 617
 618    virtual HRESULT STDMETHODCALLTYPE SetRoot(
 619        const WCHAR *path) = 0;
 620
 621    virtual HRESULT STDMETHODCALLTYPE MouseActivate(
 622        POINT point) = 0;
 623
 624    virtual HRESULT STDMETHODCALLTYPE MouseSelect(
 625        POINT point) = 0;
 626
 627    virtual HRESULT STDMETHODCALLTYPE ChapterPlayAutoStop(
 628        ULONG title,
 629        ULONG chapter,
 630        ULONG count) = 0;
 631
 632};
 633#ifdef __CRT_UUID_DECL
 634__CRT_UUID_DECL(IDvdControl, 0xa70efe61, 0xe2a3, 0x11d0, 0xa9,0xbe, 0x00,0xaa,0x00,0x61,0xbe,0x93)
 635#endif
 636#else
 637typedef struct IDvdControlVtbl {
 638    BEGIN_INTERFACE
 639
 640    /*** IUnknown methods ***/
 641    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 642        IDvdControl *This,
 643        REFIID riid,
 644        void **ppvObject);
 645
 646    ULONG (STDMETHODCALLTYPE *AddRef)(
 647        IDvdControl *This);
 648
 649    ULONG (STDMETHODCALLTYPE *Release)(
 650        IDvdControl *This);
 651
 652    /*** IDvdControl methods ***/
 653    HRESULT (STDMETHODCALLTYPE *TitlePlay)(
 654        IDvdControl *This,
 655        ULONG title);
 656
 657    HRESULT (STDMETHODCALLTYPE *ChapterPlay)(
 658        IDvdControl *This,
 659        ULONG title,
 660        ULONG chapter);
 661
 662    HRESULT (STDMETHODCALLTYPE *TimePlay)(
 663        IDvdControl *This,
 664        ULONG title,
 665        ULONG time);
 666
 667    HRESULT (STDMETHODCALLTYPE *StopForResume)(
 668        IDvdControl *This);
 669
 670    HRESULT (STDMETHODCALLTYPE *GoUp)(
 671        IDvdControl *This);
 672
 673    HRESULT (STDMETHODCALLTYPE *TimeSearch)(
 674        IDvdControl *This,
 675        ULONG time);
 676
 677    HRESULT (STDMETHODCALLTYPE *ChapterSearch)(
 678        IDvdControl *This,
 679        ULONG chapter);
 680
 681    HRESULT (STDMETHODCALLTYPE *PrevPGSearch)(
 682        IDvdControl *This);
 683
 684    HRESULT (STDMETHODCALLTYPE *TopPGSearch)(
 685        IDvdControl *This);
 686
 687    HRESULT (STDMETHODCALLTYPE *NextPGSearch)(
 688        IDvdControl *This);
 689
 690    HRESULT (STDMETHODCALLTYPE *ForwardScan)(
 691        IDvdControl *This,
 692        double speed);
 693
 694    HRESULT (STDMETHODCALLTYPE *BackwardScan)(
 695        IDvdControl *This,
 696        double speed);
 697
 698    HRESULT (STDMETHODCALLTYPE *MenuCall)(
 699        IDvdControl *This,
 700        DVD_MENU_ID id);
 701
 702    HRESULT (STDMETHODCALLTYPE *Resume)(
 703        IDvdControl *This);
 704
 705    HRESULT (STDMETHODCALLTYPE *UpperButtonSelect)(
 706        IDvdControl *This);
 707
 708    HRESULT (STDMETHODCALLTYPE *LowerButtonSelect)(
 709        IDvdControl *This);
 710
 711    HRESULT (STDMETHODCALLTYPE *LeftButtonSelect)(
 712        IDvdControl *This);
 713
 714    HRESULT (STDMETHODCALLTYPE *RightButtonSelect)(
 715        IDvdControl *This);
 716
 717    HRESULT (STDMETHODCALLTYPE *ButtonActivate)(
 718        IDvdControl *This);
 719
 720    HRESULT (STDMETHODCALLTYPE *ButtonSelectActivate)(
 721        IDvdControl *This,
 722        ULONG button);
 723
 724    HRESULT (STDMETHODCALLTYPE *StillOff)(
 725        IDvdControl *This);
 726
 727    HRESULT (STDMETHODCALLTYPE *PauseOn)(
 728        IDvdControl *This);
 729
 730    HRESULT (STDMETHODCALLTYPE *PauseOff)(
 731        IDvdControl *This);
 732
 733    HRESULT (STDMETHODCALLTYPE *MenuLanguageSelect)(
 734        IDvdControl *This,
 735        LCID language);
 736
 737    HRESULT (STDMETHODCALLTYPE *AudioStreamChange)(
 738        IDvdControl *This,
 739        ULONG audio);
 740
 741    HRESULT (STDMETHODCALLTYPE *SubpictureStreamChange)(
 742        IDvdControl *This,
 743        ULONG subpicture,
 744        WINBOOL enable);
 745
 746    HRESULT (STDMETHODCALLTYPE *AngleChange)(
 747        IDvdControl *This,
 748        ULONG angle);
 749
 750    HRESULT (STDMETHODCALLTYPE *ParentalLevelSelect)(
 751        IDvdControl *This,
 752        ULONG level);
 753
 754    HRESULT (STDMETHODCALLTYPE *ParentalCountrySelect)(
 755        IDvdControl *This,
 756        WORD country);
 757
 758    HRESULT (STDMETHODCALLTYPE *KaraokeAudioPresentationModeChange)(
 759        IDvdControl *This,
 760        ULONG mode);
 761
 762    HRESULT (STDMETHODCALLTYPE *VideoModePreference)(
 763        IDvdControl *This,
 764        ULONG mode);
 765
 766    HRESULT (STDMETHODCALLTYPE *SetRoot)(
 767        IDvdControl *This,
 768        const WCHAR *path);
 769
 770    HRESULT (STDMETHODCALLTYPE *MouseActivate)(
 771        IDvdControl *This,
 772        POINT point);
 773
 774    HRESULT (STDMETHODCALLTYPE *MouseSelect)(
 775        IDvdControl *This,
 776        POINT point);
 777
 778    HRESULT (STDMETHODCALLTYPE *ChapterPlayAutoStop)(
 779        IDvdControl *This,
 780        ULONG title,
 781        ULONG chapter,
 782        ULONG count);
 783
 784    END_INTERFACE
 785} IDvdControlVtbl;
 786
 787interface IDvdControl {
 788    CONST_VTBL IDvdControlVtbl* lpVtbl;
 789};
 790
 791#ifdef COBJMACROS
 792#ifndef WIDL_C_INLINE_WRAPPERS
 793/*** IUnknown methods ***/
 794#define IDvdControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 795#define IDvdControl_AddRef(This) (This)->lpVtbl->AddRef(This)
 796#define IDvdControl_Release(This) (This)->lpVtbl->Release(This)
 797/*** IDvdControl methods ***/
 798#define IDvdControl_TitlePlay(This,title) (This)->lpVtbl->TitlePlay(This,title)
 799#define IDvdControl_ChapterPlay(This,title,chapter) (This)->lpVtbl->ChapterPlay(This,title,chapter)
 800#define IDvdControl_TimePlay(This,title,time) (This)->lpVtbl->TimePlay(This,title,time)
 801#define IDvdControl_StopForResume(This) (This)->lpVtbl->StopForResume(This)
 802#define IDvdControl_GoUp(This) (This)->lpVtbl->GoUp(This)
 803#define IDvdControl_TimeSearch(This,time) (This)->lpVtbl->TimeSearch(This,time)
 804#define IDvdControl_ChapterSearch(This,chapter) (This)->lpVtbl->ChapterSearch(This,chapter)
 805#define IDvdControl_PrevPGSearch(This) (This)->lpVtbl->PrevPGSearch(This)
 806#define IDvdControl_TopPGSearch(This) (This)->lpVtbl->TopPGSearch(This)
 807#define IDvdControl_NextPGSearch(This) (This)->lpVtbl->NextPGSearch(This)
 808#define IDvdControl_ForwardScan(This,speed) (This)->lpVtbl->ForwardScan(This,speed)
 809#define IDvdControl_BackwardScan(This,speed) (This)->lpVtbl->BackwardScan(This,speed)
 810#define IDvdControl_MenuCall(This,id) (This)->lpVtbl->MenuCall(This,id)
 811#define IDvdControl_Resume(This) (This)->lpVtbl->Resume(This)
 812#define IDvdControl_UpperButtonSelect(This) (This)->lpVtbl->UpperButtonSelect(This)
 813#define IDvdControl_LowerButtonSelect(This) (This)->lpVtbl->LowerButtonSelect(This)
 814#define IDvdControl_LeftButtonSelect(This) (This)->lpVtbl->LeftButtonSelect(This)
 815#define IDvdControl_RightButtonSelect(This) (This)->lpVtbl->RightButtonSelect(This)
 816#define IDvdControl_ButtonActivate(This) (This)->lpVtbl->ButtonActivate(This)
 817#define IDvdControl_ButtonSelectActivate(This,button) (This)->lpVtbl->ButtonSelectActivate(This,button)
 818#define IDvdControl_StillOff(This) (This)->lpVtbl->StillOff(This)
 819#define IDvdControl_PauseOn(This) (This)->lpVtbl->PauseOn(This)
 820#define IDvdControl_PauseOff(This) (This)->lpVtbl->PauseOff(This)
 821#define IDvdControl_MenuLanguageSelect(This,language) (This)->lpVtbl->MenuLanguageSelect(This,language)
 822#define IDvdControl_AudioStreamChange(This,audio) (This)->lpVtbl->AudioStreamChange(This,audio)
 823#define IDvdControl_SubpictureStreamChange(This,subpicture,enable) (This)->lpVtbl->SubpictureStreamChange(This,subpicture,enable)
 824#define IDvdControl_AngleChange(This,angle) (This)->lpVtbl->AngleChange(This,angle)
 825#define IDvdControl_ParentalLevelSelect(This,level) (This)->lpVtbl->ParentalLevelSelect(This,level)
 826#define IDvdControl_ParentalCountrySelect(This,country) (This)->lpVtbl->ParentalCountrySelect(This,country)
 827#define IDvdControl_KaraokeAudioPresentationModeChange(This,mode) (This)->lpVtbl->KaraokeAudioPresentationModeChange(This,mode)
 828#define IDvdControl_VideoModePreference(This,mode) (This)->lpVtbl->VideoModePreference(This,mode)
 829#define IDvdControl_SetRoot(This,path) (This)->lpVtbl->SetRoot(This,path)
 830#define IDvdControl_MouseActivate(This,point) (This)->lpVtbl->MouseActivate(This,point)
 831#define IDvdControl_MouseSelect(This,point) (This)->lpVtbl->MouseSelect(This,point)
 832#define IDvdControl_ChapterPlayAutoStop(This,title,chapter,count) (This)->lpVtbl->ChapterPlayAutoStop(This,title,chapter,count)
 833#else
 834/*** IUnknown methods ***/
 835static inline HRESULT IDvdControl_QueryInterface(IDvdControl* This,REFIID riid,void **ppvObject) {
 836    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 837}
 838static inline ULONG IDvdControl_AddRef(IDvdControl* This) {
 839    return This->lpVtbl->AddRef(This);
 840}
 841static inline ULONG IDvdControl_Release(IDvdControl* This) {
 842    return This->lpVtbl->Release(This);
 843}
 844/*** IDvdControl methods ***/
 845static inline HRESULT IDvdControl_TitlePlay(IDvdControl* This,ULONG title) {
 846    return This->lpVtbl->TitlePlay(This,title);
 847}
 848static inline HRESULT IDvdControl_ChapterPlay(IDvdControl* This,ULONG title,ULONG chapter) {
 849    return This->lpVtbl->ChapterPlay(This,title,chapter);
 850}
 851static inline HRESULT IDvdControl_TimePlay(IDvdControl* This,ULONG title,ULONG time) {
 852    return This->lpVtbl->TimePlay(This,title,time);
 853}
 854static inline HRESULT IDvdControl_StopForResume(IDvdControl* This) {
 855    return This->lpVtbl->StopForResume(This);
 856}
 857static inline HRESULT IDvdControl_GoUp(IDvdControl* This) {
 858    return This->lpVtbl->GoUp(This);
 859}
 860static inline HRESULT IDvdControl_TimeSearch(IDvdControl* This,ULONG time) {
 861    return This->lpVtbl->TimeSearch(This,time);
 862}
 863static inline HRESULT IDvdControl_ChapterSearch(IDvdControl* This,ULONG chapter) {
 864    return This->lpVtbl->ChapterSearch(This,chapter);
 865}
 866static inline HRESULT IDvdControl_PrevPGSearch(IDvdControl* This) {
 867    return This->lpVtbl->PrevPGSearch(This);
 868}
 869static inline HRESULT IDvdControl_TopPGSearch(IDvdControl* This) {
 870    return This->lpVtbl->TopPGSearch(This);
 871}
 872static inline HRESULT IDvdControl_NextPGSearch(IDvdControl* This) {
 873    return This->lpVtbl->NextPGSearch(This);
 874}
 875static inline HRESULT IDvdControl_ForwardScan(IDvdControl* This,double speed) {
 876    return This->lpVtbl->ForwardScan(This,speed);
 877}
 878static inline HRESULT IDvdControl_BackwardScan(IDvdControl* This,double speed) {
 879    return This->lpVtbl->BackwardScan(This,speed);
 880}
 881static inline HRESULT IDvdControl_MenuCall(IDvdControl* This,DVD_MENU_ID id) {
 882    return This->lpVtbl->MenuCall(This,id);
 883}
 884static inline HRESULT IDvdControl_Resume(IDvdControl* This) {
 885    return This->lpVtbl->Resume(This);
 886}
 887static inline HRESULT IDvdControl_UpperButtonSelect(IDvdControl* This) {
 888    return This->lpVtbl->UpperButtonSelect(This);
 889}
 890static inline HRESULT IDvdControl_LowerButtonSelect(IDvdControl* This) {
 891    return This->lpVtbl->LowerButtonSelect(This);
 892}
 893static inline HRESULT IDvdControl_LeftButtonSelect(IDvdControl* This) {
 894    return This->lpVtbl->LeftButtonSelect(This);
 895}
 896static inline HRESULT IDvdControl_RightButtonSelect(IDvdControl* This) {
 897    return This->lpVtbl->RightButtonSelect(This);
 898}
 899static inline HRESULT IDvdControl_ButtonActivate(IDvdControl* This) {
 900    return This->lpVtbl->ButtonActivate(This);
 901}
 902static inline HRESULT IDvdControl_ButtonSelectActivate(IDvdControl* This,ULONG button) {
 903    return This->lpVtbl->ButtonSelectActivate(This,button);
 904}
 905static inline HRESULT IDvdControl_StillOff(IDvdControl* This) {
 906    return This->lpVtbl->StillOff(This);
 907}
 908static inline HRESULT IDvdControl_PauseOn(IDvdControl* This) {
 909    return This->lpVtbl->PauseOn(This);
 910}
 911static inline HRESULT IDvdControl_PauseOff(IDvdControl* This) {
 912    return This->lpVtbl->PauseOff(This);
 913}
 914static inline HRESULT IDvdControl_MenuLanguageSelect(IDvdControl* This,LCID language) {
 915    return This->lpVtbl->MenuLanguageSelect(This,language);
 916}
 917static inline HRESULT IDvdControl_AudioStreamChange(IDvdControl* This,ULONG audio) {
 918    return This->lpVtbl->AudioStreamChange(This,audio);
 919}
 920static inline HRESULT IDvdControl_SubpictureStreamChange(IDvdControl* This,ULONG subpicture,WINBOOL enable) {
 921    return This->lpVtbl->SubpictureStreamChange(This,subpicture,enable);
 922}
 923static inline HRESULT IDvdControl_AngleChange(IDvdControl* This,ULONG angle) {
 924    return This->lpVtbl->AngleChange(This,angle);
 925}
 926static inline HRESULT IDvdControl_ParentalLevelSelect(IDvdControl* This,ULONG level) {
 927    return This->lpVtbl->ParentalLevelSelect(This,level);
 928}
 929static inline HRESULT IDvdControl_ParentalCountrySelect(IDvdControl* This,WORD country) {
 930    return This->lpVtbl->ParentalCountrySelect(This,country);
 931}
 932static inline HRESULT IDvdControl_KaraokeAudioPresentationModeChange(IDvdControl* This,ULONG mode) {
 933    return This->lpVtbl->KaraokeAudioPresentationModeChange(This,mode);
 934}
 935static inline HRESULT IDvdControl_VideoModePreference(IDvdControl* This,ULONG mode) {
 936    return This->lpVtbl->VideoModePreference(This,mode);
 937}
 938static inline HRESULT IDvdControl_SetRoot(IDvdControl* This,const WCHAR *path) {
 939    return This->lpVtbl->SetRoot(This,path);
 940}
 941static inline HRESULT IDvdControl_MouseActivate(IDvdControl* This,POINT point) {
 942    return This->lpVtbl->MouseActivate(This,point);
 943}
 944static inline HRESULT IDvdControl_MouseSelect(IDvdControl* This,POINT point) {
 945    return This->lpVtbl->MouseSelect(This,point);
 946}
 947static inline HRESULT IDvdControl_ChapterPlayAutoStop(IDvdControl* This,ULONG title,ULONG chapter,ULONG count) {
 948    return This->lpVtbl->ChapterPlayAutoStop(This,title,chapter,count);
 949}
 950#endif
 951#endif
 952
 953#endif
 954
 955
 956#endif  /* __IDvdControl_INTERFACE_DEFINED__ */
 957
 958/*****************************************************************************
 959 * IDvdInfo interface
 960 */
 961#ifndef __IDvdInfo_INTERFACE_DEFINED__
 962#define __IDvdInfo_INTERFACE_DEFINED__
 963
 964DEFINE_GUID(IID_IDvdInfo, 0xa70efe60, 0xe2a3, 0x11d0, 0xa9,0xbe, 0x00,0xaa,0x00,0x61,0xbe,0x93);
 965#if defined(__cplusplus) && !defined(CINTERFACE)
 966MIDL_INTERFACE("a70efe60-e2a3-11d0-a9be-00aa0061be93")
 967IDvdInfo : public IUnknown
 968{
 969    virtual HRESULT STDMETHODCALLTYPE GetCurrentDomain(
 970        DVD_DOMAIN *domain) = 0;
 971
 972    virtual HRESULT STDMETHODCALLTYPE GetCurrentLocation(
 973        DVD_PLAYBACK_LOCATION *location) = 0;
 974
 975    virtual HRESULT STDMETHODCALLTYPE GetTotalTitleTime(
 976        ULONG *time) = 0;
 977
 978    virtual HRESULT STDMETHODCALLTYPE GetCurrentButton(
 979        ULONG *count,
 980        ULONG *current) = 0;
 981
 982    virtual HRESULT STDMETHODCALLTYPE GetCurrentAngle(
 983        ULONG *count,
 984        ULONG *current) = 0;
 985
 986    virtual HRESULT STDMETHODCALLTYPE GetCurrentAudio(
 987        ULONG *count,
 988        ULONG *current) = 0;
 989
 990    virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpicture(
 991        ULONG *count,
 992        ULONG *current,
 993        WINBOOL *enable) = 0;
 994
 995    virtual HRESULT STDMETHODCALLTYPE GetCurrentUOPS(
 996        VALID_UOP_SOMTHING_OR_OTHER *uops) = 0;
 997
 998    virtual HRESULT STDMETHODCALLTYPE GetAllSPRMs(
 999        SPRMARRAY *regs) = 0;
1000
1001    virtual HRESULT STDMETHODCALLTYPE GetAllGPRMs(
1002        GPRMARRAY *regs) = 0;
1003
1004    virtual HRESULT STDMETHODCALLTYPE GetAudioLanguage(
1005        ULONG stream,
1006        LCID *language) = 0;
1007
1008    virtual HRESULT STDMETHODCALLTYPE GetSubpictureLanguage(
1009        ULONG stream,
1010        LCID *language) = 0;
1011
1012    virtual HRESULT STDMETHODCALLTYPE GetTitleAttributes(
1013        ULONG title,
1014        DVD_ATR *attr) = 0;
1015
1016    virtual HRESULT STDMETHODCALLTYPE GetVMGAttributes(
1017        DVD_ATR *attr) = 0;
1018
1019    virtual HRESULT STDMETHODCALLTYPE GetCurrentVideoAttributes(
1020        DVD_VideoATR *attr) = 0;
1021
1022    virtual HRESULT STDMETHODCALLTYPE GetCurrentAudioAttributes(
1023        DVD_AudioATR *attr) = 0;
1024
1025    virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpictureAttributes(
1026        DVD_SubpictureATR *attr) = 0;
1027
1028    virtual HRESULT STDMETHODCALLTYPE GetCurrentVolumeInfo(
1029        ULONG *volume_count,
1030        ULONG *current,
1031        DVD_DISC_SIDE *side,
1032        ULONG *title_count) = 0;
1033
1034    virtual HRESULT STDMETHODCALLTYPE GetDVDTextInfo(
1035        BYTE *text_manager,
1036        ULONG size,
1037        ULONG *ret_size) = 0;
1038
1039    virtual HRESULT STDMETHODCALLTYPE GetPlayerParentalLevel(
1040        ULONG *level,
1041        ULONG *country_code) = 0;
1042
1043    virtual HRESULT STDMETHODCALLTYPE GetNumberOfChapters(
1044        ULONG title,
1045        ULONG *count) = 0;
1046
1047    virtual HRESULT STDMETHODCALLTYPE GetTitleParentalLevels(
1048        ULONG title,
1049        ULONG *levels) = 0;
1050
1051    virtual HRESULT STDMETHODCALLTYPE GetRoot(
1052        char *path,
1053        ULONG size,
1054        ULONG *ret_size) = 0;
1055
1056};
1057#ifdef __CRT_UUID_DECL
1058__CRT_UUID_DECL(IDvdInfo, 0xa70efe60, 0xe2a3, 0x11d0, 0xa9,0xbe, 0x00,0xaa,0x00,0x61,0xbe,0x93)
1059#endif
1060#else
1061typedef struct IDvdInfoVtbl {
1062    BEGIN_INTERFACE
1063
1064    /*** IUnknown methods ***/
1065    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1066        IDvdInfo *This,
1067        REFIID riid,
1068        void **ppvObject);
1069
1070    ULONG (STDMETHODCALLTYPE *AddRef)(
1071        IDvdInfo *This);
1072
1073    ULONG (STDMETHODCALLTYPE *Release)(
1074        IDvdInfo *This);
1075
1076    /*** IDvdInfo methods ***/
1077    HRESULT (STDMETHODCALLTYPE *GetCurrentDomain)(
1078        IDvdInfo *This,
1079        DVD_DOMAIN *domain);
1080
1081    HRESULT (STDMETHODCALLTYPE *GetCurrentLocation)(
1082        IDvdInfo *This,
1083        DVD_PLAYBACK_LOCATION *location);
1084
1085    HRESULT (STDMETHODCALLTYPE *GetTotalTitleTime)(
1086        IDvdInfo *This,
1087        ULONG *time);
1088
1089    HRESULT (STDMETHODCALLTYPE *GetCurrentButton)(
1090        IDvdInfo *This,
1091        ULONG *count,
1092        ULONG *current);
1093
1094    HRESULT (STDMETHODCALLTYPE *GetCurrentAngle)(
1095        IDvdInfo *This,
1096        ULONG *count,
1097        ULONG *current);
1098
1099    HRESULT (STDMETHODCALLTYPE *GetCurrentAudio)(
1100        IDvdInfo *This,
1101        ULONG *count,
1102        ULONG *current);
1103
1104    HRESULT (STDMETHODCALLTYPE *GetCurrentSubpicture)(
1105        IDvdInfo *This,
1106        ULONG *count,
1107        ULONG *current,
1108        WINBOOL *enable);
1109
1110    HRESULT (STDMETHODCALLTYPE *GetCurrentUOPS)(
1111        IDvdInfo *This,
1112        VALID_UOP_SOMTHING_OR_OTHER *uops);
1113
1114    HRESULT (STDMETHODCALLTYPE *GetAllSPRMs)(
1115        IDvdInfo *This,
1116        SPRMARRAY *regs);
1117
1118    HRESULT (STDMETHODCALLTYPE *GetAllGPRMs)(
1119        IDvdInfo *This,
1120        GPRMARRAY *regs);
1121
1122    HRESULT (STDMETHODCALLTYPE *GetAudioLanguage)(
1123        IDvdInfo *This,
1124        ULONG stream,
1125        LCID *language);
1126
1127    HRESULT (STDMETHODCALLTYPE *GetSubpictureLanguage)(
1128        IDvdInfo *This,
1129        ULONG stream,
1130        LCID *language);
1131
1132    HRESULT (STDMETHODCALLTYPE *GetTitleAttributes)(
1133        IDvdInfo *This,
1134        ULONG title,
1135        DVD_ATR *attr);
1136
1137    HRESULT (STDMETHODCALLTYPE *GetVMGAttributes)(
1138        IDvdInfo *This,
1139        DVD_ATR *attr);
1140
1141    HRESULT (STDMETHODCALLTYPE *GetCurrentVideoAttributes)(
1142        IDvdInfo *This,
1143        DVD_VideoATR *attr);
1144
1145    HRESULT (STDMETHODCALLTYPE *GetCurrentAudioAttributes)(
1146        IDvdInfo *This,
1147        DVD_AudioATR *attr);
1148
1149    HRESULT (STDMETHODCALLTYPE *GetCurrentSubpictureAttributes)(
1150        IDvdInfo *This,
1151        DVD_SubpictureATR *attr);
1152
1153    HRESULT (STDMETHODCALLTYPE *GetCurrentVolumeInfo)(
1154        IDvdInfo *This,
1155        ULONG *volume_count,
1156        ULONG *current,
1157        DVD_DISC_SIDE *side,
1158        ULONG *title_count);
1159
1160    HRESULT (STDMETHODCALLTYPE *GetDVDTextInfo)(
1161        IDvdInfo *This,
1162        BYTE *text_manager,
1163        ULONG size,
1164        ULONG *ret_size);
1165
1166    HRESULT (STDMETHODCALLTYPE *GetPlayerParentalLevel)(
1167        IDvdInfo *This,
1168        ULONG *level,
1169        ULONG *country_code);
1170
1171    HRESULT (STDMETHODCALLTYPE *GetNumberOfChapters)(
1172        IDvdInfo *This,
1173        ULONG title,
1174        ULONG *count);
1175
1176    HRESULT (STDMETHODCALLTYPE *GetTitleParentalLevels)(
1177        IDvdInfo *This,
1178        ULONG title,
1179        ULONG *levels);
1180
1181    HRESULT (STDMETHODCALLTYPE *GetRoot)(
1182        IDvdInfo *This,
1183        char *path,
1184        ULONG size,
1185        ULONG *ret_size);
1186
1187    END_INTERFACE
1188} IDvdInfoVtbl;
1189
1190interface IDvdInfo {
1191    CONST_VTBL IDvdInfoVtbl* lpVtbl;
1192};
1193
1194#ifdef COBJMACROS
1195#ifndef WIDL_C_INLINE_WRAPPERS
1196/*** IUnknown methods ***/
1197#define IDvdInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1198#define IDvdInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
1199#define IDvdInfo_Release(This) (This)->lpVtbl->Release(This)
1200/*** IDvdInfo methods ***/
1201#define IDvdInfo_GetCurrentDomain(This,domain) (This)->lpVtbl->GetCurrentDomain(This,domain)
1202#define IDvdInfo_GetCurrentLocation(This,location) (This)->lpVtbl->GetCurrentLocation(This,location)
1203#define IDvdInfo_GetTotalTitleTime(This,time) (This)->lpVtbl->GetTotalTitleTime(This,time)
1204#define IDvdInfo_GetCurrentButton(This,count,current) (This)->lpVtbl->GetCurrentButton(This,count,current)
1205#define IDvdInfo_GetCurrentAngle(This,count,current) (This)->lpVtbl->GetCurrentAngle(This,count,current)
1206#define IDvdInfo_GetCurrentAudio(This,count,current) (This)->lpVtbl->GetCurrentAudio(This,count,current)
1207#define IDvdInfo_GetCurrentSubpicture(This,count,current,enable) (This)->lpVtbl->GetCurrentSubpicture(This,count,current,enable)
1208#define IDvdInfo_GetCurrentUOPS(This,uops) (This)->lpVtbl->GetCurrentUOPS(This,uops)
1209#define IDvdInfo_GetAllSPRMs(This,regs) (This)->lpVtbl->GetAllSPRMs(This,regs)
1210#define IDvdInfo_GetAllGPRMs(This,regs) (This)->lpVtbl->GetAllGPRMs(This,regs)
1211#define IDvdInfo_GetAudioLanguage(This,stream,language) (This)->lpVtbl->GetAudioLanguage(This,stream,language)
1212#define IDvdInfo_GetSubpictureLanguage(This,stream,language) (This)->lpVtbl->GetSubpictureLanguage(This,stream,language)
1213#define IDvdInfo_GetTitleAttributes(This,title,attr) (This)->lpVtbl->GetTitleAttributes(This,title,attr)
1214#define IDvdInfo_GetVMGAttributes(This,attr) (This)->lpVtbl->GetVMGAttributes(This,attr)
1215#define IDvdInfo_GetCurrentVideoAttributes(This,attr) (This)->lpVtbl->GetCurrentVideoAttributes(This,attr)
1216#define IDvdInfo_GetCurrentAudioAttributes(This,attr) (This)->lpVtbl->GetCurrentAudioAttributes(This,attr)
1217#define IDvdInfo_GetCurrentSubpictureAttributes(This,attr) (This)->lpVtbl->GetCurrentSubpictureAttributes(This,attr)
1218#define IDvdInfo_GetCurrentVolumeInfo(This,volume_count,current,side,title_count) (This)->lpVtbl->GetCurrentVolumeInfo(This,volume_count,current,side,title_count)
1219#define IDvdInfo_GetDVDTextInfo(This,text_manager,size,ret_size) (This)->lpVtbl->GetDVDTextInfo(This,text_manager,size,ret_size)
1220#define IDvdInfo_GetPlayerParentalLevel(This,level,country_code) (This)->lpVtbl->GetPlayerParentalLevel(This,level,country_code)
1221#define IDvdInfo_GetNumberOfChapters(This,title,count) (This)->lpVtbl->GetNumberOfChapters(This,title,count)
1222#define IDvdInfo_GetTitleParentalLevels(This,title,levels) (This)->lpVtbl->GetTitleParentalLevels(This,title,levels)
1223#define IDvdInfo_GetRoot(This,path,size,ret_size) (This)->lpVtbl->GetRoot(This,path,size,ret_size)
1224#else
1225/*** IUnknown methods ***/
1226static inline HRESULT IDvdInfo_QueryInterface(IDvdInfo* This,REFIID riid,void **ppvObject) {
1227    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1228}
1229static inline ULONG IDvdInfo_AddRef(IDvdInfo* This) {
1230    return This->lpVtbl->AddRef(This);
1231}
1232static inline ULONG IDvdInfo_Release(IDvdInfo* This) {
1233    return This->lpVtbl->Release(This);
1234}
1235/*** IDvdInfo methods ***/
1236static inline HRESULT IDvdInfo_GetCurrentDomain(IDvdInfo* This,DVD_DOMAIN *domain) {
1237    return This->lpVtbl->GetCurrentDomain(This,domain);
1238}
1239static inline HRESULT IDvdInfo_GetCurrentLocation(IDvdInfo* This,DVD_PLAYBACK_LOCATION *location) {
1240    return This->lpVtbl->GetCurrentLocation(This,location);
1241}
1242static inline HRESULT IDvdInfo_GetTotalTitleTime(IDvdInfo* This,ULONG *time) {
1243    return This->lpVtbl->GetTotalTitleTime(This,time);
1244}
1245static inline HRESULT IDvdInfo_GetCurrentButton(IDvdInfo* This,ULONG *count,ULONG *current) {
1246    return This->lpVtbl->GetCurrentButton(This,count,current);
1247}
1248static inline HRESULT IDvdInfo_GetCurrentAngle(IDvdInfo* This,ULONG *count,ULONG *current) {
1249    return This->lpVtbl->GetCurrentAngle(This,count,current);
1250}
1251static inline HRESULT IDvdInfo_GetCurrentAudio(IDvdInfo* This,ULONG *count,ULONG *current) {
1252    return This->lpVtbl->GetCurrentAudio(This,count,current);
1253}
1254static inline HRESULT IDvdInfo_GetCurrentSubpicture(IDvdInfo* This,ULONG *count,ULONG *current,WINBOOL *enable) {
1255    return This->lpVtbl->GetCurrentSubpicture(This,count,current,enable);
1256}
1257static inline HRESULT IDvdInfo_GetCurrentUOPS(IDvdInfo* This,VALID_UOP_SOMTHING_OR_OTHER *uops) {
1258    return This->lpVtbl->GetCurrentUOPS(This,uops);
1259}
1260static inline HRESULT IDvdInfo_GetAllSPRMs(IDvdInfo* This,SPRMARRAY *regs) {
1261    return This->lpVtbl->GetAllSPRMs(This,regs);
1262}
1263static inline HRESULT IDvdInfo_GetAllGPRMs(IDvdInfo* This,GPRMARRAY *regs) {
1264    return This->lpVtbl->GetAllGPRMs(This,regs);
1265}
1266static inline HRESULT IDvdInfo_GetAudioLanguage(IDvdInfo* This,ULONG stream,LCID *language) {
1267    return This->lpVtbl->GetAudioLanguage(This,stream,language);
1268}
1269static inline HRESULT IDvdInfo_GetSubpictureLanguage(IDvdInfo* This,ULONG stream,LCID *language) {
1270    return This->lpVtbl->GetSubpictureLanguage(This,stream,language);
1271}
1272static inline HRESULT IDvdInfo_GetTitleAttributes(IDvdInfo* This,ULONG title,DVD_ATR *attr) {
1273    return This->lpVtbl->GetTitleAttributes(This,title,attr);
1274}
1275static inline HRESULT IDvdInfo_GetVMGAttributes(IDvdInfo* This,DVD_ATR *attr) {
1276    return This->lpVtbl->GetVMGAttributes(This,attr);
1277}
1278static inline HRESULT IDvdInfo_GetCurrentVideoAttributes(IDvdInfo* This,DVD_VideoATR *attr) {
1279    return This->lpVtbl->GetCurrentVideoAttributes(This,attr);
1280}
1281static inline HRESULT IDvdInfo_GetCurrentAudioAttributes(IDvdInfo* This,DVD_AudioATR *attr) {
1282    return This->lpVtbl->GetCurrentAudioAttributes(This,attr);
1283}
1284static inline HRESULT IDvdInfo_GetCurrentSubpictureAttributes(IDvdInfo* This,DVD_SubpictureATR *attr) {
1285    return This->lpVtbl->GetCurrentSubpictureAttributes(This,attr);
1286}
1287static inline HRESULT IDvdInfo_GetCurrentVolumeInfo(IDvdInfo* This,ULONG *volume_count,ULONG *current,DVD_DISC_SIDE *side,ULONG *title_count) {
1288    return This->lpVtbl->GetCurrentVolumeInfo(This,volume_count,current,side,title_count);
1289}
1290static inline HRESULT IDvdInfo_GetDVDTextInfo(IDvdInfo* This,BYTE *text_manager,ULONG size,ULONG *ret_size) {
1291    return This->lpVtbl->GetDVDTextInfo(This,text_manager,size,ret_size);
1292}
1293static inline HRESULT IDvdInfo_GetPlayerParentalLevel(IDvdInfo* This,ULONG *level,ULONG *country_code) {
1294    return This->lpVtbl->GetPlayerParentalLevel(This,level,country_code);
1295}
1296static inline HRESULT IDvdInfo_GetNumberOfChapters(IDvdInfo* This,ULONG title,ULONG *count) {
1297    return This->lpVtbl->GetNumberOfChapters(This,title,count);
1298}
1299static inline HRESULT IDvdInfo_GetTitleParentalLevels(IDvdInfo* This,ULONG title,ULONG *levels) {
1300    return This->lpVtbl->GetTitleParentalLevels(This,title,levels);
1301}
1302static inline HRESULT IDvdInfo_GetRoot(IDvdInfo* This,char *path,ULONG size,ULONG *ret_size) {
1303    return This->lpVtbl->GetRoot(This,path,size,ret_size);
1304}
1305#endif
1306#endif
1307
1308#endif
1309
1310
1311#endif  /* __IDvdInfo_INTERFACE_DEFINED__ */
1312
1313/*****************************************************************************
1314 * IDvdCmd interface
1315 */
1316#ifndef __IDvdCmd_INTERFACE_DEFINED__
1317#define __IDvdCmd_INTERFACE_DEFINED__
1318
1319DEFINE_GUID(IID_IDvdCmd, 0x5a4a97e4, 0x94ee, 0x4a55, 0x97,0x51, 0x74,0xb5,0x64,0x3a,0xa2,0x7d);
1320#if defined(__cplusplus) && !defined(CINTERFACE)
1321MIDL_INTERFACE("5a4a97e4-94ee-4a55-9751-74b5643aa27d")
1322IDvdCmd : public IUnknown
1323{
1324    virtual HRESULT STDMETHODCALLTYPE WaitForStart(
1325        ) = 0;
1326
1327    virtual HRESULT STDMETHODCALLTYPE WaitForEnd(
1328        ) = 0;
1329
1330};
1331#ifdef __CRT_UUID_DECL
1332__CRT_UUID_DECL(IDvdCmd, 0x5a4a97e4, 0x94ee, 0x4a55, 0x97,0x51, 0x74,0xb5,0x64,0x3a,0xa2,0x7d)
1333#endif
1334#else
1335typedef struct IDvdCmdVtbl {
1336    BEGIN_INTERFACE
1337
1338    /*** IUnknown methods ***/
1339    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1340        IDvdCmd *This,
1341        REFIID riid,
1342        void **ppvObject);
1343
1344    ULONG (STDMETHODCALLTYPE *AddRef)(
1345        IDvdCmd *This);
1346
1347    ULONG (STDMETHODCALLTYPE *Release)(
1348        IDvdCmd *This);
1349
1350    /*** IDvdCmd methods ***/
1351    HRESULT (STDMETHODCALLTYPE *WaitForStart)(
1352        IDvdCmd *This);
1353
1354    HRESULT (STDMETHODCALLTYPE *WaitForEnd)(
1355        IDvdCmd *This);
1356
1357    END_INTERFACE
1358} IDvdCmdVtbl;
1359
1360interface IDvdCmd {
1361    CONST_VTBL IDvdCmdVtbl* lpVtbl;
1362};
1363
1364#ifdef COBJMACROS
1365#ifndef WIDL_C_INLINE_WRAPPERS
1366/*** IUnknown methods ***/
1367#define IDvdCmd_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1368#define IDvdCmd_AddRef(This) (This)->lpVtbl->AddRef(This)
1369#define IDvdCmd_Release(This) (This)->lpVtbl->Release(This)
1370/*** IDvdCmd methods ***/
1371#define IDvdCmd_WaitForStart(This) (This)->lpVtbl->WaitForStart(This)
1372#define IDvdCmd_WaitForEnd(This) (This)->lpVtbl->WaitForEnd(This)
1373#else
1374/*** IUnknown methods ***/
1375static inline HRESULT IDvdCmd_QueryInterface(IDvdCmd* This,REFIID riid,void **ppvObject) {
1376    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1377}
1378static inline ULONG IDvdCmd_AddRef(IDvdCmd* This) {
1379    return This->lpVtbl->AddRef(This);
1380}
1381static inline ULONG IDvdCmd_Release(IDvdCmd* This) {
1382    return This->lpVtbl->Release(This);
1383}
1384/*** IDvdCmd methods ***/
1385static inline HRESULT IDvdCmd_WaitForStart(IDvdCmd* This) {
1386    return This->lpVtbl->WaitForStart(This);
1387}
1388static inline HRESULT IDvdCmd_WaitForEnd(IDvdCmd* This) {
1389    return This->lpVtbl->WaitForEnd(This);
1390}
1391#endif
1392#endif
1393
1394#endif
1395
1396
1397#endif  /* __IDvdCmd_INTERFACE_DEFINED__ */
1398
1399/*****************************************************************************
1400 * IDvdState interface
1401 */
1402#ifndef __IDvdState_INTERFACE_DEFINED__
1403#define __IDvdState_INTERFACE_DEFINED__
1404
1405DEFINE_GUID(IID_IDvdState, 0x86303d6d, 0x1c4a, 0x4087, 0xab,0x42, 0xf7,0x11,0x16,0x70,0x48,0xef);
1406#if defined(__cplusplus) && !defined(CINTERFACE)
1407MIDL_INTERFACE("86303d6d-1c4a-4087-ab42-f711167048ef")
1408IDvdState : public IUnknown
1409{
1410    virtual HRESULT STDMETHODCALLTYPE GetDiscID(
1411        ULONGLONG *id) = 0;
1412
1413    virtual HRESULT STDMETHODCALLTYPE GetParentalLevel(
1414        ULONG *level) = 0;
1415
1416};
1417#ifdef __CRT_UUID_DECL
1418__CRT_UUID_DECL(IDvdState, 0x86303d6d, 0x1c4a, 0x4087, 0xab,0x42, 0xf7,0x11,0x16,0x70,0x48,0xef)
1419#endif
1420#else
1421typedef struct IDvdStateVtbl {
1422    BEGIN_INTERFACE
1423
1424    /*** IUnknown methods ***/
1425    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1426        IDvdState *This,
1427        REFIID riid,
1428        void **ppvObject);
1429
1430    ULONG (STDMETHODCALLTYPE *AddRef)(
1431        IDvdState *This);
1432
1433    ULONG (STDMETHODCALLTYPE *Release)(
1434        IDvdState *This);
1435
1436    /*** IDvdState methods ***/
1437    HRESULT (STDMETHODCALLTYPE *GetDiscID)(
1438        IDvdState *This,
1439        ULONGLONG *id);
1440
1441    HRESULT (STDMETHODCALLTYPE *GetParentalLevel)(
1442        IDvdState *This,
1443        ULONG *level);
1444
1445    END_INTERFACE
1446} IDvdStateVtbl;
1447
1448interface IDvdState {
1449    CONST_VTBL IDvdStateVtbl* lpVtbl;
1450};
1451
1452#ifdef COBJMACROS
1453#ifndef WIDL_C_INLINE_WRAPPERS
1454/*** IUnknown methods ***/
1455#define IDvdState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1456#define IDvdState_AddRef(This) (This)->lpVtbl->AddRef(This)
1457#define IDvdState_Release(This) (This)->lpVtbl->Release(This)
1458/*** IDvdState methods ***/
1459#define IDvdState_GetDiscID(This,id) (This)->lpVtbl->GetDiscID(This,id)
1460#define IDvdState_GetParentalLevel(This,level) (This)->lpVtbl->GetParentalLevel(This,level)
1461#else
1462/*** IUnknown methods ***/
1463static inline HRESULT IDvdState_QueryInterface(IDvdState* This,REFIID riid,void **ppvObject) {
1464    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1465}
1466static inline ULONG IDvdState_AddRef(IDvdState* This) {
1467    return This->lpVtbl->AddRef(This);
1468}
1469static inline ULONG IDvdState_Release(IDvdState* This) {
1470    return This->lpVtbl->Release(This);
1471}
1472/*** IDvdState methods ***/
1473static inline HRESULT IDvdState_GetDiscID(IDvdState* This,ULONGLONG *id) {
1474    return This->lpVtbl->GetDiscID(This,id);
1475}
1476static inline HRESULT IDvdState_GetParentalLevel(IDvdState* This,ULONG *level) {
1477    return This->lpVtbl->GetParentalLevel(This,level);
1478}
1479#endif
1480#endif
1481
1482#endif
1483
1484
1485#endif  /* __IDvdState_INTERFACE_DEFINED__ */
1486
1487/*****************************************************************************
1488 * IDvdControl2 interface
1489 */
1490#ifndef __IDvdControl2_INTERFACE_DEFINED__
1491#define __IDvdControl2_INTERFACE_DEFINED__
1492
1493DEFINE_GUID(IID_IDvdControl2, 0x33bc7430, 0xeec0, 0x11d2, 0x82,0x01, 0x00,0xa0,0xc9,0xd7,0x48,0x42);
1494#if defined(__cplusplus) && !defined(CINTERFACE)
1495MIDL_INTERFACE("33bc7430-eec0-11d2-8201-00a0c9d74842")
1496IDvdControl2 : public IUnknown
1497{
1498    virtual HRESULT STDMETHODCALLTYPE PlayTitle(
1499        ULONG title,
1500        DWORD flags,
1501        IDvdCmd **cmd) = 0;
1502
1503    virtual HRESULT STDMETHODCALLTYPE PlayChapterInTitle(
1504        ULONG title,
1505        ULONG chapter,
1506        DWORD flags,
1507        IDvdCmd **cmd) = 0;
1508
1509    virtual HRESULT STDMETHODCALLTYPE PlayTimeInTitle(
1510        ULONG title,
1511        DVD_HMSF_TIMECODE *time,
1512        DWORD flags,
1513        IDvdCmd **cmd) = 0;
1514
1515    virtual HRESULT STDMETHODCALLTYPE Stop(
1516        ) = 0;
1517
1518    virtual HRESULT STDMETHODCALLTYPE ReturnFromSubmenu(
1519        DWORD flags,
1520        IDvdCmd **cmd) = 0;
1521
1522    virtual HRESULT STDMETHODCALLTYPE PlayAtTime(
1523        DVD_HMSF_TIMECODE *time,
1524        DWORD flags,
1525        IDvdCmd **cmd) = 0;
1526
1527    virtual HRESULT STDMETHODCALLTYPE PlayChapter(
1528        ULONG chapter,
1529        DWORD flags,
1530        IDvdCmd **cmd) = 0;
1531
1532    virtual HRESULT STDMETHODCALLTYPE PlayPrevChapter(
1533        DWORD flags,
1534        IDvdCmd **cmd) = 0;
1535
1536    virtual HRESULT STDMETHODCALLTYPE ReplayChapter(
1537        DWORD flags,
1538        IDvdCmd **cmd) = 0;
1539
1540    virtual HRESULT STDMETHODCALLTYPE PlayNextChapter(
1541        DWORD flags,
1542        IDvdCmd **cmd) = 0;
1543
1544    virtual HRESULT STDMETHODCALLTYPE PlayForwards(
1545        double speed,
1546        DWORD flags,
1547        IDvdCmd **cmd) = 0;
1548
1549    virtual HRESULT STDMETHODCALLTYPE PlayBackwards(
1550        double speed,
1551        DWORD flags,
1552        IDvdCmd **cmd) = 0;
1553
1554    virtual HRESULT STDMETHODCALLTYPE ShowMenu(
1555        DVD_MENU_ID id,
1556        DWORD flags,
1557        IDvdCmd **cmd) = 0;
1558
1559    virtual HRESULT STDMETHODCALLTYPE Resume(
1560        DWORD flags,
1561        IDvdCmd **cmd) = 0;
1562
1563    virtual HRESULT STDMETHODCALLTYPE SelectRelativeButton(
1564        DVD_RELATIVE_BUTTON button) = 0;
1565
1566    virtual HRESULT STDMETHODCALLTYPE ActivateButton(
1567        ) = 0;
1568
1569    virtual HRESULT STDMETHODCALLTYPE SelectButton(
1570        ULONG button) = 0;
1571
1572    virtual HRESULT STDMETHODCALLTYPE SelectAndActivateButton(
1573        ULONG button) = 0;
1574
1575    virtual HRESULT STDMETHODCALLTYPE StillOff(
1576        ) = 0;
1577
1578    virtual HRESULT STDMETHODCALLTYPE Pause(
1579        WINBOOL enable) = 0;
1580
1581    virtual HRESULT STDMETHODCALLTYPE SelectAudioStream(
1582        ULONG stream,
1583        DWORD flags,
1584        IDvdCmd **cmd) = 0;
1585
1586    virtual HRESULT STDMETHODCALLTYPE SelectSubpictureStream(
1587        ULONG stream,
1588        DWORD flags,
1589        IDvdCmd **cmd) = 0;
1590
1591    virtual HRESULT STDMETHODCALLTYPE SetSubpictureState(
1592        WINBOOL enable,
1593        DWORD flags,
1594        IDvdCmd **cmd) = 0;
1595
1596    virtual HRESULT STDMETHODCALLTYPE SelectAngle(
1597        ULONG angle,
1598        DWORD flags,
1599        IDvdCmd **cmd) = 0;
1600
1601    virtual HRESULT STDMETHODCALLTYPE SelectParentalLevel(
1602        ULONG level) = 0;
1603
1604    virtual HRESULT STDMETHODCALLTYPE SelectParentalCountry(
1605        BYTE country[2]) = 0;
1606
1607    virtual HRESULT STDMETHODCALLTYPE SelectKaraokeAudioPresentationMode(
1608        ULONG mode) = 0;
1609
1610    virtual HRESULT STDMETHODCALLTYPE SelectVideoModePreference(
1611        ULONG mode) = 0;
1612
1613    virtual HRESULT STDMETHODCALLTYPE SetDVDDirectory(
1614        const WCHAR *path) = 0;
1615
1616    virtual HRESULT STDMETHODCALLTYPE ActivateAtPosition(
1617        POINT point) = 0;
1618
1619    virtual HRESULT STDMETHODCALLTYPE SelectAtPosition(
1620        POINT point) = 0;
1621
1622    virtual HRESULT STDMETHODCALLTYPE PlayChaptersAutoStop(
1623        ULONG title,
1624        ULONG chapter,
1625        ULONG count,
1626        DWORD flags,
1627        IDvdCmd **cmd) = 0;
1628
1629    virtual HRESULT STDMETHODCALLTYPE AcceptParentalLevelChange(
1630        WINBOOL accept) = 0;
1631
1632    virtual HRESULT STDMETHODCALLTYPE SetOption(
1633        DVD_OPTION_FLAG flag,
1634        WINBOOL option) = 0;
1635
1636    virtual HRESULT STDMETHODCALLTYPE SetState(
1637        IDvdState *state,
1638        DWORD flags,
1639        IDvdCmd **cmd) = 0;
1640
1641    virtual HRESULT STDMETHODCALLTYPE PlayPeriodInTitleAutoStop(
1642        ULONG title,
1643        DVD_HMSF_TIMECODE *start_time,
1644        DVD_HMSF_TIMECODE *end_time,
1645        DWORD flags,
1646        IDvdCmd **cmd) = 0;
1647
1648    virtual HRESULT STDMETHODCALLTYPE SetGRPM(
1649        ULONG index,
1650        WORD value,
1651        DWORD flags,
1652        IDvdCmd **cmd) = 0;
1653
1654    virtual HRESULT STDMETHODCALLTYPE SelectDefaultMenuLanguage(
1655        LCID language) = 0;
1656
1657    virtual HRESULT STDMETHODCALLTYPE SelectDefaultAudioLanguage(
1658        LCID language,
1659        DVD_AUDIO_LANG_EXT extension) = 0;
1660
1661    virtual HRESULT STDMETHODCALLTYPE SelectDefaultSubpictureLanguage(
1662        LCID language,
1663        DVD_SUBPICTURE_LANG_EXT extension) = 0;
1664
1665};
1666#ifdef __CRT_UUID_DECL
1667__CRT_UUID_DECL(IDvdControl2, 0x33bc7430, 0xeec0, 0x11d2, 0x82,0x01, 0x00,0xa0,0xc9,0xd7,0x48,0x42)
1668#endif
1669#else
1670typedef struct IDvdControl2Vtbl {
1671    BEGIN_INTERFACE
1672
1673    /*** IUnknown methods ***/
1674    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1675        IDvdControl2 *This,
1676        REFIID riid,
1677        void **ppvObject);
1678
1679    ULONG (STDMETHODCALLTYPE *AddRef)(
1680        IDvdControl2 *This);
1681
1682    ULONG (STDMETHODCALLTYPE *Release)(
1683        IDvdControl2 *This);
1684
1685    /*** IDvdControl2 methods ***/
1686    HRESULT (STDMETHODCALLTYPE *PlayTitle)(
1687        IDvdControl2 *This,
1688        ULONG title,
1689        DWORD flags,
1690        IDvdCmd **cmd);
1691
1692    HRESULT (STDMETHODCALLTYPE *PlayChapterInTitle)(
1693        IDvdControl2 *This,
1694        ULONG title,
1695        ULONG chapter,
1696        DWORD flags,
1697        IDvdCmd **cmd);
1698
1699    HRESULT (STDMETHODCALLTYPE *PlayTimeInTitle)(
1700        IDvdControl2 *This,
1701        ULONG title,
1702        DVD_HMSF_TIMECODE *time,
1703        DWORD flags,
1704        IDvdCmd **cmd);
1705
1706    HRESULT (STDMETHODCALLTYPE *Stop)(
1707        IDvdControl2 *This);
1708
1709    HRESULT (STDMETHODCALLTYPE *ReturnFromSubmenu)(
1710        IDvdControl2 *This,
1711        DWORD flags,
1712        IDvdCmd **cmd);
1713
1714    HRESULT (STDMETHODCALLTYPE *PlayAtTime)(
1715        IDvdControl2 *This,
1716        DVD_HMSF_TIMECODE *time,
1717        DWORD flags,
1718        IDvdCmd **cmd);
1719
1720    HRESULT (STDMETHODCALLTYPE *PlayChapter)(
1721        IDvdControl2 *This,
1722        ULONG chapter,
1723        DWORD flags,
1724        IDvdCmd **cmd);
1725
1726    HRESULT (STDMETHODCALLTYPE *PlayPrevChapter)(
1727        IDvdControl2 *This,
1728        DWORD flags,
1729        IDvdCmd **cmd);
1730
1731    HRESULT (STDMETHODCALLTYPE *ReplayChapter)(
1732        IDvdControl2 *This,
1733        DWORD flags,
1734        IDvdCmd **cmd);
1735
1736    HRESULT (STDMETHODCALLTYPE *PlayNextChapter)(
1737        IDvdControl2 *This,
1738        DWORD flags,
1739        IDvdCmd **cmd);
1740
1741    HRESULT (STDMETHODCALLTYPE *PlayForwards)(
1742        IDvdControl2 *This,
1743        double speed,
1744        DWORD flags,
1745        IDvdCmd **cmd);
1746
1747    HRESULT (STDMETHODCALLTYPE *PlayBackwards)(
1748        IDvdControl2 *This,
1749        double speed,
1750        DWORD flags,
1751        IDvdCmd **cmd);
1752
1753    HRESULT (STDMETHODCALLTYPE *ShowMenu)(
1754        IDvdControl2 *This,
1755        DVD_MENU_ID id,
1756        DWORD flags,
1757        IDvdCmd **cmd);
1758
1759    HRESULT (STDMETHODCALLTYPE *Resume)(
1760        IDvdControl2 *This,
1761        DWORD flags,
1762        IDvdCmd **cmd);
1763
1764    HRESULT (STDMETHODCALLTYPE *SelectRelativeButton)(
1765        IDvdControl2 *This,
1766        DVD_RELATIVE_BUTTON button);
1767
1768    HRESULT (STDMETHODCALLTYPE *ActivateButton)(
1769        IDvdControl2 *This);
1770
1771    HRESULT (STDMETHODCALLTYPE *SelectButton)(
1772        IDvdControl2 *This,
1773        ULONG button);
1774
1775    HRESULT (STDMETHODCALLTYPE *SelectAndActivateButton)(
1776        IDvdControl2 *This,
1777        ULONG button);
1778
1779    HRESULT (STDMETHODCALLTYPE *StillOff)(
1780        IDvdControl2 *This);
1781
1782    HRESULT (STDMETHODCALLTYPE *Pause)(
1783        IDvdControl2 *This,
1784        WINBOOL enable);
1785
1786    HRESULT (STDMETHODCALLTYPE *SelectAudioStream)(
1787        IDvdControl2 *This,
1788        ULONG stream,
1789        DWORD flags,
1790        IDvdCmd **cmd);
1791
1792    HRESULT (STDMETHODCALLTYPE *SelectSubpictureStream)(
1793        IDvdControl2 *This,
1794        ULONG stream,
1795        DWORD flags,
1796        IDvdCmd **cmd);
1797
1798    HRESULT (STDMETHODCALLTYPE *SetSubpictureState)(
1799        IDvdControl2 *This,
1800        WINBOOL enable,
1801        DWORD flags,
1802        IDvdCmd **cmd);
1803
1804    HRESULT (STDMETHODCALLTYPE *SelectAngle)(
1805        IDvdControl2 *This,
1806        ULONG angle,
1807        DWORD flags,
1808        IDvdCmd **cmd);
1809
1810    HRESULT (STDMETHODCALLTYPE *SelectParentalLevel)(
1811        IDvdControl2 *This,
1812        ULONG level);
1813
1814    HRESULT (STDMETHODCALLTYPE *SelectParentalCountry)(
1815        IDvdControl2 *This,
1816        BYTE country[2]);
1817
1818    HRESULT (STDMETHODCALLTYPE *SelectKaraokeAudioPresentationMode)(
1819        IDvdControl2 *This,
1820        ULONG mode);
1821
1822    HRESULT (STDMETHODCALLTYPE *SelectVideoModePreference)(
1823        IDvdControl2 *This,
1824        ULONG mode);
1825
1826    HRESULT (STDMETHODCALLTYPE *SetDVDDirectory)(
1827        IDvdControl2 *This,
1828        const WCHAR *path);
1829
1830    HRESULT (STDMETHODCALLTYPE *ActivateAtPosition)(
1831        IDvdControl2 *This,
1832        POINT point);
1833
1834    HRESULT (STDMETHODCALLTYPE *SelectAtPosition)(
1835        IDvdControl2 *This,
1836        POINT point);
1837
1838    HRESULT (STDMETHODCALLTYPE *PlayChaptersAutoStop)(
1839        IDvdControl2 *This,
1840        ULONG title,
1841        ULONG chapter,
1842        ULONG count,
1843        DWORD flags,
1844        IDvdCmd **cmd);
1845
1846    HRESULT (STDMETHODCALLTYPE *AcceptParentalLevelChange)(
1847        IDvdControl2 *This,
1848        WINBOOL accept);
1849
1850    HRESULT (STDMETHODCALLTYPE *SetOption)(
1851        IDvdControl2 *This,
1852        DVD_OPTION_FLAG flag,
1853        WINBOOL option);
1854
1855    HRESULT (STDMETHODCALLTYPE *SetState)(
1856        IDvdControl2 *This,
1857        IDvdState *state,
1858        DWORD flags,
1859        IDvdCmd **cmd);
1860
1861    HRESULT (STDMETHODCALLTYPE *PlayPeriodInTitleAutoStop)(
1862        IDvdControl2 *This,
1863        ULONG title,
1864        DVD_HMSF_TIMECODE *start_time,
1865        DVD_HMSF_TIMECODE *end_time,
1866        DWORD flags,
1867        IDvdCmd **cmd);
1868
1869    HRESULT (STDMETHODCALLTYPE *SetGRPM)(
1870        IDvdControl2 *This,
1871        ULONG index,
1872        WORD value,
1873        DWORD flags,
1874        IDvdCmd **cmd);
1875
1876    HRESULT (STDMETHODCALLTYPE *SelectDefaultMenuLanguage)(
1877        IDvdControl2 *This,
1878        LCID language);
1879
1880    HRESULT (STDMETHODCALLTYPE *SelectDefaultAudioLanguage)(
1881        IDvdControl2 *This,
1882        LCID language,
1883        DVD_AUDIO_LANG_EXT extension);
1884
1885    HRESULT (STDMETHODCALLTYPE *SelectDefaultSubpictureLanguage)(
1886        IDvdControl2 *This,
1887        LCID language,
1888        DVD_SUBPICTURE_LANG_EXT extension);
1889
1890    END_INTERFACE
1891} IDvdControl2Vtbl;
1892
1893interface IDvdControl2 {
1894    CONST_VTBL IDvdControl2Vtbl* lpVtbl;
1895};
1896
1897#ifdef COBJMACROS
1898#ifndef WIDL_C_INLINE_WRAPPERS
1899/*** IUnknown methods ***/
1900#define IDvdControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1901#define IDvdControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
1902#define IDvdControl2_Release(This) (This)->lpVtbl->Release(This)
1903/*** IDvdControl2 methods ***/
1904#define IDvdControl2_PlayTitle(This,title,flags,cmd) (This)->lpVtbl->PlayTitle(This,title,flags,cmd)
1905#define IDvdControl2_PlayChapterInTitle(This,title,chapter,flags,cmd) (This)->lpVtbl->PlayChapterInTitle(This,title,chapter,flags,cmd)
1906#define IDvdControl2_PlayTimeInTitle(This,title,time,flags,cmd) (This)->lpVtbl->PlayTimeInTitle(This,title,time,flags,cmd)
1907#define IDvdControl2_Stop(This) (This)->lpVtbl->Stop(This)
1908#define IDvdControl2_ReturnFromSubmenu(This,flags,cmd) (This)->lpVtbl->ReturnFromSubmenu(This,flags,cmd)
1909#define IDvdControl2_PlayAtTime(This,time,flags,cmd) (This)->lpVtbl->PlayAtTime(This,time,flags,cmd)
1910#define IDvdControl2_PlayChapter(This,chapter,flags,cmd) (This)->lpVtbl->PlayChapter(This,chapter,flags,cmd)
1911#define IDvdControl2_PlayPrevChapter(This,flags,cmd) (This)->lpVtbl->PlayPrevChapter(This,flags,cmd)
1912#define IDvdControl2_ReplayChapter(This,flags,cmd) (This)->lpVtbl->ReplayChapter(This,flags,cmd)
1913#define IDvdControl2_PlayNextChapter(This,flags,cmd) (This)->lpVtbl->PlayNextChapter(This,flags,cmd)
1914#define IDvdControl2_PlayForwards(This,speed,flags,cmd) (This)->lpVtbl->PlayForwards(This,speed,flags,cmd)
1915#define IDvdControl2_PlayBackwards(This,speed,flags,cmd) (This)->lpVtbl->PlayBackwards(This,speed,flags,cmd)
1916#define IDvdControl2_ShowMenu(This,id,flags,cmd) (This)->lpVtbl->ShowMenu(This,id,flags,cmd)
1917#define IDvdControl2_Resume(This,flags,cmd) (This)->lpVtbl->Resume(This,flags,cmd)
1918#define IDvdControl2_SelectRelativeButton(This,button) (This)->lpVtbl->SelectRelativeButton(This,button)
1919#define IDvdControl2_ActivateButton(This) (This)->lpVtbl->ActivateButton(This)
1920#define IDvdControl2_SelectButton(This,button) (This)->lpVtbl->SelectButton(This,button)
1921#define IDvdControl2_SelectAndActivateButton(This,button) (This)->lpVtbl->SelectAndActivateButton(This,button)
1922#define IDvdControl2_StillOff(This) (This)->lpVtbl->StillOff(This)
1923#define IDvdControl2_Pause(This,enable) (This)->lpVtbl->Pause(This,enable)
1924#define IDvdControl2_SelectAudioStream(This,stream,flags,cmd) (This)->lpVtbl->SelectAudioStream(This,stream,flags,cmd)
1925#define IDvdControl2_SelectSubpictureStream(This,stream,flags,cmd) (This)->lpVtbl->SelectSubpictureStream(This,stream,flags,cmd)
1926#define IDvdControl2_SetSubpictureState(This,enable,flags,cmd) (This)->lpVtbl->SetSubpictureState(This,enable,flags,cmd)
1927#define IDvdControl2_SelectAngle(This,angle,flags,cmd) (This)->lpVtbl->SelectAngle(This,angle,flags,cmd)
1928#define IDvdControl2_SelectParentalLevel(This,level) (This)->lpVtbl->SelectParentalLevel(This,level)
1929#define IDvdControl2_SelectParentalCountry(This,country) (This)->lpVtbl->SelectParentalCountry(This,country)
1930#define IDvdControl2_SelectKaraokeAudioPresentationMode(This,mode) (This)->lpVtbl->SelectKaraokeAudioPresentationMode(This,mode)
1931#define IDvdControl2_SelectVideoModePreference(This,mode) (This)->lpVtbl->SelectVideoModePreference(This,mode)
1932#define IDvdControl2_SetDVDDirectory(This,path) (This)->lpVtbl->SetDVDDirectory(This,path)
1933#define IDvdControl2_ActivateAtPosition(This,point) (This)->lpVtbl->ActivateAtPosition(This,point)
1934#define IDvdControl2_SelectAtPosition(This,point) (This)->lpVtbl->SelectAtPosition(This,point)
1935#define IDvdControl2_PlayChaptersAutoStop(This,title,chapter,count,flags,cmd) (This)->lpVtbl->PlayChaptersAutoStop(This,title,chapter,count,flags,cmd)
1936#define IDvdControl2_AcceptParentalLevelChange(This,accept) (This)->lpVtbl->AcceptParentalLevelChange(This,accept)
1937#define IDvdControl2_SetOption(This,flag,option) (This)->lpVtbl->SetOption(This,flag,option)
1938#define IDvdControl2_SetState(This,state,flags,cmd) (This)->lpVtbl->SetState(This,state,flags,cmd)
1939#define IDvdControl2_PlayPeriodInTitleAutoStop(This,title,start_time,end_time,flags,cmd) (This)->lpVtbl->PlayPeriodInTitleAutoStop(This,title,start_time,end_time,flags,cmd)
1940#define IDvdControl2_SetGRPM(This,index,value,flags,cmd) (This)->lpVtbl->SetGRPM(This,index,value,flags,cmd)
1941#define IDvdControl2_SelectDefaultMenuLanguage(This,language) (This)->lpVtbl->SelectDefaultMenuLanguage(This,language)
1942#define IDvdControl2_SelectDefaultAudioLanguage(This,language,extension) (This)->lpVtbl->SelectDefaultAudioLanguage(This,language,extension)
1943#define IDvdControl2_SelectDefaultSubpictureLanguage(This,language,extension) (This)->lpVtbl->SelectDefaultSubpictureLanguage(This,language,extension)
1944#else
1945/*** IUnknown methods ***/
1946static inline HRESULT IDvdControl2_QueryInterface(IDvdControl2* This,REFIID riid,void **ppvObject) {
1947    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1948}
1949static inline ULONG IDvdControl2_AddRef(IDvdControl2* This) {
1950    return This->lpVtbl->AddRef(This);
1951}
1952static inline ULONG IDvdControl2_Release(IDvdControl2* This) {
1953    return This->lpVtbl->Release(This);
1954}
1955/*** IDvdControl2 methods ***/
1956static inline HRESULT IDvdControl2_PlayTitle(IDvdControl2* This,ULONG title,DWORD flags,IDvdCmd **cmd) {
1957    return This->lpVtbl->PlayTitle(This,title,flags,cmd);
1958}
1959static inline HRESULT IDvdControl2_PlayChapterInTitle(IDvdControl2* This,ULONG title,ULONG chapter,DWORD flags,IDvdCmd **cmd) {
1960    return This->lpVtbl->PlayChapterInTitle(This,title,chapter,flags,cmd);
1961}
1962static inline HRESULT IDvdControl2_PlayTimeInTitle(IDvdControl2* This,ULONG title,DVD_HMSF_TIMECODE *time,DWORD flags,IDvdCmd **cmd) {
1963    return This->lpVtbl->PlayTimeInTitle(This,title,time,flags,cmd);
1964}
1965static inline HRESULT IDvdControl2_Stop(IDvdControl2* This) {
1966    return This->lpVtbl->Stop(This);
1967}
1968static inline HRESULT IDvdControl2_ReturnFromSubmenu(IDvdControl2* This,DWORD flags,IDvdCmd **cmd) {
1969    return This->lpVtbl->ReturnFromSubmenu(This,flags,cmd);
1970}
1971static inline HRESULT IDvdControl2_PlayAtTime(IDvdControl2* This,DVD_HMSF_TIMECODE *time,DWORD flags,IDvdCmd **cmd) {
1972    return This->lpVtbl->PlayAtTime(This,time,flags,cmd);
1973}
1974static inline HRESULT IDvdControl2_PlayChapter(IDvdControl2* This,ULONG chapter,DWORD flags,IDvdCmd **cmd) {
1975    return This->lpVtbl->PlayChapter(This,chapter,flags,cmd);
1976}
1977static inline HRESULT IDvdControl2_PlayPrevChapter(IDvdControl2* This,DWORD flags,IDvdCmd **cmd) {
1978    return This->lpVtbl->PlayPrevChapter(This,flags,cmd);
1979}
1980static inline HRESULT IDvdControl2_ReplayChapter(IDvdControl2* This,DWORD flags,IDvdCmd **cmd) {
1981    return This->lpVtbl->ReplayChapter(This,flags,cmd);
1982}
1983static inline HRESULT IDvdControl2_PlayNextChapter(IDvdControl2* This,DWORD flags,IDvdCmd **cmd) {
1984    return This->lpVtbl->PlayNextChapter(This,flags,cmd);
1985}
1986static inline HRESULT IDvdControl2_PlayForwards(IDvdControl2* This,double speed,DWORD flags,IDvdCmd **cmd) {
1987    return This->lpVtbl->PlayForwards(This,speed,flags,cmd);
1988}
1989static inline HRESULT IDvdControl2_PlayBackwards(IDvdControl2* This,double speed,DWORD flags,IDvdCmd **cmd) {
1990    return This->lpVtbl->PlayBackwards(This,speed,flags,cmd);
1991}
1992static inline HRESULT IDvdControl2_ShowMenu(IDvdControl2* This,DVD_MENU_ID id,DWORD flags,IDvdCmd **cmd) {
1993    return This->lpVtbl->ShowMenu(This,id,flags,cmd);
1994}
1995static inline HRESULT IDvdControl2_Resume(IDvdControl2* This,DWORD flags,IDvdCmd **cmd) {
1996    return This->lpVtbl->Resume(This,flags,cmd);
1997}
1998static inline HRESULT IDvdControl2_SelectRelativeButton(IDvdControl2* This,DVD_RELATIVE_BUTTON button) {
1999    return This->lpVtbl->SelectRelativeButton(This,button);
2000}
2001static inline HRESULT IDvdControl2_ActivateButton(IDvdControl2* This) {
2002    return This->lpVtbl->ActivateButton(This);
2003}
2004static inline HRESULT IDvdControl2_SelectButton(IDvdControl2* This,ULONG button) {
2005    return This->lpVtbl->SelectButton(This,button);
2006}
2007static inline HRESULT IDvdControl2_SelectAndActivateButton(IDvdControl2* This,ULONG button) {
2008    return This->lpVtbl->SelectAndActivateButton(This,button);
2009}
2010static inline HRESULT IDvdControl2_StillOff(IDvdControl2* This) {
2011    return This->lpVtbl->StillOff(This);
2012}
2013static inline HRESULT IDvdControl2_Pause(IDvdControl2* This,WINBOOL enable) {
2014    return This->lpVtbl->Pause(This,enable);
2015}
2016static inline HRESULT IDvdControl2_SelectAudioStream(IDvdControl2* This,ULONG stream,DWORD flags,IDvdCmd **cmd) {
2017    return This->lpVtbl->SelectAudioStream(This,stream,flags,cmd);
2018}
2019static inline HRESULT IDvdControl2_SelectSubpictureStream(IDvdControl2* This,ULONG stream,DWORD flags,IDvdCmd **cmd) {
2020    return This->lpVtbl->SelectSubpictureStream(This,stream,flags,cmd);
2021}
2022static inline HRESULT IDvdControl2_SetSubpictureState(IDvdControl2* This,WINBOOL enable,DWORD flags,IDvdCmd **cmd) {
2023    return This->lpVtbl->SetSubpictureState(This,enable,flags,cmd);
2024}
2025static inline HRESULT IDvdControl2_SelectAngle(IDvdControl2* This,ULONG angle,DWORD flags,IDvdCmd **cmd) {
2026    return This->lpVtbl->SelectAngle(This,angle,flags,cmd);
2027}
2028static inline HRESULT IDvdControl2_SelectParentalLevel(IDvdControl2* This,ULONG level) {
2029    return This->lpVtbl->SelectParentalLevel(This,level);
2030}
2031static inline HRESULT IDvdControl2_SelectParentalCountry(IDvdControl2* This,BYTE country[2]) {
2032    return This->lpVtbl->SelectParentalCountry(This,country);
2033}
2034static inline HRESULT IDvdControl2_SelectKaraokeAudioPresentationMode(IDvdControl2* This,ULONG mode) {
2035    return This->lpVtbl->SelectKaraokeAudioPresentationMode(This,mode);
2036}
2037static inline HRESULT IDvdControl2_SelectVideoModePreference(IDvdControl2* This,ULONG mode) {
2038    return This->lpVtbl->SelectVideoModePreference(This,mode);
2039}
2040static inline HRESULT IDvdControl2_SetDVDDirectory(IDvdControl2* This,const WCHAR *path) {
2041    return This->lpVtbl->SetDVDDirectory(This,path);
2042}
2043static inline HRESULT IDvdControl2_ActivateAtPosition(IDvdControl2* This,POINT point) {
2044    return This->lpVtbl->ActivateAtPosition(This,point);
2045}
2046static inline HRESULT IDvdControl2_SelectAtPosition(IDvdControl2* This,POINT point) {
2047    return This->lpVtbl->SelectAtPosition(This,point);
2048}
2049static inline HRESULT IDvdControl2_PlayChaptersAutoStop(IDvdControl2* This,ULONG title,ULONG chapter,ULONG count,DWORD flags,IDvdCmd **cmd) {
2050    return This->lpVtbl->PlayChaptersAutoStop(This,title,chapter,count,flags,cmd);
2051}
2052static inline HRESULT IDvdControl2_AcceptParentalLevelChange(IDvdControl2* This,WINBOOL accept) {
2053    return This->lpVtbl->AcceptParentalLevelChange(This,accept);
2054}
2055static inline HRESULT IDvdControl2_SetOption(IDvdControl2* This,DVD_OPTION_FLAG flag,WINBOOL option) {
2056    return This->lpVtbl->SetOption(This,flag,option);
2057}
2058static inline HRESULT IDvdControl2_SetState(IDvdControl2* This,IDvdState *state,DWORD flags,IDvdCmd **cmd) {
2059    return This->lpVtbl->SetState(This,state,flags,cmd);
2060}
2061static inline HRESULT IDvdControl2_PlayPeriodInTitleAutoStop(IDvdControl2* This,ULONG title,DVD_HMSF_TIMECODE *start_time,DVD_HMSF_TIMECODE *end_time,DWORD flags,IDvdCmd **cmd) {
2062    return This->lpVtbl->PlayPeriodInTitleAutoStop(This,title,start_time,end_time,flags,cmd);
2063}
2064static inline HRESULT IDvdControl2_SetGRPM(IDvdControl2* This,ULONG index,WORD value,DWORD flags,IDvdCmd **cmd) {
2065    return This->lpVtbl->SetGRPM(This,index,value,flags,cmd);
2066}
2067static inline HRESULT IDvdControl2_SelectDefaultMenuLanguage(IDvdControl2* This,LCID language) {
2068    return This->lpVtbl->SelectDefaultMenuLanguage(This,language);
2069}
2070static inline HRESULT IDvdControl2_SelectDefaultAudioLanguage(IDvdControl2* This,LCID language,DVD_AUDIO_LANG_EXT extension) {
2071    return This->lpVtbl->SelectDefaultAudioLanguage(This,language,extension);
2072}
2073static inline HRESULT IDvdControl2_SelectDefaultSubpictureLanguage(IDvdControl2* This,LCID language,DVD_SUBPICTURE_LANG_EXT extension) {
2074    return This->lpVtbl->SelectDefaultSubpictureLanguage(This,language,extension);
2075}
2076#endif
2077#endif
2078
2079#endif
2080
2081
2082#endif  /* __IDvdControl2_INTERFACE_DEFINED__ */
2083
2084/*****************************************************************************
2085 * IDvdInfo2 interface
2086 */
2087#ifndef __IDvdInfo2_INTERFACE_DEFINED__
2088#define __IDvdInfo2_INTERFACE_DEFINED__
2089
2090DEFINE_GUID(IID_IDvdInfo2, 0x34151510, 0xeec0, 0x11d2, 0x82,0x01, 0x00,0xa0,0xc9,0xd7,0x48,0x42);
2091#if defined(__cplusplus) && !defined(CINTERFACE)
2092MIDL_INTERFACE("34151510-eec0-11d2-8201-00a0c9d74842")
2093IDvdInfo2 : public IUnknown
2094{
2095    virtual HRESULT STDMETHODCALLTYPE GetCurrentDomain(
2096        DVD_DOMAIN *domain) = 0;
2097
2098    virtual HRESULT STDMETHODCALLTYPE GetCurrentLocation(
2099        DVD_PLAYBACK_LOCATION2 *location) = 0;
2100
2101    virtual HRESULT STDMETHODCALLTYPE GetTotalTitleTime(
2102        DVD_HMSF_TIMECODE *time,
2103        ULONG *flags) = 0;
2104
2105    virtual HRESULT STDMETHODCALLTYPE GetCurrentButton(
2106        ULONG *count,
2107        ULONG *current) = 0;
2108
2109    virtual HRESULT STDMETHODCALLTYPE GetCurrentAngle(
2110        ULONG *count,
2111        ULONG *current) = 0;
2112
2113    virtual HRESULT STDMETHODCALLTYPE GetCurrentAudio(
2114        ULONG *count,
2115        ULONG *current) = 0;
2116
2117    virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpicture(
2118        ULONG *count,
2119        ULONG *current,
2120        WINBOOL *enable) = 0;
2121
2122    virtual HRESULT STDMETHODCALLTYPE GetCurrentUOPS(
2123        ULONG *uops) = 0;
2124
2125    virtual HRESULT STDMETHODCALLTYPE GetAllSPRMs(
2126        SPRMARRAY *regs) = 0;
2127
2128    virtual HRESULT STDMETHODCALLTYPE GetAllGPRMs(
2129        GPRMARRAY *regs) = 0;
2130
2131    virtual HRESULT STDMETHODCALLTYPE GetAudioLanguage(
2132        ULONG stream,
2133        LCID *language) = 0;
2134
2135    virtual HRESULT STDMETHODCALLTYPE GetSubpictureLanguage(
2136        ULONG stream,
2137        LCID *language) = 0;
2138
2139    virtual HRESULT STDMETHODCALLTYPE GetTitleAttributes(
2140        ULONG index,
2141        DVD_MenuAttributes *menu,
2142        DVD_TitleAttributes *title) = 0;
2143
2144    virtual HRESULT STDMETHODCALLTYPE GetVMGAttributes(
2145        DVD_MenuAttributes *attr) = 0;
2146
2147    virtual HRESULT STDMETHODCALLTYPE GetVideoAttributes(
2148        DVD_VideoAttributes *attr) = 0;
2149
2150    virtual HRESULT STDMETHODCALLTYPE GetAudioAttributes(
2151        ULONG stream,
2152        DVD_AudioAttributes *attr) = 0;
2153
2154    virtual HRESULT STDMETHODCALLTYPE GetKaraokeAttributes(
2155        ULONG stream,
2156        DVD_KaraokeAttributes *attr) = 0;
2157
2158    virtual HRESULT STDMETHODCALLTYPE GetSubpictureAttributes(
2159        ULONG stream,
2160        DVD_SubpictureAttributes *attr) = 0;
2161
2162    virtual HRESULT STDMETHODCALLTYPE GetCurrentVolumeInfo(
2163        ULONG *volume_count,
2164        ULONG *current,
2165        DVD_DISC_SIDE *side,
2166        ULONG *title_count) = 0;
2167
2168    virtual HRESULT STDMETHODCALLTYPE GetDVDTextNumberOfLanguages(
2169        ULONG *count) = 0;
2170
2171    virtual HRESULT STDMETHODCALLTYPE GetDVDTextLanguageInfo(
2172        ULONG index,
2173        ULONG *string_count,
2174        LCID *language,
2175        enum DVD_TextCharSet *character_set) = 0;
2176
2177    virtual HRESULT STDMETHODCALLTYPE GetDVDTextStringAsNative(
2178        ULONG lang_index,
2179        ULONG string_index,
2180        BYTE *string,
2181        ULONG size,
2182        ULONG *ret_size,
2183        enum DVD_TextStringType *type) = 0;
2184
2185    virtual HRESULT STDMETHODCALLTYPE GetDVDTextStringAsUnicode(
2186        ULONG lang_index,
2187        ULONG string_index,
2188        WCHAR *string,
2189        ULONG size,
2190        ULONG *ret_size,
2191        enum DVD_TextStringType *type) = 0;
2192
2193    virtual HRESULT STDMETHODCALLTYPE GetPlayerParentalLevel(
2194        ULONG *level,
2195        BYTE country_code[2]) = 0;
2196
2197    virtual HRESULT STDMETHODCALLTYPE GetNumberOfChapters(
2198        ULONG title,
2199        ULONG *count) = 0;
2200
2201    virtual HRESULT STDMETHODCALLTYPE GetTitleParentalLevels(
2202        ULONG title,
2203        ULONG *levels) = 0;
2204
2205    virtual HRESULT STDMETHODCALLTYPE GetDVDDirectory(
2206        WCHAR *path,
2207        ULONG size,
2208        ULONG *ret_size) = 0;
2209
2210    virtual HRESULT STDMETHODCALLTYPE IsAudioStreamEnabled(
2211        ULONG stream,
2212        WINBOOL *enable) = 0;
2213
2214    virtual HRESULT STDMETHODCALLTYPE GetDiscID(
2215        const WCHAR *path,
2216        ULONGLONG *id) = 0;
2217
2218    virtual HRESULT STDMETHODCALLTYPE GetState(
2219        IDvdState **state) = 0;
2220
2221    virtual HRESULT STDMETHODCALLTYPE GetMenuLanguages(
2222        LCID *languages,
2223        ULONG count,
2224        ULONG *ret_count) = 0;
2225
2226    virtual HRESULT STDMETHODCALLTYPE GetButtonAtPosition(
2227        POINT point,
2228        ULONG *button) = 0;
2229
2230    virtual HRESULT STDMETHODCALLTYPE GetCmdFromEvent(
2231        LONG_PTR param,
2232        IDvdCmd **cmd) = 0;
2233
2234    virtual HRESULT STDMETHODCALLTYPE GetDefaultMenuLanguage(
2235        LCID *language) = 0;
2236
2237    virtual HRESULT STDMETHODCALLTYPE GetDefaultAudioLanguage(
2238        LCID *language,
2239        DVD_AUDIO_LANG_EXT *extension) = 0;
2240
2241    virtual HRESULT STDMETHODCALLTYPE SelectDefaultSubpictureLanguage(
2242        LCID *language,
2243        DVD_SUBPICTURE_LANG_EXT *extension) = 0;
2244
2245    virtual HRESULT STDMETHODCALLTYPE GetDecoderCaps(
2246        DVD_DECODER_CAPS *caps) = 0;
2247
2248    virtual HRESULT STDMETHODCALLTYPE GetButtonRect(
2249        ULONG button,
2250        RECT *rect) = 0;
2251
2252    virtual HRESULT STDMETHODCALLTYPE IsSubpictureStreamEnabled(
2253        ULONG stream,
2254        WINBOOL *enable) = 0;
2255
2256};
2257#ifdef __CRT_UUID_DECL
2258__CRT_UUID_DECL(IDvdInfo2, 0x34151510, 0xeec0, 0x11d2, 0x82,0x01, 0x00,0xa0,0xc9,0xd7,0x48,0x42)
2259#endif
2260#else
2261typedef struct IDvdInfo2Vtbl {
2262    BEGIN_INTERFACE
2263
2264    /*** IUnknown methods ***/
2265    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2266        IDvdInfo2 *This,
2267        REFIID riid,
2268        void **ppvObject);
2269
2270    ULONG (STDMETHODCALLTYPE *AddRef)(
2271        IDvdInfo2 *This);
2272
2273    ULONG (STDMETHODCALLTYPE *Release)(
2274        IDvdInfo2 *This);
2275
2276    /*** IDvdInfo2 methods ***/
2277    HRESULT (STDMETHODCALLTYPE *GetCurrentDomain)(
2278        IDvdInfo2 *This,
2279        DVD_DOMAIN *domain);
2280
2281    HRESULT (STDMETHODCALLTYPE *GetCurrentLocation)(
2282        IDvdInfo2 *This,
2283        DVD_PLAYBACK_LOCATION2 *location);
2284
2285    HRESULT (STDMETHODCALLTYPE *GetTotalTitleTime)(
2286        IDvdInfo2 *This,
2287        DVD_HMSF_TIMECODE *time,
2288        ULONG *flags);
2289
2290    HRESULT (STDMETHODCALLTYPE *GetCurrentButton)(
2291        IDvdInfo2 *This,
2292        ULONG *count,
2293        ULONG *current);
2294
2295    HRESULT (STDMETHODCALLTYPE *GetCurrentAngle)(
2296        IDvdInfo2 *This,
2297        ULONG *count,
2298        ULONG *current);
2299
2300    HRESULT (STDMETHODCALLTYPE *GetCurrentAudio)(
2301        IDvdInfo2 *This,
2302        ULONG *count,
2303        ULONG *current);
2304
2305    HRESULT (STDMETHODCALLTYPE *GetCurrentSubpicture)(
2306        IDvdInfo2 *This,
2307        ULONG *count,
2308        ULONG *current,
2309        WINBOOL *enable);
2310
2311    HRESULT (STDMETHODCALLTYPE *GetCurrentUOPS)(
2312        IDvdInfo2 *This,
2313        ULONG *uops);
2314
2315    HRESULT (STDMETHODCALLTYPE *GetAllSPRMs)(
2316        IDvdInfo2 *This,
2317        SPRMARRAY *regs);
2318
2319    HRESULT (STDMETHODCALLTYPE *GetAllGPRMs)(
2320        IDvdInfo2 *This,
2321        GPRMARRAY *regs);
2322
2323    HRESULT (STDMETHODCALLTYPE *GetAudioLanguage)(
2324        IDvdInfo2 *This,
2325        ULONG stream,
2326        LCID *language);
2327
2328    HRESULT (STDMETHODCALLTYPE *GetSubpictureLanguage)(
2329        IDvdInfo2 *This,
2330        ULONG stream,
2331        LCID *language);
2332
2333    HRESULT (STDMETHODCALLTYPE *GetTitleAttributes)(
2334        IDvdInfo2 *This,
2335        ULONG index,
2336        DVD_MenuAttributes *menu,
2337        DVD_TitleAttributes *title);
2338
2339    HRESULT (STDMETHODCALLTYPE *GetVMGAttributes)(
2340        IDvdInfo2 *This,
2341        DVD_MenuAttributes *attr);
2342
2343    HRESULT (STDMETHODCALLTYPE *GetVideoAttributes)(
2344        IDvdInfo2 *This,
2345        DVD_VideoAttributes *attr);
2346
2347    HRESULT (STDMETHODCALLTYPE *GetAudioAttributes)(
2348        IDvdInfo2 *This,
2349        ULONG stream,
2350        DVD_AudioAttributes *attr);
2351
2352    HRESULT (STDMETHODCALLTYPE *GetKaraokeAttributes)(
2353        IDvdInfo2 *This,
2354        ULONG stream,
2355        DVD_KaraokeAttributes *attr);
2356
2357    HRESULT (STDMETHODCALLTYPE *GetSubpictureAttributes)(
2358        IDvdInfo2 *This,
2359        ULONG stream,
2360        DVD_SubpictureAttributes *attr);
2361
2362    HRESULT (STDMETHODCALLTYPE *GetCurrentVolumeInfo)(
2363        IDvdInfo2 *This,
2364        ULONG *volume_count,
2365        ULONG *current,
2366        DVD_DISC_SIDE *side,
2367        ULONG *title_count);
2368
2369    HRESULT (STDMETHODCALLTYPE *GetDVDTextNumberOfLanguages)(
2370        IDvdInfo2 *This,
2371        ULONG *count);
2372
2373    HRESULT (STDMETHODCALLTYPE *GetDVDTextLanguageInfo)(
2374        IDvdInfo2 *This,
2375        ULONG index,
2376        ULONG *string_count,
2377        LCID *language,
2378        enum DVD_TextCharSet *character_set);
2379
2380    HRESULT (STDMETHODCALLTYPE *GetDVDTextStringAsNative)(
2381        IDvdInfo2 *This,
2382        ULONG lang_index,
2383        ULONG string_index,
2384        BYTE *string,
2385        ULONG size,
2386        ULONG *ret_size,
2387        enum DVD_TextStringType *type);
2388
2389    HRESULT (STDMETHODCALLTYPE *GetDVDTextStringAsUnicode)(
2390        IDvdInfo2 *This,
2391        ULONG lang_index,
2392        ULONG string_index,
2393        WCHAR *string,
2394        ULONG size,
2395        ULONG *ret_size,
2396        enum DVD_TextStringType *type);
2397
2398    HRESULT (STDMETHODCALLTYPE *GetPlayerParentalLevel)(
2399        IDvdInfo2 *This,
2400        ULONG *level,
2401        BYTE country_code[2]);
2402
2403    HRESULT (STDMETHODCALLTYPE *GetNumberOfChapters)(
2404        IDvdInfo2 *This,
2405        ULONG title,
2406        ULONG *count);
2407
2408    HRESULT (STDMETHODCALLTYPE *GetTitleParentalLevels)(
2409        IDvdInfo2 *This,
2410        ULONG title,
2411        ULONG *levels);
2412
2413    HRESULT (STDMETHODCALLTYPE *GetDVDDirectory)(
2414        IDvdInfo2 *This,
2415        WCHAR *path,
2416        ULONG size,
2417        ULONG *ret_size);
2418
2419    HRESULT (STDMETHODCALLTYPE *IsAudioStreamEnabled)(
2420        IDvdInfo2 *This,
2421        ULONG stream,
2422        WINBOOL *enable);
2423
2424    HRESULT (STDMETHODCALLTYPE *GetDiscID)(
2425        IDvdInfo2 *This,
2426        const WCHAR *path,
2427        ULONGLONG *id);
2428
2429    HRESULT (STDMETHODCALLTYPE *GetState)(
2430        IDvdInfo2 *This,
2431        IDvdState **state);
2432
2433    HRESULT (STDMETHODCALLTYPE *GetMenuLanguages)(
2434        IDvdInfo2 *This,
2435        LCID *languages,
2436        ULONG count,
2437        ULONG *ret_count);
2438
2439    HRESULT (STDMETHODCALLTYPE *GetButtonAtPosition)(
2440        IDvdInfo2 *This,
2441        POINT point,
2442        ULONG *button);
2443
2444    HRESULT (STDMETHODCALLTYPE *GetCmdFromEvent)(
2445        IDvdInfo2 *This,
2446        LONG_PTR param,
2447        IDvdCmd **cmd);
2448
2449    HRESULT (STDMETHODCALLTYPE *GetDefaultMenuLanguage)(
2450        IDvdInfo2 *This,
2451        LCID *language);
2452
2453    HRESULT (STDMETHODCALLTYPE *GetDefaultAudioLanguage)(
2454        IDvdInfo2 *This,
2455        LCID *language,
2456        DVD_AUDIO_LANG_EXT *extension);
2457
2458    HRESULT (STDMETHODCALLTYPE *SelectDefaultSubpictureLanguage)(
2459        IDvdInfo2 *This,
2460        LCID *language,
2461        DVD_SUBPICTURE_LANG_EXT *extension);
2462
2463    HRESULT (STDMETHODCALLTYPE *GetDecoderCaps)(
2464        IDvdInfo2 *This,
2465        DVD_DECODER_CAPS *caps);
2466
2467    HRESULT (STDMETHODCALLTYPE *GetButtonRect)(
2468        IDvdInfo2 *This,
2469        ULONG button,
2470        RECT *rect);
2471
2472    HRESULT (STDMETHODCALLTYPE *IsSubpictureStreamEnabled)(
2473        IDvdInfo2 *This,
2474        ULONG stream,
2475        WINBOOL *enable);
2476
2477    END_INTERFACE
2478} IDvdInfo2Vtbl;
2479
2480interface IDvdInfo2 {
2481    CONST_VTBL IDvdInfo2Vtbl* lpVtbl;
2482};
2483
2484#ifdef COBJMACROS
2485#ifndef WIDL_C_INLINE_WRAPPERS
2486/*** IUnknown methods ***/
2487#define IDvdInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2488#define IDvdInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
2489#define IDvdInfo2_Release(This) (This)->lpVtbl->Release(This)
2490/*** IDvdInfo2 methods ***/
2491#define IDvdInfo2_GetCurrentDomain(This,domain) (This)->lpVtbl->GetCurrentDomain(This,domain)
2492#define IDvdInfo2_GetCurrentLocation(This,location) (This)->lpVtbl->GetCurrentLocation(This,location)
2493#define IDvdInfo2_GetTotalTitleTime(This,time,flags) (This)->lpVtbl->GetTotalTitleTime(This,time,flags)
2494#define IDvdInfo2_GetCurrentButton(This,count,current) (This)->lpVtbl->GetCurrentButton(This,count,current)
2495#define IDvdInfo2_GetCurrentAngle(This,count,current) (This)->lpVtbl->GetCurrentAngle(This,count,current)
2496#define IDvdInfo2_GetCurrentAudio(This,count,current) (This)->lpVtbl->GetCurrentAudio(This,count,current)
2497#define IDvdInfo2_GetCurrentSubpicture(This,count,current,enable) (This)->lpVtbl->GetCurrentSubpicture(This,count,current,enable)
2498#define IDvdInfo2_GetCurrentUOPS(This,uops) (This)->lpVtbl->GetCurrentUOPS(This,uops)
2499#define IDvdInfo2_GetAllSPRMs(This,regs) (This)->lpVtbl->GetAllSPRMs(This,regs)
2500#define IDvdInfo2_GetAllGPRMs(This,regs) (This)->lpVtbl->GetAllGPRMs(This,regs)
2501#define IDvdInfo2_GetAudioLanguage(This,stream,language) (This)->lpVtbl->GetAudioLanguage(This,stream,language)
2502#define IDvdInfo2_GetSubpictureLanguage(This,stream,language) (This)->lpVtbl->GetSubpictureLanguage(This,stream,language)
2503#define IDvdInfo2_GetTitleAttributes(This,index,menu,title) (This)->lpVtbl->GetTitleAttributes(This,index,menu,title)
2504#define IDvdInfo2_GetVMGAttributes(This,attr) (This)->lpVtbl->GetVMGAttributes(This,attr)
2505#define IDvdInfo2_GetVideoAttributes(This,attr) (This)->lpVtbl->GetVideoAttributes(This,attr)
2506#define IDvdInfo2_GetAudioAttributes(This,stream,attr) (This)->lpVtbl->GetAudioAttributes(This,stream,attr)
2507#define IDvdInfo2_GetKaraokeAttributes(This,stream,attr) (This)->lpVtbl->GetKaraokeAttributes(This,stream,attr)
2508#define IDvdInfo2_GetSubpictureAttributes(This,stream,attr) (This)->lpVtbl->GetSubpictureAttributes(This,stream,attr)
2509#define IDvdInfo2_GetCurrentVolumeInfo(This,volume_count,current,side,title_count) (This)->lpVtbl->GetCurrentVolumeInfo(This,volume_count,current,side,title_count)
2510#define IDvdInfo2_GetDVDTextNumberOfLanguages(This,count) (This)->lpVtbl->GetDVDTextNumberOfLanguages(This,count)
2511#define IDvdInfo2_GetDVDTextLanguageInfo(This,index,string_count,language,character_set) (This)->lpVtbl->GetDVDTextLanguageInfo(This,index,string_count,language,character_set)
2512#define IDvdInfo2_GetDVDTextStringAsNative(This,lang_index,string_index,string,size,ret_size,type) (This)->lpVtbl->GetDVDTextStringAsNative(This,lang_index,string_index,string,size,ret_size,type)
2513#define IDvdInfo2_GetDVDTextStringAsUnicode(This,lang_index,string_index,string,size,ret_size,type) (This)->lpVtbl->GetDVDTextStringAsUnicode(This,lang_index,string_index,string,size,ret_size,type)
2514#define IDvdInfo2_GetPlayerParentalLevel(This,level,country_code) (This)->lpVtbl->GetPlayerParentalLevel(This,level,country_code)
2515#define IDvdInfo2_GetNumberOfChapters(This,title,count) (This)->lpVtbl->GetNumberOfChapters(This,title,count)
2516#define IDvdInfo2_GetTitleParentalLevels(This,title,levels) (This)->lpVtbl->GetTitleParentalLevels(This,title,levels)
2517#define IDvdInfo2_GetDVDDirectory(This,path,size,ret_size) (This)->lpVtbl->GetDVDDirectory(This,path,size,ret_size)
2518#define IDvdInfo2_IsAudioStreamEnabled(This,stream,enable) (This)->lpVtbl->IsAudioStreamEnabled(This,stream,enable)
2519#define IDvdInfo2_GetDiscID(This,path,id) (This)->lpVtbl->GetDiscID(This,path,id)
2520#define IDvdInfo2_GetState(This,state) (This)->lpVtbl->GetState(This,state)
2521#define IDvdInfo2_GetMenuLanguages(This,languages,count,ret_count) (This)->lpVtbl->GetMenuLanguages(This,languages,count,ret_count)
2522#define IDvdInfo2_GetButtonAtPosition(This,point,button) (This)->lpVtbl->GetButtonAtPosition(This,point,button)
2523#define IDvdInfo2_GetCmdFromEvent(This,param,cmd) (This)->lpVtbl->GetCmdFromEvent(This,param,cmd)
2524#define IDvdInfo2_GetDefaultMenuLanguage(This,language) (This)->lpVtbl->GetDefaultMenuLanguage(This,language)
2525#define IDvdInfo2_GetDefaultAudioLanguage(This,language,extension) (This)->lpVtbl->GetDefaultAudioLanguage(This,language,extension)
2526#define IDvdInfo2_SelectDefaultSubpictureLanguage(This,language,extension) (This)->lpVtbl->SelectDefaultSubpictureLanguage(This,language,extension)
2527#define IDvdInfo2_GetDecoderCaps(This,caps) (This)->lpVtbl->GetDecoderCaps(This,caps)
2528#define IDvdInfo2_GetButtonRect(This,button,rect) (This)->lpVtbl->GetButtonRect(This,button,rect)
2529#define IDvdInfo2_IsSubpictureStreamEnabled(This,stream,enable) (This)->lpVtbl->IsSubpictureStreamEnabled(This,stream,enable)
2530#else
2531/*** IUnknown methods ***/
2532static inline HRESULT IDvdInfo2_QueryInterface(IDvdInfo2* This,REFIID riid,void **ppvObject) {
2533    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2534}
2535static inline ULONG IDvdInfo2_AddRef(IDvdInfo2* This) {
2536    return This->lpVtbl->AddRef(This);
2537}
2538static inline ULONG IDvdInfo2_Release(IDvdInfo2* This) {
2539    return This->lpVtbl->Release(This);
2540}
2541/*** IDvdInfo2 methods ***/
2542static inline HRESULT IDvdInfo2_GetCurrentDomain(IDvdInfo2* This,DVD_DOMAIN *domain) {
2543    return This->lpVtbl->GetCurrentDomain(This,domain);
2544}
2545static inline HRESULT IDvdInfo2_GetCurrentLocation(IDvdInfo2* This,DVD_PLAYBACK_LOCATION2 *location) {
2546    return This->lpVtbl->GetCurrentLocation(This,location);
2547}
2548static inline HRESULT IDvdInfo2_GetTotalTitleTime(IDvdInfo2* This,DVD_HMSF_TIMECODE *time,ULONG *flags) {
2549    return This->lpVtbl->GetTotalTitleTime(This,time,flags);
2550}
2551static inline HRESULT IDvdInfo2_GetCurrentButton(IDvdInfo2* This,ULONG *count,ULONG *current) {
2552    return This->lpVtbl->GetCurrentButton(This,count,current);
2553}
2554static inline HRESULT IDvdInfo2_GetCurrentAngle(IDvdInfo2* This,ULONG *count,ULONG *current) {
2555    return This->lpVtbl->GetCurrentAngle(This,count,current);
2556}
2557static inline HRESULT IDvdInfo2_GetCurrentAudio(IDvdInfo2* This,ULONG *count,ULONG *current) {
2558    return This->lpVtbl->GetCurrentAudio(This,count,current);
2559}
2560static inline HRESULT IDvdInfo2_GetCurrentSubpicture(IDvdInfo2* This,ULONG *count,ULONG *current,WINBOOL *enable) {
2561    return This->lpVtbl->GetCurrentSubpicture(This,count,current,enable);
2562}
2563static inline HRESULT IDvdInfo2_GetCurrentUOPS(IDvdInfo2* This,ULONG *uops) {
2564    return This->lpVtbl->GetCurrentUOPS(This,uops);
2565}
2566static inline HRESULT IDvdInfo2_GetAllSPRMs(IDvdInfo2* This,SPRMARRAY *regs) {
2567    return This->lpVtbl->GetAllSPRMs(This,regs);
2568}
2569static inline HRESULT IDvdInfo2_GetAllGPRMs(IDvdInfo2* This,GPRMARRAY *regs) {
2570    return This->lpVtbl->GetAllGPRMs(This,regs);
2571}
2572static inline HRESULT IDvdInfo2_GetAudioLanguage(IDvdInfo2* This,ULONG stream,LCID *language) {
2573    return This->lpVtbl->GetAudioLanguage(This,stream,language);
2574}
2575static inline HRESULT IDvdInfo2_GetSubpictureLanguage(IDvdInfo2* This,ULONG stream,LCID *language) {
2576    return This->lpVtbl->GetSubpictureLanguage(This,stream,language);
2577}
2578static inline HRESULT IDvdInfo2_GetTitleAttributes(IDvdInfo2* This,ULONG index,DVD_MenuAttributes *menu,DVD_TitleAttributes *title) {
2579    return This->lpVtbl->GetTitleAttributes(This,index,menu,title);
2580}
2581static inline HRESULT IDvdInfo2_GetVMGAttributes(IDvdInfo2* This,DVD_MenuAttributes *attr) {
2582    return This->lpVtbl->GetVMGAttributes(This,attr);
2583}
2584static inline HRESULT IDvdInfo2_GetVideoAttributes(IDvdInfo2* This,DVD_VideoAttributes *attr) {
2585    return This->lpVtbl->GetVideoAttributes(This,attr);
2586}
2587static inline HRESULT IDvdInfo2_GetAudioAttributes(IDvdInfo2* This,ULONG stream,DVD_AudioAttributes *attr) {
2588    return This->lpVtbl->GetAudioAttributes(This,stream,attr);
2589}
2590static inline HRESULT IDvdInfo2_GetKaraokeAttributes(IDvdInfo2* This,ULONG stream,DVD_KaraokeAttributes *attr) {
2591    return This->lpVtbl->GetKaraokeAttributes(This,stream,attr);
2592}
2593static inline HRESULT IDvdInfo2_GetSubpictureAttributes(IDvdInfo2* This,ULONG stream,DVD_SubpictureAttributes *attr) {
2594    return This->lpVtbl->GetSubpictureAttributes(This,stream,attr);
2595}
2596static inline HRESULT IDvdInfo2_GetCurrentVolumeInfo(IDvdInfo2* This,ULONG *volume_count,ULONG *current,DVD_DISC_SIDE *side,ULONG *title_count) {
2597    return This->lpVtbl->GetCurrentVolumeInfo(This,volume_count,current,side,title_count);
2598}
2599static inline HRESULT IDvdInfo2_GetDVDTextNumberOfLanguages(IDvdInfo2* This,ULONG *count) {
2600    return This->lpVtbl->GetDVDTextNumberOfLanguages(This,count);
2601}
2602static inline HRESULT IDvdInfo2_GetDVDTextLanguageInfo(IDvdInfo2* This,ULONG index,ULONG *string_count,LCID *language,enum DVD_TextCharSet *character_set) {
2603    return This->lpVtbl->GetDVDTextLanguageInfo(This,index,string_count,language,character_set);
2604}
2605static inline HRESULT IDvdInfo2_GetDVDTextStringAsNative(IDvdInfo2* This,ULONG lang_index,ULONG string_index,BYTE *string,ULONG size,ULONG *ret_size,enum DVD_TextStringType *type) {
2606    return This->lpVtbl->GetDVDTextStringAsNative(This,lang_index,string_index,string,size,ret_size,type);
2607}
2608static inline HRESULT IDvdInfo2_GetDVDTextStringAsUnicode(IDvdInfo2* This,ULONG lang_index,ULONG string_index,WCHAR *string,ULONG size,ULONG *ret_size,enum DVD_TextStringType *type) {
2609    return This->lpVtbl->GetDVDTextStringAsUnicode(This,lang_index,string_index,string,size,ret_size,type);
2610}
2611static inline HRESULT IDvdInfo2_GetPlayerParentalLevel(IDvdInfo2* This,ULONG *level,BYTE country_code[2]) {
2612    return This->lpVtbl->GetPlayerParentalLevel(This,level,country_code);
2613}
2614static inline HRESULT IDvdInfo2_GetNumberOfChapters(IDvdInfo2* This,ULONG title,ULONG *count) {
2615    return This->lpVtbl->GetNumberOfChapters(This,title,count);
2616}
2617static inline HRESULT IDvdInfo2_GetTitleParentalLevels(IDvdInfo2* This,ULONG title,ULONG *levels) {
2618    return This->lpVtbl->GetTitleParentalLevels(This,title,levels);
2619}
2620static inline HRESULT IDvdInfo2_GetDVDDirectory(IDvdInfo2* This,WCHAR *path,ULONG size,ULONG *ret_size) {
2621    return This->lpVtbl->GetDVDDirectory(This,path,size,ret_size);
2622}
2623static inline HRESULT IDvdInfo2_IsAudioStreamEnabled(IDvdInfo2* This,ULONG stream,WINBOOL *enable) {
2624    return This->lpVtbl->IsAudioStreamEnabled(This,stream,enable);
2625}
2626static inline HRESULT IDvdInfo2_GetDiscID(IDvdInfo2* This,const WCHAR *path,ULONGLONG *id) {
2627    return This->lpVtbl->GetDiscID(This,path,id);
2628}
2629static inline HRESULT IDvdInfo2_GetState(IDvdInfo2* This,IDvdState **state) {
2630    return This->lpVtbl->GetState(This,state);
2631}
2632static inline HRESULT IDvdInfo2_GetMenuLanguages(IDvdInfo2* This,LCID *languages,ULONG count,ULONG *ret_count) {
2633    return This->lpVtbl->GetMenuLanguages(This,languages,count,ret_count);
2634}
2635static inline HRESULT IDvdInfo2_GetButtonAtPosition(IDvdInfo2* This,POINT point,ULONG *button) {
2636    return This->lpVtbl->GetButtonAtPosition(This,point,button);
2637}
2638static inline HRESULT IDvdInfo2_GetCmdFromEvent(IDvdInfo2* This,LONG_PTR param,IDvdCmd **cmd) {
2639    return This->lpVtbl->GetCmdFromEvent(This,param,cmd);
2640}
2641static inline HRESULT IDvdInfo2_GetDefaultMenuLanguage(IDvdInfo2* This,LCID *language) {
2642    return This->lpVtbl->GetDefaultMenuLanguage(This,language);
2643}
2644static inline HRESULT IDvdInfo2_GetDefaultAudioLanguage(IDvdInfo2* This,LCID *language,DVD_AUDIO_LANG_EXT *extension) {
2645    return This->lpVtbl->GetDefaultAudioLanguage(This,language,extension);
2646}
2647static inline HRESULT IDvdInfo2_SelectDefaultSubpictureLanguage(IDvdInfo2* This,LCID *language,DVD_SUBPICTURE_LANG_EXT *extension) {
2648    return This->lpVtbl->SelectDefaultSubpictureLanguage(This,language,extension);
2649}
2650static inline HRESULT IDvdInfo2_GetDecoderCaps(IDvdInfo2* This,DVD_DECODER_CAPS *caps) {
2651    return This->lpVtbl->GetDecoderCaps(This,caps);
2652}
2653static inline HRESULT IDvdInfo2_GetButtonRect(IDvdInfo2* This,ULONG button,RECT *rect) {
2654    return This->lpVtbl->GetButtonRect(This,button,rect);
2655}
2656static inline HRESULT IDvdInfo2_IsSubpictureStreamEnabled(IDvdInfo2* This,ULONG stream,WINBOOL *enable) {
2657    return This->lpVtbl->IsSubpictureStreamEnabled(This,stream,enable);
2658}
2659#endif
2660#endif
2661
2662#endif
2663
2664
2665#endif  /* __IDvdInfo2_INTERFACE_DEFINED__ */
2666
2667/*****************************************************************************
2668 * IDvdGraphBuilder interface
2669 */
2670#ifndef __IDvdGraphBuilder_INTERFACE_DEFINED__
2671#define __IDvdGraphBuilder_INTERFACE_DEFINED__
2672
2673DEFINE_GUID(IID_IDvdGraphBuilder, 0xfcc152b6, 0xf372, 0x11d0, 0x8e,0x00, 0x00,0xc0,0x4f,0xd7,0xc0,0x8b);
2674#if defined(__cplusplus) && !defined(CINTERFACE)
2675MIDL_INTERFACE("fcc152b6-f372-11d0-8e00-00c04fd7c08b")
2676IDvdGraphBuilder : public IUnknown
2677{
2678    virtual HRESULT STDMETHODCALLTYPE GetFiltergraph(
2679        IGraphBuilder **graph) = 0;
2680
2681    virtual HRESULT STDMETHODCALLTYPE GetDvdInterface(
2682        REFIID iid,
2683        void **out) = 0;
2684
2685    virtual HRESULT STDMETHODCALLTYPE RenderDvdVideoVolume(
2686        const WCHAR *path,
2687        DWORD flags,
2688        AM_DVD_RENDERSTATUS *status) = 0;
2689
2690};
2691#ifdef __CRT_UUID_DECL
2692__CRT_UUID_DECL(IDvdGraphBuilder, 0xfcc152b6, 0xf372, 0x11d0, 0x8e,0x00, 0x00,0xc0,0x4f,0xd7,0xc0,0x8b)
2693#endif
2694#else
2695typedef struct IDvdGraphBuilderVtbl {
2696    BEGIN_INTERFACE
2697
2698    /*** IUnknown methods ***/
2699    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2700        IDvdGraphBuilder *This,
2701        REFIID riid,
2702        void **ppvObject);
2703
2704    ULONG (STDMETHODCALLTYPE *AddRef)(
2705        IDvdGraphBuilder *This);
2706
2707    ULONG (STDMETHODCALLTYPE *Release)(
2708        IDvdGraphBuilder *This);
2709
2710    /*** IDvdGraphBuilder methods ***/
2711    HRESULT (STDMETHODCALLTYPE *GetFiltergraph)(
2712        IDvdGraphBuilder *This,
2713        IGraphBuilder **graph);
2714
2715    HRESULT (STDMETHODCALLTYPE *GetDvdInterface)(
2716        IDvdGraphBuilder *This,
2717        REFIID iid,
2718        void **out);
2719
2720    HRESULT (STDMETHODCALLTYPE *RenderDvdVideoVolume)(
2721        IDvdGraphBuilder *This,
2722        const WCHAR *path,
2723        DWORD flags,
2724        AM_DVD_RENDERSTATUS *status);
2725
2726    END_INTERFACE
2727} IDvdGraphBuilderVtbl;
2728
2729interface IDvdGraphBuilder {
2730    CONST_VTBL IDvdGraphBuilderVtbl* lpVtbl;
2731};
2732
2733#ifdef COBJMACROS
2734#ifndef WIDL_C_INLINE_WRAPPERS
2735/*** IUnknown methods ***/
2736#define IDvdGraphBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2737#define IDvdGraphBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
2738#define IDvdGraphBuilder_Release(This) (This)->lpVtbl->Release(This)
2739/*** IDvdGraphBuilder methods ***/
2740#define IDvdGraphBuilder_GetFiltergraph(This,graph) (This)->lpVtbl->GetFiltergraph(This,graph)
2741#define IDvdGraphBuilder_GetDvdInterface(This,iid,out) (This)->lpVtbl->GetDvdInterface(This,iid,out)
2742#define IDvdGraphBuilder_RenderDvdVideoVolume(This,path,flags,status) (This)->lpVtbl->RenderDvdVideoVolume(This,path,flags,status)
2743#else
2744/*** IUnknown methods ***/
2745static inline HRESULT IDvdGraphBuilder_QueryInterface(IDvdGraphBuilder* This,REFIID riid,void **ppvObject) {
2746    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2747}
2748static inline ULONG IDvdGraphBuilder_AddRef(IDvdGraphBuilder* This) {
2749    return This->lpVtbl->AddRef(This);
2750}
2751static inline ULONG IDvdGraphBuilder_Release(IDvdGraphBuilder* This) {
2752    return This->lpVtbl->Release(This);
2753}
2754/*** IDvdGraphBuilder methods ***/
2755static inline HRESULT IDvdGraphBuilder_GetFiltergraph(IDvdGraphBuilder* This,IGraphBuilder **graph) {
2756    return This->lpVtbl->GetFiltergraph(This,graph);
2757}
2758static inline HRESULT IDvdGraphBuilder_GetDvdInterface(IDvdGraphBuilder* This,REFIID iid,void **out) {
2759    return This->lpVtbl->GetDvdInterface(This,iid,out);
2760}
2761static inline HRESULT IDvdGraphBuilder_RenderDvdVideoVolume(IDvdGraphBuilder* This,const WCHAR *path,DWORD flags,AM_DVD_RENDERSTATUS *status) {
2762    return This->lpVtbl->RenderDvdVideoVolume(This,path,flags,status);
2763}
2764#endif
2765#endif
2766
2767#endif
2768
2769
2770#endif  /* __IDvdGraphBuilder_INTERFACE_DEFINED__ */
2771
2772/* Begin additional prototypes for all interfaces */
2773
2774
2775/* End additional prototypes */
2776
2777#ifdef __cplusplus
2778}
2779#endif
2780
2781#endif /* __dvdif_h__ */