📄 dsextend.cs
字号:
/******************************************************
DirectShow .NET
netmaster@swissonline.ch
*******************************************************/
// DsExtend
// Extended streaming interfaces, ported from axextend.idl
using System;
using System.Drawing;
using System.Runtime.InteropServices;
namespace DShowNET
{
[ComVisible(true), ComImport,
Guid("93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface ICaptureGraphBuilder2
{
[PreserveSig]
int SetFiltergraph( [In] IGraphBuilder pfg );
[PreserveSig]
int GetFiltergraph( [Out] out IGraphBuilder ppfg );
[PreserveSig]
int SetOutputFileName(
[In] ref Guid pType,
[In, MarshalAs(UnmanagedType.LPWStr)] string lpstrFile,
[Out] out IBaseFilter ppbf,
[Out] out IFileSinkFilter ppSink );
[PreserveSig]
int FindInterface(
[In] ref Guid pCategory,
[In] ref Guid pType,
[In] IBaseFilter pbf,
[In] ref Guid riid,
[Out, MarshalAs(UnmanagedType.IUnknown) ] out object ppint );
[PreserveSig]
int RenderStream(
[In] ref Guid pCategory,
[In] ref Guid pType,
[In, MarshalAs(UnmanagedType.IUnknown)] object pSource,
[In] IBaseFilter pfCompressor,
[In] IBaseFilter pfRenderer );
[PreserveSig]
int ControlStream(
[In] ref Guid pCategory,
[In] ref Guid pType,
[In] IBaseFilter pFilter,
[In] long pstart,
[In] long pstop,
[In] short wStartCookie,
[In] short wStopCookie );
[PreserveSig]
int AllocCapFile(
[In, MarshalAs(UnmanagedType.LPWStr)] string lpstrFile,
[In] long dwlSize );
[PreserveSig]
int CopyCaptureFile(
[In, MarshalAs(UnmanagedType.LPWStr)] string lpwstrOld,
[In, MarshalAs(UnmanagedType.LPWStr)] string lpwstrNew,
[In] int fAllowEscAbort,
[In] IAMCopyCaptureFileProgress pFilter );
[PreserveSig]
int FindPin(
[In] object pSource,
[In] int pindir,
[In] ref Guid pCategory,
[In] ref Guid pType,
[In, MarshalAs(UnmanagedType.Bool) ] bool fUnconnected,
[In] int num,
[Out] out IPin ppPin );
}
[ComVisible(true), ComImport,
Guid("56a868a9-0ad4-11ce-b03a-0020af0ba770"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IGraphBuilder
{
#region "IFilterGraph Methods"
[PreserveSig]
int AddFilter(
[In] IBaseFilter pFilter,
[In, MarshalAs(UnmanagedType.LPWStr)] string pName );
[PreserveSig]
int RemoveFilter( [In] IBaseFilter pFilter );
[PreserveSig]
int EnumFilters( [Out] out IEnumFilters ppEnum );
[PreserveSig]
int FindFilterByName(
[In, MarshalAs(UnmanagedType.LPWStr)] string pName,
[Out] out IBaseFilter ppFilter );
[PreserveSig]
int ConnectDirect( [In] IPin ppinOut, [In] IPin ppinIn,
[In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt );
[PreserveSig]
int Reconnect( [In] IPin ppin );
[PreserveSig]
int Disconnect( [In] IPin ppin );
[PreserveSig]
int SetDefaultSyncSource();
#endregion
[PreserveSig]
int Connect( [In] IPin ppinOut, [In] IPin ppinIn );
[PreserveSig]
int Render( [In] IPin ppinOut );
[PreserveSig]
int RenderFile(
[In, MarshalAs(UnmanagedType.LPWStr)] string lpcwstrFile,
[In, MarshalAs(UnmanagedType.LPWStr)] string lpcwstrPlayList );
[PreserveSig]
int AddSourceFilter(
[In, MarshalAs(UnmanagedType.LPWStr)] string lpcwstrFileName,
[In, MarshalAs(UnmanagedType.LPWStr)] string lpcwstrFilterName,
[Out] out IBaseFilter ppFilter );
[PreserveSig]
int SetLogFile( IntPtr hFile );
[PreserveSig]
int Abort();
[PreserveSig]
int ShouldOperationContinue();
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("a2104830-7c70-11cf-8bce-00aa00a3f1a6"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IFileSinkFilter
{
[PreserveSig]
int SetFileName(
[In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
[In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt );
[PreserveSig]
int GetCurFile(
[Out, MarshalAs(UnmanagedType.LPWStr) ] out string pszFileName,
[Out, MarshalAs(UnmanagedType.LPStruct) ] AMMediaType pmt );
}
[ComVisible(true), ComImport,
Guid("00855B90-CE1B-11d0-BD4F-00A0C911CE86"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IFileSinkFilter2
{
[PreserveSig]
int SetFileName(
[In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
[In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt );
[PreserveSig]
int GetCurFile(
[Out, MarshalAs(UnmanagedType.LPWStr) ] out string pszFileName,
[Out, MarshalAs(UnmanagedType.LPStruct) ] AMMediaType pmt );
[PreserveSig]
int SetMode( [In] int dwFlags );
[PreserveSig]
int GetMode( [Out] out int dwFlags );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("670d1d20-a068-11d0-b3f0-00aa003761c5"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IAMCopyCaptureFileProgress
{
[PreserveSig]
int Progress( int iProgress );
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("e46a9787-2b71-444d-a4b5-1fab7b708d6a"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IVideoFrameStep
{
[PreserveSig]
int Step( int dwFrames,
[In, MarshalAs(UnmanagedType.IUnknown)] object pStepObject );
[PreserveSig]
int CanStep( int bMultiple,
[In, MarshalAs(UnmanagedType.IUnknown)] object pStepObject );
[PreserveSig]
int CancelStep();
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("C6E13340-30AC-11d0-A18C-00A0C9118956"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IAMStreamConfig
{
[PreserveSig]
int SetFormat(
[In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt );
[PreserveSig]
int GetFormat(
[Out] out IntPtr pmt );
[PreserveSig]
int GetNumberOfCapabilities( out int piCount, out int piSize );
[PreserveSig]
int GetStreamCaps( int iIndex,
//[Out, MarshalAs(UnmanagedType.LPStruct)] out AMMediaType ppmt,
[Out] out IntPtr pmt,
[In] IntPtr pSCC );
}
// =============================================================================
// TUNER
// =============================================================================
[ComVisible(false)]
public enum AMTunerSubChannel
{
NoTune = -2, // AMTUNER_SUBCHAN_NO_TUNE : don't tune
Default = -1 // AMTUNER_SUBCHAN_DEFAULT : use default sub chan
}
[ComVisible(false)]
public enum AMTunerSignalStrength
{
NA = -1, // AMTUNER_HASNOSIGNALSTRENGTH : cannot indicate signal strength
NoSignal = 0, // AMTUNER_NOSIGNAL : no signal available
SignalPresent = 1 // AMTUNER_SIGNALPRESENT : signal present
}
[Flags, ComVisible(false)]
public enum AMTunerModeType
{
Default = 0x0000, // AMTUNER_MODE_DEFAULT : default tuner mode
TV = 0x0001, // AMTUNER_MODE_TV : tv
FMRadio = 0x0002, // AMTUNER_MODE_FM_RADIO : fm radio
AMRadio = 0x0004, // AMTUNER_MODE_AM_RADIO : am radio
Dss = 0x0008 // AMTUNER_MODE_DSS : dss
}
[ComVisible(false)]
public enum AMTunerEventType
{
Changed = 0x0001, // AMTUNER_EVENT_CHANGED : status changed
}
// ---------------------------------------------------------------------------------------
[ComVisible(true), ComImport,
Guid("211A8761-03AC-11d1-8D13-00AA00BD8339"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IAMTuner
{
[PreserveSig]
int put_Channel( int lChannel, AMTunerSubChannel lVideoSubChannel, AMTunerSubChannel lAudioSubChannel );
[PreserveSig]
int get_Channel( out int plChannel, out int plVideoSubChannel, out int plAudioSubChannel );
[PreserveSig]
int ChannelMinMax( out int lChannelMin, out int lChannelMax );
[PreserveSig]
int put_CountryCode( int lCountryCode );
[PreserveSig]
int get_CountryCode( out int plCountryCode );
[PreserveSig]
int put_TuningSpace( int lTuningSpace );
[PreserveSig]
int get_TuningSpace( out int plTuningSpace );
[PreserveSig]
int Logon( IntPtr hCurrentUser );
[PreserveSig]
int Logout();
[PreserveSig]
int SignalPresent( out AMTunerSignalStrength plSignalStrength );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -