/******************************************************
DirectShow .NET
netmaster@swissonline.ch
*******************************************************/
// DsControl
// basic Quartz control interfaces, ported from control.odl
using System;
using System.Runtime.InteropServices;
namespace DShowNET
{
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("56a868b1-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual)]
public interface IMediaControl
{
[PreserveSig]
int Run();
[PreserveSig]
int Pause();
[PreserveSig]
int Stop();
[PreserveSig]
int GetState( int msTimeout, out int pfs );
[PreserveSig]
int RenderFile( string strFilename );
[PreserveSig]
int AddSourceFilter(
[In] string strFilename,
[Out, MarshalAs(UnmanagedType.IDispatch)] out object ppUnk );
[PreserveSig]
int get_FilterCollection(
[Out, MarshalAs(UnmanagedType.IDispatch)] out object ppUnk );
[PreserveSig]
int get_RegFilterCollection(
[Out, MarshalAs(UnmanagedType.IDispatch)] out object ppUnk );
[PreserveSig]
int StopWhenReady();
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("56a868b6-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual)]
public interface IMediaEvent
{
[PreserveSig]
int GetEventHandle( out IntPtr hEvent );
[PreserveSig]
int GetEvent( out DsEvCode lEventCode, out int lParam1, out int lParam2, int msTimeout );
[PreserveSig]
int WaitForCompletion( int msTimeout, out int pEvCode );
[PreserveSig]
int CancelDefaultHandling( int lEvCode );
[PreserveSig]
int RestoreDefaultHandling( int lEvCode );
[PreserveSig]
int FreeEventParams( DsEvCode lEvCode, int lParam1, int lParam2 );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("56a868c0-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual)]
public interface IMediaEventEx
{
#region "IMediaEvent Methods"
[PreserveSig]
int GetEventHandle( out IntPtr hEvent );
[PreserveSig]
int GetEvent( out DsEvCode lEventCode, out int lParam1, out int lParam2, int msTimeout );
[PreserveSig]
int WaitForCompletion( int msTimeout, [Out] out int pEvCode );
[PreserveSig]
int CancelDefaultHandling( int lEvCode );
[PreserveSig]
int RestoreDefaultHandling( int lEvCode );
[PreserveSig]
int FreeEventParams( DsEvCode lEvCode, int lParam1, int lParam2 );
#endregion
[PreserveSig]
int SetNotifyWindow( IntPtr hwnd, int lMsg, IntPtr lInstanceData );
[PreserveSig]
int SetNotifyFlags( int lNoNotifyFlags );
[PreserveSig]
int GetNotifyFlags( out int lplNoNotifyFlags );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("329bb360-f6ea-11d1-9038-00a0c9697298"),
InterfaceType( ComInterfaceType.InterfaceIsDual)]
public interface IBasicVideo2
{
[PreserveSig]
int AvgTimePerFrame( out double pAvgTimePerFrame );
[PreserveSig]
int BitRate( out int pBitRate );
[PreserveSig]
int BitErrorRate( out int pBitRate );
[PreserveSig]
int VideoWidth( out int pVideoWidth );
[PreserveSig]
int VideoHeight( out int pVideoHeight );
[PreserveSig]
int put_SourceLeft( int SourceLeft );
[PreserveSig]
int get_SourceLeft( out int pSourceLeft );
[PreserveSig]
int put_SourceWidth( int SourceWidth );
[PreserveSig]
int get_SourceWidth( out int pSourceWidth );
[PreserveSig]
int put_SourceTop( int SourceTop );
[PreserveSig]
int get_SourceTop( out int pSourceTop );
[PreserveSig]
int put_SourceHeight( int SourceHeight );
[PreserveSig]
int get_SourceHeight( out int pSourceHeight );
[PreserveSig]
int put_DestinationLeft( int DestinationLeft );
[PreserveSig]
int get_DestinationLeft( out int pDestinationLeft );
[PreserveSig]
int put_DestinationWidth( int DestinationWidth );
[PreserveSig]
int get_DestinationWidth( out int pDestinationWidth );
[PreserveSig]
int put_DestinationTop( int DestinationTop );
[PreserveSig]
int get_DestinationTop( out int pDestinationTop );
[PreserveSig]
int put_DestinationHeight( int DestinationHeight );
[PreserveSig]
int get_DestinationHeight( out int pDestinationHeight );
[PreserveSig]
int SetSourcePosition( int left, int top, int width, int height );
[PreserveSig]
int GetSourcePosition( out int left, out int top, out int width, out int height );
[PreserveSig]
int SetDefaultSourcePosition();
[PreserveSig]
int SetDestinationPosition( int left, int top, int width, int height );
[PreserveSig]
int GetDestinationPosition( out int left, out int top, out int width, out int height );
[PreserveSig]
int SetDefaultDestinationPosition();
[PreserveSig]
int GetVideoSize( out int pWidth, out int pHeight );
[PreserveSig]
int GetVideoPaletteEntries( int StartIndex, int Entries, out int pRetrieved, IntPtr pPalette );
[PreserveSig]
int GetCurrentImage( ref int pBufferSize, IntPtr pDIBImage );
[PreserveSig]
int IsUsingDefaultSource();
[PreserveSig]
int IsUsingDefaultDestination();
[PreserveSig]
int GetPreferredAspectRatio( out int plAspectX, out int plAspectY );
}
[ComVisible(true), ComImport,
Guid("56a868b4-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual )]
public interface IVideoWindow
{
[PreserveSig]
int put_Caption( string caption );
[PreserveSig]
int get_Caption( [Out] out string caption );
[PreserveSig]
int put_WindowStyle( int windowStyle );
[PreserveSig]
int get_WindowStyle( out int windowStyle );
[PreserveSig]
int put_WindowStyleEx( int windowStyleEx );
[PreserveSig]
int get_WindowStyleEx( out int windowStyleEx );
[PreserveSig]
int put_AutoShow( int autoShow );
[PreserveSig]
int get_AutoShow( out int autoShow );
[PreserveSig]
int put_WindowState( int windowState );
[PreserveSig]
int get_WindowState( out int windowState );
[PreserveSig]
int put_BackgroundPalette( int backgroundPalette );
[PreserveSig]
int get_BackgroundPalette( out int backgroundPalette );
[PreserveSig]
int put_Visible( int visible );
[PreserveSig]
int get_Visible( out int visible );
[PreserveSig]
int put_Left( int left );
[PreserveSig]
int get_Left( out int left );
[PreserveSig]
int put_Width( int width );
[PreserveSig]
int get_Width( out int width );
[PreserveSig]
int put_Top( int top );
[PreserveSig]
int get_Top( out int top );
[PreserveSig]
int put_Height( int height );
[PreserveSig]
int get_Height( out int height );
[PreserveSig]
int put_Owner( IntPtr owner );
[PreserveSig]
int get_Owner( out IntPtr owner );
[PreserveSig]
int put_MessageDrain( IntPtr drain );
[PreserveSig]
int get_MessageDrain( out IntPtr drain );
[PreserveSig]
int get_BorderColor( out int color );
[PreserveSig]
int put_BorderColor( int color );
[PreserveSig]
int get_FullScreenMode( out int fullScreenMode );
[PreserveSig]
int put_FullScreenMode( int fullScreenMode );
[PreserveSig]
int SetWindowForeground( int focus );
[PreserveSig]
int NotifyOwnerMessage( IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam );
[PreserveSig]
int SetWindowPosition( int left, int top, int width, int height );
[PreserveSig]
int GetWindowPosition( out int left, out int top, out int width, out int height );
[PreserveSig]
int GetMinIdealImageSize( out int width, out int height );
[PreserveSig]
int GetMaxIdealImageSize( out int width, out int height );
[PreserveSig]
int GetRestorePosition( out int left, out int top, out int width, out int height );
[PreserveSig]
int HideCursor( int hideCursor );
[PreserveSig]
int IsCursorHidden( out int hideCursor );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("56a868b2-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual )]
public interface IMediaPosition
{
[PreserveSig]
int get_Duration( out double pLength );
[PreserveSig]
int put_CurrentPosition( double llTime );
[PreserveSig]
int get_CurrentPosition( out double pllTime );
[PreserveSig]
int get_StopTime( out double pllTime );
[PreserveSig]
int put_StopTime( double llTime );
[PreserveSig]
int get_PrerollTime( out double pllTime );
[PreserveSig]
int put_PrerollTime( double llTime );
[PreserveSig]
int put_Rate( double dRate );
[PreserveSig]
int get_Rate( out double pdRate );
[PreserveSig]
int CanSeekForward( out int pCanSeekForward );
[PreserveSig]
int CanSeekBackward( out int pCanSeekBackward );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("56a868b3-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual )]
public interface IBasicAudio
{
[PreserveSig]
int put_Volume( int lVolume );
[PreserveSig]
int get_Volume( out int plVolume );
[PreserveSig]
int put_Balance( int lBalance );
[PreserveSig]
int get_Balance( out int plBalance );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("56a868b9-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsDual )]
public interface IAMCollection
{
[PreserveSig]
int get_Count( out int plCount );
[PreserveSig]
int Item( int lItem,
[Out, MarshalAs(UnmanagedType.IUnknown) ] out object ppUnk );
[PreserveSig]
int get_NewEnum(
[Out, MarshalAs(UnmanagedType.IUnknown) ] out object ppUnk );
}
public enum DsEvCode
{
None,
Complete = 0x01, // EC_COMPLETE
UserAbort = 0x02, // EC_USERABORT
ErrorAbort = 0x03, // EC_ERRORABORT
Time = 0x04, // EC_TIME
Repaint = 0x05, // EC_REPAINT
StErrStopped = 0x06, // EC_STREAM_ERROR_STOPPED
StErrStPlaying = 0x07, // EC_STREAM_ERROR_STILLPLAYING
ErrorStPlaying = 0x08, // EC_ERROR_STILLPLAYING
PaletteChanged = 0x09, // EC_PALETTE_CHANGED
VideoSizeChanged = 0x0a, // EC_VIDEO_SIZE_CHANGED
QualityChange = 0x0b, // EC_QUALITY_CHANGE
ShuttingDown = 0x0c, // EC_SHUTTING_DOWN
ClockChanged = 0x0d, // EC_CLOCK_CHANGED
Paused = 0x0e, // EC_PAUSED
OpeningFile = 0x10, // EC_OPENING_FILE
BufferingData = 0x11, // EC_BUFFERING_DATA
FullScreenLost = 0x12, // EC_FULLSCREEN_LOST
Activate = 0x13, // EC_ACTIVATE
NeedRestart = 0x14, // EC_NEED_RESTART
WindowDestroyed = 0x15, // EC_WINDOW_DESTROYED
DisplayChanged = 0x16, // EC_DISPLAY_CHANGED
Starvation = 0x17, // EC_STARVATION
OleEvent = 0x18, // EC_OLE_EVENT
NotifyWindow = 0x19, // EC_NOTIFY_WINDOW
// EC_ ....
// DVDevCod.h
DvdDomChange = 0x101, // EC_DVD_DOMAIN_CHANGE
DvdTitleChange = 0x102, // EC_DVD_TITLE_CHANGE
DvdChaptStart = 0x103, // EC_DVD_CHAPTER_START
DvdAudioStChange = 0x104, // EC_DVD_AUDIO_STREAM_CHANGE
DvdSubPicStChange = 0x105, // EC_DVD_SUBPICTURE_STREAM_CHANGE
DvdAngleChange = 0x106, // EC_DVD_ANGLE_CHANGE
DvdButtonChange = 0x107, // EC_DVD_BUTTON_CHANGE
DvdValidUopsChange = 0x108, // EC_DVD_VALID_UOPS_CHANGE
DvdStillOn = 0x109, // EC_DVD_STILL_ON
DvdStillOff = 0x10a, // EC_DVD_STILL_OFF
DvdCurrentTime = 0x10b, // EC_DVD_CURRENT_TIME
DvdError = 0x10c, // EC_DVD_ERROR
DvdWarning = 0x10d, // EC_DVD_WARNING
DvdChaptAutoStop = 0x10e, // EC_DVD_CHAPTER_AUTOSTOP
DvdNoFpPgc = 0x10f, // EC_DVD_NO_FP_PGC
DvdPlaybRateChange = 0x110, // EC_DVD_PLAYBACK_RATE_CHANGE
DvdParentalLChange = 0x111, // EC_DVD_PARENTAL_LEVEL_CHANGE
DvdPlaybStopped = 0x112, // EC_DVD_PLAYBACK_STOPPED
DvdAnglesAvail = 0x113, // EC_DVD_ANGLES_AVAILABLE
DvdPeriodAStop = 0x114, // EC_DVD_PLAYPERIOD_AUTOSTOP
DvdButtonAActivated = 0x115, // EC_DVD_BUTTON_AUTO_ACTIVATED
DvdCmdStart = 0x116, // EC_DVD_CMD_START
DvdCmdEnd = 0x117, // EC_DVD_CMD_END
DvdDiscEjected = 0x118, // EC_DVD_DISC_EJECTED
DvdDiscInserted = 0x119, // EC_DVD_DISC_INSERTED
DvdCurrentHmsfTime = 0x11a, // EC_DVD_CURRENT_HMSF_TIME
DvdKaraokeMode = 0x11b // EC_DVD_KARAOKE_MODE
}
} // namespace DShowNET