📄 dvdif.idl
字号:
( [out, size_is(ulBufSize)] LPSTR pRoot, // pointer to buffer to get root string
[in] ULONG ulBufSize, // size of buffer passed in
[out] ULONG *pulActualSize // size of actual data returned
);
}
//==========================================================================
//==========================================================================
// IDvdCmd interface -- the IDVDControl2 command sequencing object.
//
// For the IDVDControl2 interface, the application can track the status of
// commands that have been issued to the navigator. Each command is identified
// by an IDvdCmd object. The IDvdCmd object stores the results of the command
// at both the start (when the command has begun processing) and the end after
// it has completed. It also allows the app to synchronize with the processing
// of the command.
//
// The command object also allows the app to uniquely identify and correlate
// completion events (if it prefers to process events in a message loop instead
// of creating another process).
//
// Allows the app to track the status of an issued command to the nav.
//==========================================================================
//==========================================================================
[
object,
uuid(5a4a97e4-94ee-4a55-9751-74b5643aa27d),
pointer_default(unique)
]
interface IDvdCmd : IUnknown {
import "unknwn.idl";
//
// WaitForStart
//
// Blocks the application until the command has begun.
//
HRESULT WaitForStart();
//
// WaitForEnd
//
// Blocks until the command has completed or has been cancelled.
HRESULT WaitForEnd();
}
//==========================================================================
//==========================================================================
// IDvdState interface -- the State state object.
//
// Whenever the application wishes to save or restore a location on the disc,
// it needs to store the DVD state into an object.
// The State object supports the IPersistStream
//
//==========================================================================
//==========================================================================
[
object,
uuid(86303d6d-1c4a-4087-ab42-f711167048ef),
pointer_default(unique)
]
interface IDvdState : IUnknown
{
//
// GetDiscID
//
// Returns the disc ID from which the bookmark was made.
//
HRESULT GetDiscID
( [out] ULONGLONG* pullUniqueID ); // 64-bit unique id for the disc
//
// GetParentalLevel
//
// Returns the state's parental level
//
HRESULT GetParentalLevel
( [out] ULONG* pulParentalLevel );
}
//==========================================================================
//==========================================================================
// IDvdControl2 interface -- Basic DVD-Video playback control.
// This is modeled after the app control of a player specified in Annex J
// of the DVD Video spec. IDvdInfo2 can be used to get information useful
// in using IDvdControl2
//==========================================================================
//==========================================================================
[
object,
uuid(33BC7430-EEC0-11D2-8201-00A0C9D74842),
pointer_default(unique)
]
interface IDvdControl2 : IUnknown {
import "unknwn.idl";
// PlayTitle
//
// Start playing from the beginning of the specified title number.
// Annex J: Title_Play
// Title numbers range between 1 and 99.
HRESULT PlayTitle
( [in] ULONG ulTitle,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// PlayChapterInTitle
//
// Start playing from the beginning of the given chapter (or part-of-title) number
// within the specified title number.
// Annex J: PTT_Play
// Title numbers range between 1 and 99.
// Chapters range from 1 to 999.
HRESULT PlayChapterInTitle
( [in] ULONG ulTitle,
[in] ULONG ulChapter,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// PlayAtTimeInTitle
//
// Start playing from the specified time within the specified title number.
// NOTE: the actual start time will be the closest sync point before
// or equal to the specified frame number.
// Annex J: Time_Play
// Title numbers range between 1 and 99.
HRESULT PlayAtTimeInTitle
( [in] ULONG ulTitle,
[in] DVD_HMSF_TIMECODE* pStartTime,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// Stop
// Stop playback by transferring DVD Navigator to the DVD "Stop State" (same
// as DVD_DOMAIN_Stop), but filter graph remains in DirectShow's Run state.
// Annex J: Stop
HRESULT Stop();
// ReturnFromSubmenu
//
// Stop playback of current program chain (PGC) and start playing the PGC
// specified by "GoUp_PGCN".in the PGCI.
// If the GoUp_PGCN value is 0xFFFF the Resume() operation is carried out.
// Annex J: GoUp
HRESULT ReturnFromSubmenu(
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd );
// PlayAtTime
// Start playing at the specified time within the current title.
// NOTE: the actual start time will be the closest sync point before
// or equal to the specified frame number.
// Annex J: Time_Search
// The time is in BCD format, passed in as a ULONG.
HRESULT PlayAtTime
( [in] DVD_HMSF_TIMECODE* pTime,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// PlayChapter
// Start playing at the specified chapter (or part-of-title) within
// the current title.
// Annex J: PTT_Search
// Chapters range from 1 to 999.
HRESULT PlayChapter
( [in] ULONG ulChapter,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// PlayPrevChapter
// Start playing at the beginning of the previous DVD "program".
// For One-Sequential_PGC_Titles (which includes most titles) a program
// is equivalent to a chapter, otherwise a program is part of a chapter.
// Annex J: PrevPG_Search
HRESULT PlayPrevChapter(
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd );
// ReplayChapter
// Start playing from the beginning of they current program.
// Annex J: TopPG_Search
HRESULT ReplayChapter(
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd );
// PlayNextChapter
// Start playing from the beginning of the next program.
// Annex J: NextPG_Search
HRESULT PlayNextChapter(
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd );
// PlayForwards
// Set forward play at the specified speed.
// Annex J: Forward_Scan
// dSpeed == 1 is normal play
// dSpeed < 1 is slow play
// dSpeed > 1 is fast play
// For dSpeed != 1, audio and subpicture is muted.
HRESULT PlayForwards
( [in] double dSpeed,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// PlayBackwards
// Set reverse play at the specified speed.
// Annex J: Backward_Scan
// dSpeed == 1 is normal play speed in reverse
// dSpeed < 1 is slow play in reverse
// dSpeed > 1 is fast play in reverse
// For reverse play, audio and subpicture are always muted.
HRESULT PlayBackwards
( [in] double dSpeed,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// ShowMenu
// Start playback of the Menu specified by an enum DVD_MENU_ID.
// Annex J: Menu_Call
HRESULT ShowMenu
( [in] DVD_MENU_ID MenuID,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// Resume
// Returns to title playback in DVD_DOMAIN_Title. This is typically
// done after MenuCall which puts the DVD Navigator in
// DVD_DOMAIN_VideoTitleSetMenu or DVD_DOMAIN_VideoManagerMenu.
// Annex J: Resume
HRESULT Resume(
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd );
// SelectRelativeButton
// Moves the selection highlight above, below, to the left of, or to the right of the
// currently selected.
// "Selecting" a DVD button simply highlights the button but does
// not "Activate" the button. Selecting is the Windows equivalent
// to tabbing to a button but not pressing the space bar or enter key.
// Activating is the Windows equivalent of pressing the space bar or
// enter key after tabbing to a button.
// Annex J: Upper_button_Select, Lower_button_Select, Left_button_Select, Right_button_Select
HRESULT SelectRelativeButton( DVD_RELATIVE_BUTTON buttonDir );
// ActivateButton
// Activates current button.
// Annex J: Button_Activate
HRESULT ActivateButton();
// SelectButton
// Selects a specific button (with the index from 1 to 36).
// ulButton is intended to be a number entered by a user corresponding
// to button numbers currently displayed on screen.
// Button numbers range from 1 to 36.
HRESULT SelectButton
( [in] ULONG ulButton
);
// SelectAndActivateButton
// Selects and then activates the button specified by the user.
// ulButton is intended to be a number entered by a user corresponding
// to button numbers currently displayed on screen.
// Annex J: Button_Select_And_Activate
// Button numbers range from 1 to 36.
HRESULT SelectAndActivateButton
( [in] ULONG ulButton
);
// StillOff
// Releases any current still if there are no available buttons.
// This includes VOBU stills, Cell stills, and PGC stills, whether the
// still is infinite. When buttons are available, stills are released by
// activating a button. Note this does not release a Pause.
// Annex J: Still_Off
HRESULT StillOff();
// Pause
// Freezes / unfreezes playback and any internal timers. This is similar to
// IMediaControl::Pause(), but not the same in effect as IMediaControl::Pause
// puts the filter (all filters, if done to the graph) in paused state.
// Annex J: Pause_On and Pause_Off
// bState is TRUE or FALSE to indicate whether to do Puase_on/Pause_Off according
// to Annex J terminology.
HRESULT Pause
( [in] BOOL bState
);
// SelectAudioStream
// Changes the current audio stream to ulAudio.
// Annex J: Audio_Stream_Change
// Audio stream number ranges between 0 and 7 or DEFAULT_AUDIO_STREAM (15 - default based on default language & language extension)
HRESULT SelectAudioStream
( [in] ULONG ulAudio,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// SelectSubpictureStream
// Changes the current subpicture stream number to ulSubPicture
// Annex J: Sub-picture_Stream_Change (first param)
// Subpicture stream number should be between 0 and 31 or 63.
HRESULT SelectSubpictureStream
( [in] ULONG ulSubPicture,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// SetSubpictureState
// Turns on/off current subpicture stream display.
// Annex J: Sub-picture_Stream_Change (second param)
// Subpicture state is On or Off (TRUE or FALSE)
HRESULT SetSubpictureState
( [in] BOOL bState,
[in] DWORD dwFlags,
[out] IDvdCmd** ppCmd
);
// SelectAngle
// Changes the current angle number.
// Annex J: Angle_Change
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -