From: Vijay Kiran Kamuju infyquest@gmail.com
Signed-off-by: Vijay Kiran Kamuju infyquest@gmail.com Signed-off-by: Zebediah Figura z.figura12@gmail.com --- include/Makefile.in | 1 + include/dvdif.idl | 742 ++++++++++++++++++++++++++++++++++++++++++++ include/strmif.idl | 6 +- 3 files changed, 744 insertions(+), 5 deletions(-) create mode 100644 include/dvdif.idl
diff --git a/include/Makefile.in b/include/Makefile.in index 543d41811c..74db5ee151 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -238,6 +238,7 @@ SOURCES = \ dshow.h \ dsound.h \ dsrole.h \ + dvdif.idl \ dvdmedia.h \ dvoice.h \ dwmapi.h \ diff --git a/include/dvdif.idl b/include/dvdif.idl new file mode 100644 index 0000000000..d37815d1db --- /dev/null +++ b/include/dvdif.idl @@ -0,0 +1,742 @@ +/* + * Copyright (C) 2020 Vijay Kiran Kamuju + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#if 0 +pragma makedep install +#endif + +import "unknwn.idl"; +import "objidl.idl"; + +cpp_quote("#include <ddraw.h>") + +cpp_quote("#if 0") +interface IGraphBuilder; +cpp_quote("#endif") + +typedef enum tagDVD_DOMAIN +{ + DVD_DOMAIN_FirstPlay = 1, + DVD_DOMAIN_VideoManagerMenu, + DVD_DOMAIN_VideoTitleSetMenu, + DVD_DOMAIN_Title, + DVD_DOMAIN_Stop +} DVD_DOMAIN; + +typedef enum tagDVD_MENU_ID +{ + DVD_MENU_Title = 2, + DVD_MENU_Root = 3, + DVD_MENU_Subpicture = 4, + DVD_MENU_Audio = 5, + DVD_MENU_Angle = 6, + DVD_MENU_Chapter = 7 +} DVD_MENU_ID; + +typedef enum tagDVD_DISC_SIDE +{ + DVD_SIDE_A = 1, + DVD_SIDE_B = 2 +} DVD_DISC_SIDE; + +typedef enum tagDVD_PREFERRED_DISPLAY_MODE +{ + DISPLAY_CONTENT_DEFAULT = 0, + DISPLAY_16x9 = 1, + DISPLAY_4x3_PANSCAN_PREFERRED = 2, + DISPLAY_4x3_LETTERBOX_PREFERRED = 3 +} DVD_PREFERRED_DISPLAY_MODE; + +typedef WORD DVD_REGISTER; +typedef DVD_REGISTER GPRMARRAY[16]; +typedef DVD_REGISTER SPRMARRAY[24]; + +typedef struct tagDVD_ATR +{ + ULONG ulCAT; + BYTE pbATRI[768]; +} DVD_ATR; + +typedef BYTE DVD_VideoATR[2]; +typedef BYTE DVD_AudioATR[8]; +typedef BYTE DVD_SubpictureATR[6]; + +typedef enum tagDVD_FRAMERATE +{ + DVD_FPS_25 = 1, + DVD_FPS_30NonDrop = 3 +} DVD_FRAMERATE; + +cpp_quote("typedef struct tagDVD_TIMECODE") +cpp_quote("{") +cpp_quote(" ULONG Hours1 : 4;") +cpp_quote(" ULONG Hours10 : 4;") +cpp_quote(" ULONG Minutes1 : 4;") +cpp_quote(" ULONG Minutes10 : 4;") +cpp_quote(" ULONG Seconds1 : 4;") +cpp_quote(" ULONG Seconds10 : 4;") +cpp_quote(" ULONG Frames1 : 4;") +cpp_quote(" ULONG Frames10 : 2;") +cpp_quote(" ULONG FrameRateCode : 2;") +cpp_quote("} DVD_TIMECODE;") + +typedef enum tagDVD_NavCmdType +{ + DVD_NavCmdType_Pre = 1, + DVD_NavCmdType_Post = 2, + DVD_NavCmdType_Cell = 3, + DVD_NavCmdType_Button = 4 +} DVD_NavCmdType; + +typedef enum tagDVD_TIMECODE_FLAGS +{ + DVD_TC_FLAG_25fps = 0x00000001, + DVD_TC_FLAG_30fps = 0x00000002, + DVD_TC_FLAG_DropFrame = 0x00000004, + DVD_TC_FLAG_Interpolated = 0x00000008 +} DVD_TIMECODE_FLAGS; + +typedef struct tagDVD_HMSF_TIMECODE +{ + BYTE bHours; + BYTE bMinutes; + BYTE bSeconds; + BYTE bFrames; +} DVD_HMSF_TIMECODE; + +typedef struct tagDVD_PLAYBACK_LOCATION2 +{ + ULONG TitleNum; + ULONG ChapterNum; + DVD_HMSF_TIMECODE TimeCode; + ULONG TimeCodeFlags; +} DVD_PLAYBACK_LOCATION2; + +typedef struct tagDVD_PLAYBACK_LOCATION +{ + ULONG TitleNum; + ULONG ChapterNum; + ULONG TimeCode; +} DVD_PLAYBACK_LOCATION; + +typedef DWORD VALID_UOP_SOMTHING_OR_OTHER; + +typedef enum +{ + UOP_FLAG_Play_Title_Or_AtTime = 0x00000001, + UOP_FLAG_Play_Chapter = 0x00000002, + UOP_FLAG_Play_Title = 0x00000004, + UOP_FLAG_Stop = 0x00000008, + UOP_FLAG_ReturnFromSubMenu = 0x00000010, + UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020, + UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040, + UOP_FLAG_PlayNext_Chapter = 0x00000080, + UOP_FLAG_Play_Forwards = 0x00000100, + UOP_FLAG_Play_Backwards = 0x00000200, + UOP_FLAG_ShowMenu_Title = 0x00000400, + UOP_FLAG_ShowMenu_Root = 0x00000800, + UOP_FLAG_ShowMenu_SubPic = 0x00001000, + UOP_FLAG_ShowMenu_Audio = 0x00002000, + UOP_FLAG_ShowMenu_Angle = 0x00004000, + UOP_FLAG_ShowMenu_Chapter = 0x00008000, + UOP_FLAG_Resume = 0x00010000, + UOP_FLAG_Select_Or_Activate_Button = 0x00020000, + UOP_FLAG_Still_Off = 0x00040000, + UOP_FLAG_Pause_On = 0x00080000, + UOP_FLAG_Select_Audio_Stream = 0x00100000, + UOP_FLAG_Select_SubPic_Stream = 0x00200000, + UOP_FLAG_Select_Angle = 0x00400000, + UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000, + UOP_FLAG_Select_Video_Mode_Preference = 0x01000000 +} VALID_UOP_FLAG; + +typedef enum +{ + DVD_CMD_FLAG_None = 0x00000000, + DVD_CMD_FLAG_Flush = 0x00000001, + DVD_CMD_FLAG_SendEvents = 0x00000002, + DVD_CMD_FLAG_Block = 0x00000004, + DVD_CMD_FLAG_StartWhenRendered = 0x00000008, + DVD_CMD_FLAG_EndAfterRendered = 0x00000010 +} DVD_CMD_FLAGS; + +typedef enum +{ + DVD_ResetOnStop = 1, + DVD_NotifyParentalLevelChange = 2, + DVD_HMSF_TimeCodeEvents = 3, + DVD_AudioDuringFFwdRew = 4, + DVD_EnableNonblockingAPIs = 5, + DVD_CacheSizeInMB = 6, + DVD_EnablePortableBookmarks = 7, + DVD_EnableExtendedCopyProtectErrors = 8, + DVD_NotifyPositionChange = 9, + DVD_IncreaseOutputControl = 10, + DVD_EnableStreaming = 11, + DVD_EnableESOutput = 12, + DVD_EnableTitleLength = 13, + DVD_DisableStillThrottle = 14, + DVD_EnableLoggingEvents = 15, + DVD_MaxReadBurstInKB = 16, + DVD_ReadBurstPeriodInMS = 17, + DVD_RestartDisc = 18, + DVD_EnableCC = 19 +} DVD_OPTION_FLAG; + +typedef enum +{ + DVD_Relative_Upper = 1, + DVD_Relative_Lower = 2, + DVD_Relative_Left = 3, + DVD_Relative_Right = 4 +} DVD_RELATIVE_BUTTON; + +typedef enum tagDVD_PARENTAL_LEVEL +{ + DVD_PARENTAL_LEVEL_8 = 0x8000, + DVD_PARENTAL_LEVEL_7 = 0x4000, + DVD_PARENTAL_LEVEL_6 = 0x2000, + DVD_PARENTAL_LEVEL_5 = 0x1000, + DVD_PARENTAL_LEVEL_4 = 0x0800, + DVD_PARENTAL_LEVEL_3 = 0x0400, + DVD_PARENTAL_LEVEL_2 = 0x0200, + DVD_PARENTAL_LEVEL_1 = 0x0100 +} DVD_PARENTAL_LEVEL; + +typedef enum tagDVD_AUDIO_LANG_EXT +{ + DVD_AUD_EXT_NotSpecified = 0, + DVD_AUD_EXT_Captions = 1, + DVD_AUD_EXT_VisuallyImpaired = 2, + DVD_AUD_EXT_DirectorComments1 = 3, + DVD_AUD_EXT_DirectorComments2 = 4 +} DVD_AUDIO_LANG_EXT; + +typedef enum tagDVD_SUBPICTURE_LANG_EXT +{ + DVD_SP_EXT_NotSpecified = 0, + DVD_SP_EXT_Caption_Normal = 1, + DVD_SP_EXT_Caption_Big = 2, + DVD_SP_EXT_Caption_Children = 3, + DVD_SP_EXT_CC_Normal = 5, + DVD_SP_EXT_CC_Big = 6, + DVD_SP_EXT_CC_Children = 7, + DVD_SP_EXT_Forced = 9, + DVD_SP_EXT_DirectorComments_Normal = 13, + DVD_SP_EXT_DirectorComments_Big = 14, + DVD_SP_EXT_DirectorComments_Children = 15 +} DVD_SUBPICTURE_LANG_EXT; + +typedef enum tagDVD_AUDIO_APPMODE +{ + DVD_AudioMode_None = 0, + DVD_AudioMode_Karaoke = 1, + DVD_AudioMode_Surround = 2, + DVD_AudioMode_Other = 3 +} DVD_AUDIO_APPMODE; + +typedef enum tagDVD_AUDIO_FORMAT +{ + DVD_AudioFormat_AC3 = 0, + DVD_AudioFormat_MPEG1 = 1, + DVD_AudioFormat_MPEG1_DRC = 2, + DVD_AudioFormat_MPEG2 = 3, + DVD_AudioFormat_MPEG2_DRC = 4, + DVD_AudioFormat_LPCM = 5, + DVD_AudioFormat_DTS = 6, + DVD_AudioFormat_SDDS = 7, + DVD_AudioFormat_Other = 8 +} DVD_AUDIO_FORMAT; + +typedef enum tagDVD_KARAOKE_DOWNMIX +{ + DVD_Mix_0to0 = 0x0001, + DVD_Mix_1to0 = 0x0002, + DVD_Mix_2to0 = 0x0004, + DVD_Mix_3to0 = 0x0008, + DVD_Mix_4to0 = 0x0010, + DVD_Mix_Lto0 = 0x0020, + DVD_Mix_Rto0 = 0x0040, + DVD_Mix_0to1 = 0x0100, + DVD_Mix_1to1 = 0x0200, + DVD_Mix_2to1 = 0x0400, + DVD_Mix_3to1 = 0x0800, + DVD_Mix_4to1 = 0x1000, + DVD_Mix_Lto1 = 0x2000, + DVD_Mix_Rto1 = 0x4000 +} DVD_KARAOKE_DOWNMIX; + +typedef enum tagDVD_KARAOKE_CONTENTS +{ + DVD_Karaoke_GuideVocal1 = 0x0001, + DVD_Karaoke_GuideVocal2 = 0x0002, + DVD_Karaoke_GuideMelody1 = 0x0004, + DVD_Karaoke_GuideMelody2 = 0x0008, + DVD_Karaoke_GuideMelodyA = 0x0010, + DVD_Karaoke_GuideMelodyB = 0x0020, + DVD_Karaoke_SoundEffectA = 0x0040, + DVD_Karaoke_SoundEffectB = 0x0080 +} DVD_KARAOKE_CONTENTS; + +typedef enum tagDVD_KARAOKE_ASSIGNMENT +{ + DVD_Assignment_reserved0 = 0, + DVD_Assignment_reserved1 = 1, + DVD_Assignment_LR = 2, + DVD_Assignment_LRM = 3, + DVD_Assignment_LR1 = 4, + DVD_Assignment_LRM1 = 5, + DVD_Assignment_LR12 = 6, + DVD_Assignment_LRM12 = 7 +} DVD_KARAOKE_ASSIGNMENT; + +typedef struct tagDVD_MUA_MixingInfo +{ + BOOL fMixTo0; + BOOL fMixTo1; + BOOL fMix0InPhase; + BOOL fMix1InPhase; + DWORD dwSpeakerPosition; +} DVD_MUA_MixingInfo; + +typedef struct tagDVD_MUA_Coeff +{ + double log2_alpha; + double log2_beta; +} DVD_MUA_Coeff; + +typedef enum tagDVD_VIDEO_COMPRESSION +{ + DVD_VideoCompression_Other = 0, + DVD_VideoCompression_MPEG1 = 1, + DVD_VideoCompression_MPEG2 = 2 +} DVD_VIDEO_COMPRESSION; + +typedef enum tagDVD_SUBPICTURE_TYPE +{ + DVD_SPType_NotSpecified = 0, + DVD_SPType_Language = 1, + DVD_SPType_Other = 2 +} DVD_SUBPICTURE_TYPE; + +typedef enum tagDVD_SUBPICTURE_CODING +{ + DVD_SPCoding_RunLength = 0, + DVD_SPCoding_Extended = 1, + DVD_SPCoding_Other = 2 +} DVD_SUBPICTURE_CODING; + +typedef enum tagDVD_TITLE_APPMODE +{ + DVD_AppMode_Not_Specified = 0, + DVD_AppMode_Karaoke = 1, + DVD_AppMode_Other = 3 +} DVD_TITLE_APPMODE; + +enum DVD_TextStringType +{ + DVD_Struct_Volume = 0x01, + DVD_Struct_Title = 0x02, + DVD_Struct_ParentalID = 0x03, + DVD_Struct_PartOfTitle = 0x04, + DVD_Struct_Cell = 0x05, + DVD_Stream_Audio = 0x10, + DVD_Stream_Subpicture = 0x11, + DVD_Stream_Angle = 0x12, + DVD_Channel_Audio = 0x20, + DVD_General_Name = 0x30, + DVD_General_Comments = 0x31, + DVD_Title_Series = 0x38, + DVD_Title_Movie = 0x39, + DVD_Title_Video = 0x3a, + DVD_Title_Album = 0x3b, + DVD_Title_Song = 0x3c, + DVD_Title_Other = 0x3f, + DVD_Title_Sub_Series = 0x40, + DVD_Title_Sub_Movie = 0x41, + DVD_Title_Sub_Video = 0x42, + DVD_Title_Sub_Album = 0x43, + DVD_Title_Sub_Song = 0x44, + DVD_Title_Sub_Other = 0x47, + DVD_Title_Orig_Series = 0x48, + DVD_Title_Orig_Movie = 0x49, + DVD_Title_Orig_Video = 0x4a, + DVD_Title_Orig_Album = 0x4b, + DVD_Title_Orig_Song = 0x4c, + DVD_Title_Orig_Other = 0x4f, + DVD_Other_Scene = 0x50, + DVD_Other_Cut = 0x51, + DVD_Other_Take = 0x52 +}; + +enum DVD_TextCharSet +{ + DVD_CharSet_Unicode = 0, + DVD_CharSet_ISO646 = 1, + DVD_CharSet_JIS_Roman_Kanji = 2, + DVD_CharSet_ISO8859_1 = 3, + DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4 +}; + +typedef struct tagDVD_AudioAttributes +{ + DVD_AUDIO_APPMODE AppMode; + BYTE AppModeData; + DVD_AUDIO_FORMAT AudioFormat; + LCID Language; + DVD_AUDIO_LANG_EXT LanguageExtension; + BOOL fHasMultichannelInfo; + DWORD dwFrequency; + BYTE bQuantization; + BYTE bNumberOfChannels; + DWORD dwReserved[2]; +} DVD_AudioAttributes; + +typedef struct tagDVD_MultichannelAudioAttributes +{ + DVD_MUA_MixingInfo Info[8]; + DVD_MUA_Coeff Coeff[8]; +} DVD_MultichannelAudioAttributes; + +typedef struct tagDVD_VideoAttributes +{ + BOOL fPanscanPermitted; + BOOL fLetterboxPermitted; + ULONG ulAspectX; + ULONG ulAspectY; + ULONG ulFrameRate; + ULONG ulFrameHeight; + DVD_VIDEO_COMPRESSION Compression; + BOOL fLine21Field1InGOP; + BOOL fLine21Field2InGOP; + ULONG ulSourceResolutionX; + ULONG ulSourceResolutionY; + BOOL fIsSourceLetterboxed; + BOOL fIsFilmMode; +} DVD_VideoAttributes; + +typedef struct tagDVD_SubpictureAttributes +{ + DVD_SUBPICTURE_TYPE Type; + DVD_SUBPICTURE_CODING CodingMode; + LCID Language; + DVD_SUBPICTURE_LANG_EXT LanguageExtension; +} DVD_SubpictureAttributes; + +typedef struct tagDVD_KaraokeAttributes +{ + BYTE bVersion; + BOOL fMasterOfCeremoniesInGuideVocal1; + BOOL fDuet; + DVD_KARAOKE_ASSIGNMENT ChannelAssignment; + WORD wChannelContents[8]; +} DVD_KaraokeAttributes; + +typedef struct tagDVD_TitleMainAttributes +{ + union + { + DVD_TITLE_APPMODE AppMode; + DVD_HMSF_TIMECODE TitleLength; + } DUMMYUNIONNAME; + DVD_VideoAttributes VideoAttributes; + ULONG ulNumberOfAudioStreams; + DVD_AudioAttributes AudioAttributes[8]; + DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8]; + ULONG ulNumberOfSubpictureStreams; + DVD_SubpictureAttributes SubpictureAttributes[32]; +} DVD_TitleAttributes; + +typedef struct tagDVD_MenuAttributes +{ + BOOL fCompatibleRegion[8]; + DVD_VideoAttributes VideoAttributes; + BOOL fAudioPresent; + DVD_AudioAttributes AudioAttributes; + BOOL fSubpicturePresent; + DVD_SubpictureAttributes SubpictureAttributes; +} DVD_MenuAttributes; + +cpp_quote ("#define DVD_TITLE_MENU 0x000") +cpp_quote ("#define DVD_STREAM_DATA_VMGM 0x400") +cpp_quote ("#define DVD_STREAM_DATA_VTSM 0x401") +cpp_quote ("#define DVD_STREAM_DATA_CURRENT 0x800") +cpp_quote ("#define DVD_DEFAULT_AUDIO_STREAM 0x00f") + +cpp_quote ("#define DVD_AUDIO_CAPS_AC3 0x00000001") +cpp_quote ("#define DVD_AUDIO_CAPS_MPEG2 0x00000002") +cpp_quote ("#define DVD_AUDIO_CAPS_LPCM 0x00000004") +cpp_quote ("#define DVD_AUDIO_CAPS_DTS 0x00000008") +cpp_quote ("#define DVD_AUDIO_CAPS_SDDS 0x00000010") + +typedef struct tagDVD_DECODER_CAPS +{ + DWORD dwSize; + DWORD dwAudioCaps; + double dFwdMaxRateVideo; + double dFwdMaxRateAudio; + double dFwdMaxRateSP; + double dBwdMaxRateVideo; + double dBwdMaxRateAudio; + double dBwdMaxRateSP; + DWORD dwRes1; + DWORD dwRes2; + DWORD dwRes3; + DWORD dwRes4; +} DVD_DECODER_CAPS; + +typedef enum _AM_DVD_GRAPH_FLAGS +{ + AM_DVD_HWDEC_PREFER = 0x0001, + AM_DVD_HWDEC_ONLY = 0x0002, + AM_DVD_SWDEC_PREFER = 0x0004, + AM_DVD_SWDEC_ONLY = 0x0008, + AM_DVD_NOVPE = 0x0100, + AM_DVD_DO_NOT_CLEAR = 0x0200, + AM_DVD_VMR9_ONLY = 0x0800, + AM_DVD_EVR_ONLY = 0x1000, + AM_DVD_EVR_QOS = 0x2000, + AM_DVD_ADAPT_GRAPH = 0x4000, + AM_DVD_MASK = 0xffff +} AM_DVD_GRAPH_FLAGS; + +typedef enum _AM_DVD_STREAM_FLAGS +{ + AM_DVD_STREAM_VIDEO = 0x01, + AM_DVD_STREAM_AUDIO = 0x02, + AM_DVD_STREAM_SUBPIC = 0x04 +} AM_DVD_STREAM_FLAGS; + +typedef struct tagAM_DVD_RENDERSTATUS +{ + HRESULT hrVPEStatus; + BOOL bDvdVolInvalid; + BOOL bDvdVolUnknown; + BOOL bNoLine21In; + BOOL bNoLine21Out; + int iNumStreams; + int iNumStreamsFailed; + DWORD dwFailedStreamsFlag; +} AM_DVD_RENDERSTATUS; + +[ + local, + object, + uuid(a70efe61-e2a3-11d0-a9be-00aa0061be93), +] +interface IDvdControl : IUnknown +{ + HRESULT TitlePlay([in] ULONG title); + HRESULT ChapterPlay([in] ULONG title, [in] ULONG chapter); + HRESULT TimePlay([in] ULONG title, [in] ULONG time); + HRESULT StopForResume(); + HRESULT GoUp(); + HRESULT TimeSearch([in] ULONG time); + HRESULT ChapterSearch([in] ULONG chapter); + HRESULT PrevPGSearch(); + HRESULT TopPGSearch(); + HRESULT NextPGSearch(); + HRESULT ForwardScan([in] double speed); + HRESULT BackwardScan([in] double speed); + HRESULT MenuCall([in] DVD_MENU_ID id); + HRESULT Resume(); + HRESULT UpperButtonSelect(); + HRESULT LowerButtonSelect(); + HRESULT LeftButtonSelect(); + HRESULT RightButtonSelect(); + HRESULT ButtonActivate(); + HRESULT ButtonSelectActivate([in] ULONG button); + HRESULT StillOff(); + HRESULT PauseOn(); + HRESULT PauseOff(); + HRESULT MenuLanguageSelect([in] LCID language); + HRESULT AudioStreamChange([in] ULONG audio); + HRESULT SubpictureStreamChange([in] ULONG subpicture, [in] BOOL enable); + HRESULT AngleChange([in] ULONG angle); + HRESULT ParentalLevelSelect([in] ULONG level); + HRESULT ParentalCountrySelect([in] WORD country); + HRESULT KaraokeAudioPresentationModeChange([in] ULONG mode); + HRESULT VideoModePreference([in] ULONG mode); + HRESULT SetRoot([in] const WCHAR *path); + HRESULT MouseActivate([in] POINT point); + HRESULT MouseSelect([in] POINT point); + HRESULT ChapterPlayAutoStop([in] ULONG title, [in] ULONG chapter, [in] ULONG count); +} + +[ + local, + object, + uuid(a70efe60-e2a3-11d0-a9be-00aa0061be93), +] +interface IDvdInfo : IUnknown +{ + HRESULT GetCurrentDomain([out] DVD_DOMAIN *domain); + HRESULT GetCurrentLocation([out] DVD_PLAYBACK_LOCATION *location); + HRESULT GetTotalTitleTime([out] ULONG *time); + HRESULT GetCurrentButton([out] ULONG *count, [out] ULONG *current); + HRESULT GetCurrentAngle([out] ULONG *count, [out] ULONG *current); + HRESULT GetCurrentAudio([out] ULONG *count, [out] ULONG *current); + HRESULT GetCurrentSubpicture([out] ULONG *count, [out] ULONG *current, [out] BOOL *enable); + HRESULT GetCurrentUOPS([out] VALID_UOP_SOMTHING_OR_OTHER *uops); + HRESULT GetAllSPRMs([out] SPRMARRAY *regs); + HRESULT GetAllGPRMs([out] GPRMARRAY *regs); + HRESULT GetAudioLanguage([in] ULONG stream, [out] LCID *language); + HRESULT GetSubpictureLanguage([in] ULONG stream, [out] LCID *language); + HRESULT GetTitleAttributes([in] ULONG title, [out] DVD_ATR *attr); + HRESULT GetVMGAttributes([out] DVD_ATR *attr); + HRESULT GetCurrentVideoAttributes([out] DVD_VideoATR *attr); + HRESULT GetCurrentAudioAttributes([out] DVD_AudioATR *attr); + HRESULT GetCurrentSubpictureAttributes([out] DVD_SubpictureATR *attr); + HRESULT GetCurrentVolumeInfo([out] ULONG *volume_count, [out] ULONG *current, [out] DVD_DISC_SIDE *side, [out] ULONG *title_count); + HRESULT GetDVDTextInfo([out, size_is(size)] BYTE *text_manager, [in] ULONG size, [out] ULONG *ret_size); + HRESULT GetPlayerParentalLevel([out] ULONG *level, [out] ULONG *country_code); + HRESULT GetNumberOfChapters([in] ULONG title, [out] ULONG *count); + HRESULT GetTitleParentalLevels([in] ULONG title, [out] ULONG *levels); + HRESULT GetRoot([out, size_is(size)] char *path, [in] ULONG size, [out] ULONG *ret_size); +} + +[ + local, + object, + uuid(5a4a97e4-94ee-4a55-9751-74b5643aa27d), +] +interface IDvdCmd : IUnknown +{ + HRESULT WaitForStart(); + HRESULT WaitForEnd(); +} + +[ + local, + object, + uuid(86303d6d-1c4a-4087-ab42-f711167048ef), +] +interface IDvdState : IUnknown +{ + HRESULT GetDiscID([out] ULONGLONG *id); + HRESULT GetParentalLevel([out] ULONG *level); +} + +[ + local, + object, + uuid(33bc7430-eec0-11d2-8201-00a0c9d74842), +] +interface IDvdControl2 : IUnknown +{ + HRESULT PlayTitle([in] ULONG title, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayChapterInTitle([in] ULONG title, [in] ULONG chapter, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayTimeInTitle([in] ULONG title, [in] DVD_HMSF_TIMECODE *time, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT Stop(); + HRESULT ReturnFromSubmenu([in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayAtTime([in] DVD_HMSF_TIMECODE *time, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayChapter([in] ULONG chapter, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayPrevChapter([in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT ReplayChapter([in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayNextChapter([in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayForwards([in] double speed, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayBackwards([in] double speed, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT ShowMenu([in] DVD_MENU_ID id, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT Resume([in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SelectRelativeButton([in] DVD_RELATIVE_BUTTON button); + HRESULT ActivateButton(); + HRESULT SelectButton([in] ULONG button); + HRESULT SelectAndActivateButton([in] ULONG button); + HRESULT StillOff(); + HRESULT Pause([in] BOOL enable); + HRESULT SelectAudioStream([in] ULONG stream, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SelectSubpictureStream([in] ULONG stream, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SetSubpictureState([in] BOOL enable, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SelectAngle([in] ULONG angle, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SelectParentalLevel([in] ULONG level); + HRESULT SelectParentalCountry([in] BYTE country[2]); + HRESULT SelectKaraokeAudioPresentationMode([in] ULONG mode); + HRESULT SelectVideoModePreference([in] ULONG mode); + HRESULT SetDVDDirectory([in] const WCHAR *path); + HRESULT ActivateAtPosition([in] POINT point); + HRESULT SelectAtPosition([in] POINT point); + HRESULT PlayChaptersAutoStop([in] ULONG title, [in] ULONG chapter, [in] ULONG count, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT AcceptParentalLevelChange([in] BOOL accept); + HRESULT SetOption([in] DVD_OPTION_FLAG flag, [in] BOOL option); + HRESULT SetState([in] IDvdState *state, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT PlayPeriodInTitleAutoStop([in] ULONG title, [in] DVD_HMSF_TIMECODE *start_time, [in] DVD_HMSF_TIMECODE *end_time, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SetGRPM([in] ULONG index, [in] WORD value, [in] DWORD flags, [out] IDvdCmd **cmd); + HRESULT SelectDefaultMenuLanguage([in] LCID language); + HRESULT SelectDefaultAudioLanguage([in] LCID language, [in] DVD_AUDIO_LANG_EXT extension); + HRESULT SelectDefaultSubpictureLanguage([in] LCID language, [in] DVD_SUBPICTURE_LANG_EXT extension); +} + +[ + local, + object, + uuid(34151510-eec0-11d2-8201-00a0c9d74842), +] +interface IDvdInfo2 : IUnknown +{ + HRESULT GetCurrentDomain([out] DVD_DOMAIN *domain); + HRESULT GetCurrentLocation([out] DVD_PLAYBACK_LOCATION2 *location); + HRESULT GetTotalTitleTime([out] DVD_HMSF_TIMECODE *time, [out] ULONG *flags); + HRESULT GetCurrentButton([out] ULONG *count, [out] ULONG *current); + HRESULT GetCurrentAngle([out] ULONG *count, [out] ULONG *current); + HRESULT GetCurrentAudio([out] ULONG *count, [out] ULONG *current); + HRESULT GetCurrentSubpicture([out] ULONG *count, [out] ULONG *current, [out] BOOL *enable); + HRESULT GetCurrentUOPS([out] ULONG *uops); + HRESULT GetAllSPRMs([out] SPRMARRAY *regs); + HRESULT GetAllGPRMs([out] GPRMARRAY *regs); + HRESULT GetAudioLanguage([in] ULONG stream, [out] LCID *language); + HRESULT GetSubpictureLanguage([in] ULONG stream, [out] LCID *language); + HRESULT GetTitleAttributes([in] ULONG title, [out] DVD_MenuAttributes *menu, [out] DVD_TitleAttributes *title); + HRESULT GetVMGAttributes([out] DVD_MenuAttributes *attr); + HRESULT GetVideoAttributes([out] DVD_VideoAttributes *attr); + HRESULT GetAudioAttributes([in] ULONG stream, [out] DVD_AudioAttributes *attr); + HRESULT GetKaraokeAttributes([in] ULONG stream, [out] DVD_KaraokeAttributes *attr); + HRESULT GetSubpictureAttributes([in] ULONG stream, [out] DVD_SubpictureAttributes *attr); + HRESULT GetCurrentVolumeInfo([out] ULONG *volume_count, [out] ULONG *current, [out] DVD_DISC_SIDE *side, [out] ULONG *title_count); + HRESULT GetDVDTextNumberOfLanguages([out] ULONG *count); + HRESULT GetDVDTextLanguageInfo([in] ULONG index, [out] ULONG *string_count, [out] LCID *language, [out] enum DVD_TextCharSet *character_set); + HRESULT GetDVDTextStringAsNative([in] ULONG lang_index, [in] ULONG string_index, [out] BYTE *string, [in] ULONG size, [out] ULONG *ret_size, [out] enum DVD_TextStringType *type); + HRESULT GetDVDTextStringAsUnicode([in] ULONG lang_index, [in] ULONG string_index, [out] WCHAR *string, [in] ULONG size, [out] ULONG *ret_size, [out] enum DVD_TextStringType *type); + HRESULT GetPlayerParentalLevel([out] ULONG *level, [out] BYTE country_code[2]); + HRESULT GetNumberOfChapters([in] ULONG title, [out] ULONG *count); + HRESULT GetTitleParentalLevels([in] ULONG title, [out] ULONG *levels); + HRESULT GetDVDDirectory([out, size_is(size)] WCHAR *path, [in] ULONG size, [out] ULONG *ret_size); + HRESULT IsAudioStreamEnabled([in] ULONG stream, [out] BOOL *enable); + HRESULT GetDiscID([in] const WCHAR *path, [out] ULONGLONG *id); + HRESULT GetState([out] IDvdState **state); + HRESULT GetMenuLanguages([out] LCID *languages, [in] ULONG count, [out] ULONG *ret_count); + HRESULT GetButtonAtPosition([in] POINT point, [out] ULONG *button); + HRESULT GetCmdFromEvent([in] LONG_PTR param, [out] IDvdCmd **cmd); + HRESULT GetDefaultMenuLanguage([out] LCID *language); + HRESULT GetDefaultAudioLanguage([out] LCID *language, [out] DVD_AUDIO_LANG_EXT *extension); + HRESULT SelectDefaultSubpictureLanguage([out] LCID *language, [out] DVD_SUBPICTURE_LANG_EXT *extension); + HRESULT GetDecoderCaps([out] DVD_DECODER_CAPS *caps); + HRESULT GetButtonRect([in] ULONG button, [out] RECT *rect); + HRESULT IsSubpictureStreamEnabled([in] ULONG stream, [out] BOOL *enable); +} + +[ + local, + object, + uuid(fcc152b6-f372-11d0-8e00-00c04fd7c08b), +] +interface IDvdGraphBuilder : IUnknown +{ + HRESULT GetFiltergraph([out] IGraphBuilder **graph); + HRESULT GetDvdInterface([in] REFIID iid, [out] void **out); + HRESULT RenderDvdVideoVolume([in] const WCHAR *path, [in] DWORD flags, [out] AM_DVD_RENDERSTATUS *status); +} diff --git a/include/strmif.idl b/include/strmif.idl index a06f99b751..8c140dcbfd 100644 --- a/include/strmif.idl +++ b/include/strmif.idl @@ -20,12 +20,8 @@ import "unknwn.idl"; import "objidl.idl";
#include <devenum.idl> - #include <axcore.idl> - #include <axextend.idl> - #include <dyngraph.idl> - -/* TODO: #include <dvdif.h> */ #include <vmrender.idl> +#include <dvdif.idl>