📄 dsdvd.cs
字号:
/******************************************************
DirectShow .NET
netmaster@swissonline.ch
*******************************************************/
// DsDVD
// DVD interfaces, ported from dvdif.idl
using System;
using System.Runtime.InteropServices;
namespace DShowNET.Dvd
{
// =================================================================================================
// DVD GRAPH
// =================================================================================================
[Flags]
public enum DvdGraphFlags // AM_DVD_GRAPH_FLAGS
{
Default = 0x00000000,
HwDecPrefer = 0x00000001, // AM_DVD_HWDEC_PREFER
HwDecOnly = 0x00000002, // AM_DVD_HWDEC_ONLY
SwDecPrefer = 0x00000004, // AM_DVD_SWDEC_PREFER
SwDecOnly = 0x00000008, // AM_DVD_SWDEC_ONLY
NoVpe = 0x00000100 // AM_DVD_NOVPE
}
[Flags]
public enum DvdStreamFlags // AM_DVD_STREAM_FLAGS
{
None = 0x00000000,
Video = 0x00000001, // AM_DVD_STREAM_VIDEO
Audio = 0x00000002, // AM_DVD_STREAM_AUDIO
SubPic = 0x00000004 // AM_DVD_STREAM_SUBPIC
}
[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]
public struct DvdRenderStatus // AM_DVD_RENDERSTATUS
{
public int vpeStatus;
public bool volInvalid;
public bool volUnknown;
public bool noLine21In;
public bool noLine21Out;
public int numStreams;
public int numStreamsFailed;
public DvdStreamFlags failedStreams;
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("FCC152B6-F372-11d0-8E00-00C04FD7C08B"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IDvdGraphBuilder
{
[PreserveSig]
int GetFiltergraph(
[Out] out IGraphBuilder ppGB );
[PreserveSig]
int GetDvdInterface(
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown) ] out object ppvIF );
[PreserveSig]
int RenderDvdVideoVolume(
[In, MarshalAs(UnmanagedType.LPWStr)] string lpcwszPathName,
DvdGraphFlags dwFlags,
[Out] out DvdRenderStatus pStatus );
}
// =================================================================================================
// DVD CONTROL
// =================================================================================================
[Flags]
public enum DvdCmdFlags // DVD_CMD_FLAGS
{
None = 0x00000000, // DVD_CMD_FLAG_None
Flush = 0x00000001, // DVD_CMD_FLAG_Flush
SendEvt = 0x00000002, // DVD_CMD_FLAG_SendEvents
Block = 0x00000004, // DVD_CMD_FLAG_Block
StartWRendered = 0x00000008, // DVD_CMD_FLAG_StartWhenRendered
EndARendered = 0x00000010 // DVD_CMD_FLAG_EndAfterRendered
}
[StructLayout(LayoutKind.Sequential, Pack=1), ComVisible(false)]
public struct DvdTimeCode // DVD_HMSF_TIMECODE
{
public byte bHours;
public byte bMinutes;
public byte bSeconds;
public byte bFrames;
}
public enum DvdMenuID // DVD_MENU_ID
{
Title = 2, // DVD_MENU_Title
Root = 3, // DVD_MENU_Root
Subpicture = 4, // DVD_MENU_Subpicture
Audio = 5, // DVD_MENU_Audio
Angle = 6, // DVD_MENU_Angle
Chapter = 7 // DVD_MENU_Chapter
}
public enum DvdRelButton // DVD_RELATIVE_BUTTON
{
Upper = 1, // DVD_Relative_Upper
Lower = 2, // DVD_Relative_Lower
Left = 3, // DVD_Relative_Left
Right = 4 // DVD_Relative_Right
}
public enum DvdOptionFlag // DVD_OPTION_FLAG
{
ResetOnStop = 1, // DVD_ResetOnStop
NotifyParentalLevelChange = 2, // DVD_NotifyParentalLevelChange
HmsfTimeCodeEvt = 3 // DVD_HMSF_TimeCodeEvents
}
public enum DvdAudioLangExt // DVD_AUDIO_LANG_EXT
{
NotSpecified = 0, // DVD_AUD_EXT_NotSpecified
Captions = 1, // DVD_AUD_EXT_Captions
VisuallyImpaired = 2, // DVD_AUD_EXT_VisuallyImpaired
DirectorComments1 = 3, // DVD_AUD_EXT_DirectorComments1
DirectorComments2 = 4 // DVD_AUD_EXT_DirectorComments2
}
public enum DvdSubPicLangExt // DVD_SUBPICTURE_LANG_EXT
{
NotSpecified = 0, // DVD_SP_EXT_NotSpecified
CaptionNormal = 1, // DVD_SP_EXT_Caption_Normal
CaptionBig = 2, // DVD_SP_EXT_Caption_Big
CaptionChildren = 3, // DVD_SP_EXT_Caption_Children
ClosedNormal = 5, // DVD_SP_EXT_CC_Normal
ClosedBig = 6, // DVD_SP_EXT_CC_Big
ClosedChildren = 7, // DVD_SP_EXT_CC_Children
Forced = 9, // DVD_SP_EXT_Forced
DirectorCmtNormal = 13, // DVD_SP_EXT_DirectorComments_Normal
DirectorCmtBig = 14, // DVD_SP_EXT_DirectorComments_Big
DirectorCmtChildren = 15, // DVD_SP_EXT_DirectorComments_Children
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("33BC7430-EEC0-11D2-8201-00A0C9D74842"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IDvdControl2
{
[PreserveSig]
int PlayTitle( int ulTitle, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayChapterInTitle( int ulTitle, int ulChapter, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayAtTimeInTitle( int ulTitle, [In] ref DvdTimeCode pStartTime, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int Stop();
[PreserveSig]
int ReturnFromSubmenu( DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayAtTime( [In] ref DvdTimeCode pTime, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayChapter( int ulChapter, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayPrevChapter( DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int ReplayChapter( DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayNextChapter( DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayForwards( double dSpeed, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayBackwards( double dSpeed, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int ShowMenu( DvdMenuID MenuID, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int Resume( DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SelectRelativeButton( DvdRelButton buttonDir );
[PreserveSig]
int ActivateButton();
[PreserveSig]
int SelectButton( int ulButton );
[PreserveSig]
int SelectAndActivateButton( int ulButton );
[PreserveSig]
int StillOff();
[PreserveSig]
int Pause(
[In, MarshalAs(UnmanagedType.Bool)] bool bState );
[PreserveSig]
int SelectAudioStream( int ulAudio, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SelectSubpictureStream( int ulSubPicture, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SetSubpictureState(
[In, MarshalAs(UnmanagedType.Bool)] bool bState,
DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SelectAngle( int ulAngle, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SelectParentalLevel( int ulParentalLevel );
[PreserveSig]
int SelectParentalCountry( byte[] bCountry );
[PreserveSig]
int SelectKaraokeAudioPresentationMode( int ulMode );
[PreserveSig]
int SelectVideoModePreference( int ulPreferredDisplayMode );
[PreserveSig]
int SetDVDDirectory(
[In, MarshalAs(UnmanagedType.LPWStr)] string pszwPath );
[PreserveSig]
int ActivateAtPosition( DsPOINT point );
[PreserveSig]
int SelectAtPosition( DsPOINT point );
[PreserveSig]
int PlayChaptersAutoStop( int ulTitle, int ulChapter, int ulChaptersToPlay, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int AcceptParentalLevelChange(
[In, MarshalAs(UnmanagedType.Bool)] bool bAccept );
[PreserveSig]
int SetOption( DvdOptionFlag flag,
[In, MarshalAs(UnmanagedType.Bool)] bool fState );
[PreserveSig]
int SetState( IDvdState pState, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int PlayPeriodInTitleAutoStop( int ulTitle,
[In] ref DvdTimeCode pStartTime,
[In] ref DvdTimeCode pEndTime,
DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SetGPRM( int ulIndex, short wValue, DvdCmdFlags dwFlags,
[Out] OptIDvdCmd ppCmd );
[PreserveSig]
int SelectDefaultMenuLanguage( int Language );
[PreserveSig]
int SelectDefaultAudioLanguage( int Language, DvdAudioLangExt audioExtension );
[PreserveSig]
int SelectDefaultSubpictureLanguage( int Language, DvdSubPicLangExt subpictureExtension );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("5a4a97e4-94ee-4a55-9751-74b5643aa27d"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IDvdCmd
{
[PreserveSig]
int WaitForStart();
[PreserveSig]
int WaitForEnd();
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("86303d6d-1c4a-4087-ab42-f711167048ef"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IDvdState
{
[PreserveSig]
int GetDiscID( [Out] out long pullUniqueID );
[PreserveSig]
int GetParentalLevel( [Out] out int pulParentalLevel );
}
// =================================================================================================
// DVD INFO
// =================================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -