mirror of
https://github.com/bdnugget/Magic-Vision.git
synced 2026-11-07 09:17:36 +00:00
501 lines
12 KiB
C#
501 lines
12 KiB
C#
/******************************************************
|
|
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
|