mirror of
https://github.com/bdnugget/Magic-Vision.git
synced 2026-11-07 09:17:36 +00:00
715 lines
18 KiB
C#
715 lines
18 KiB
C#
/******************************************************
|
|
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 );
|
|
|
|
[PreserveSig]
|
|
int put_Mode( AMTunerModeType lMode );
|
|
|
|
[PreserveSig]
|
|
int get_Mode( out AMTunerModeType plMode );
|
|
|
|
[PreserveSig]
|
|
int GetAvailableModes( out AMTunerModeType plModes );
|
|
|
|
[PreserveSig]
|
|
int RegisterNotificationCallBack( IAMTunerNotification pNotify, AMTunerEventType lEvents );
|
|
|
|
[PreserveSig]
|
|
int UnRegisterNotificationCallBack( IAMTunerNotification pNotify );
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
[ComVisible(true), ComImport,
|
|
Guid("211A8760-03AC-11d1-8D13-00AA00BD8339"),
|
|
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
|
public interface IAMTunerNotification
|
|
{
|
|
[PreserveSig]
|
|
int OnEvent( AMTunerEventType Event );
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
[Flags, ComVisible(false)]
|
|
public enum AnalogVideoStandard
|
|
{
|
|
None = 0x00000000, // This is a digital sensor
|
|
NTSC_M = 0x00000001, // 75 IRE Setup
|
|
NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup
|
|
NTSC_433 = 0x00000004,
|
|
PAL_B = 0x00000010,
|
|
PAL_D = 0x00000020,
|
|
PAL_G = 0x00000040,
|
|
PAL_H = 0x00000080,
|
|
PAL_I = 0x00000100,
|
|
PAL_M = 0x00000200,
|
|
PAL_N = 0x00000400,
|
|
PAL_60 = 0x00000800,
|
|
SECAM_B = 0x00001000,
|
|
SECAM_D = 0x00002000,
|
|
SECAM_G = 0x00004000,
|
|
SECAM_H = 0x00008000,
|
|
SECAM_K = 0x00010000,
|
|
SECAM_K1 = 0x00020000,
|
|
SECAM_L = 0x00040000,
|
|
SECAM_L1 = 0x00080000,
|
|
PAL_N_COMBO = 0x00100000 // Argentina
|
|
}
|
|
|
|
[ComVisible(false)]
|
|
public enum TunerInputType
|
|
{
|
|
Cable,
|
|
Antenna
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
[ComVisible(true), ComImport,
|
|
Guid("211A8766-03AC-11d1-8D13-00AA00BD8339"),
|
|
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
|
public interface IAMTVTuner
|
|
{
|
|
|
|
#region "IAMTuner Methods"
|
|
[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 );
|
|
|
|
[PreserveSig]
|
|
int put_Mode( AMTunerModeType lMode );
|
|
|
|
[PreserveSig]
|
|
int get_Mode( out AMTunerModeType plMode );
|
|
|
|
[PreserveSig]
|
|
int GetAvailableModes( out AMTunerModeType plModes );
|
|
|
|
[PreserveSig]
|
|
int RegisterNotificationCallBack( IAMTunerNotification pNotify, AMTunerEventType lEvents );
|
|
|
|
[PreserveSig]
|
|
int UnRegisterNotificationCallBack( IAMTunerNotification pNotify );
|
|
#endregion
|
|
|
|
[PreserveSig]
|
|
int get_AvailableTVFormats( out AnalogVideoStandard lAnalogVideoStandard );
|
|
|
|
[PreserveSig]
|
|
int get_TVFormat( out AnalogVideoStandard lAnalogVideoStandard );
|
|
|
|
[PreserveSig]
|
|
int AutoTune( int lChannel, out int plFoundSignal );
|
|
|
|
[PreserveSig]
|
|
int StoreAutoTune();
|
|
|
|
[PreserveSig]
|
|
int get_NumInputConnections( out int plNumInputConnections );
|
|
|
|
[PreserveSig]
|
|
int put_InputType( int lIndex, TunerInputType inputType );
|
|
|
|
[PreserveSig]
|
|
int get_InputType( int lIndex, out TunerInputType inputType );
|
|
|
|
[PreserveSig]
|
|
int put_ConnectInput( int lIndex );
|
|
|
|
[PreserveSig]
|
|
int get_ConnectInput( out int lIndex );
|
|
|
|
[PreserveSig]
|
|
int get_VideoFrequency( out int lFreq );
|
|
|
|
[PreserveSig]
|
|
int get_AudioFrequency( out int lFreq );
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
[ComVisible(true), ComImport,
|
|
Guid("C6E13380-30AC-11d0-A18C-00A0C9118956"),
|
|
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
|
public interface IAMCrossbar
|
|
{
|
|
[PreserveSig]
|
|
int get_PinCounts(
|
|
[Out] out int OutputPinCount,
|
|
[Out] out int InputPinCount );
|
|
|
|
[PreserveSig]
|
|
int CanRoute(
|
|
[In] int OutputPinIndex,
|
|
[In] int InputPinIndex );
|
|
|
|
[PreserveSig]
|
|
int Route(
|
|
[In] int OutputPinIndex,
|
|
[In] int InputPinIndex );
|
|
|
|
[PreserveSig]
|
|
int get_IsRoutedTo(
|
|
[In] int OutputPinIndex,
|
|
[Out] out int InputPinIndex );
|
|
|
|
[PreserveSig]
|
|
int get_CrossbarPinInfo(
|
|
[In, MarshalAs(UnmanagedType.Bool)] bool IsInputPin,
|
|
[In] int PinIndex,
|
|
[Out] out int PinIndexRelated,
|
|
[Out] out PhysicalConnectorType PhysicalType
|
|
);
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
[ComVisible(true), ComImport,
|
|
Guid("54C39221-8380-11d0-B3F0-00AA003761C5"),
|
|
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
|
public interface IAMAudioInputMixer
|
|
{
|
|
// This interface is only supported by the input pins, not the filter
|
|
// If disabled, this channel will not be mixed in as part of the
|
|
// recorded signal.
|
|
int put_Enable (
|
|
[In] bool fEnable); // TRUE=enable FALSE=disable
|
|
|
|
//Is this channel enabled?
|
|
int get_Enable (
|
|
[Out] out bool pfEnable);
|
|
|
|
// When set to mono mode, making a stereo recording of this channel
|
|
// will have both channels contain the same data... a mixture of the
|
|
// left and right signals
|
|
int put_Mono (
|
|
[In] bool fMono); // TRUE=mono FALSE=multi channel
|
|
|
|
//all channels combined into a mono signal?
|
|
int get_Mono (
|
|
[Out] out bool pfMono);
|
|
|
|
// !!! WILL CARDS BE ABLE TO BOOST THE GAIN?
|
|
//Set the record level for this channel
|
|
int put_MixLevel (
|
|
[In] double Level); // 0 = off, 1 = full (unity?) volume
|
|
// AMF_AUTOMATICGAIN, if supported,
|
|
// means automatic
|
|
|
|
//Get the record level for this channel
|
|
int get_MixLevel (
|
|
[Out] out double pLevel);
|
|
|
|
// For instance, when panned full left, and you make a stereo recording
|
|
// of this channel, you will record a silent right channel.
|
|
int put_Pan (
|
|
[In] double Pan); // -1 = full left, 0 = centre, 1 = right
|
|
|
|
//Get the pan for this channel
|
|
int get_Pan (
|
|
[Out] out double pPan);
|
|
|
|
// Boosts the bass of low volume signals before they are recorded
|
|
// to compensate for the fact that your ear has trouble hearing quiet
|
|
// bass sounds
|
|
int put_Loudness (
|
|
[In] bool fLoudness);// TRUE=on FALSE=off
|
|
|
|
int get_Loudness (
|
|
[Out] out bool pfLoudness);
|
|
|
|
// boosts or cuts the treble of the signal before it's recorded by
|
|
// a certain amount of dB
|
|
int put_Treble (
|
|
[In] double Treble); // gain in dB (-ve = attenuate)
|
|
|
|
//Get the treble EQ for this channel
|
|
int get_Treble (
|
|
[Out] out double pTreble);
|
|
|
|
// This is the maximum value allowed in put_Treble. ie 6.0 means
|
|
// any value between -6.0 and 6.0 is allowed
|
|
int get_TrebleRange (
|
|
[Out] out double pRange); // largest value allowed
|
|
|
|
// boosts or cuts the bass of the signal before it's recorded by
|
|
// a certain amount of dB
|
|
int put_Bass (
|
|
[In] double Bass); // gain in dB (-ve = attenuate)
|
|
|
|
// Get the bass EQ for this channel
|
|
int get_Bass (
|
|
[Out] out double pBass);
|
|
|
|
// This is the maximum value allowed in put_Bass. ie 6.0 means
|
|
// any value between -6.0 and 6.0 is allowed
|
|
int get_BassRange (
|
|
[Out] out double pRange); // largest value allowed
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
public enum VfwCompressDialogs
|
|
{
|
|
Config = 0x01,
|
|
About = 0x02,
|
|
QueryConfig = 0x04,
|
|
QueryAbout = 0x08
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
[ComVisible(true), ComImport,
|
|
Guid("D8D715A3-6E5E-11D0-B3F0-00AA003761C5"),
|
|
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
|
public interface IAMVfwCompressDialogs
|
|
{
|
|
[PreserveSig]
|
|
// Bring up a dialog for this codec
|
|
int ShowDialog(
|
|
[In] VfwCompressDialogs iDialog,
|
|
[In] IntPtr hwnd );
|
|
|
|
// Calls ICGetState and gives you the result
|
|
int GetState(
|
|
[Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] byte[] pState,
|
|
ref int pcbState );
|
|
|
|
// Calls ICSetState
|
|
int SetState(
|
|
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] byte[] pState,
|
|
[In] int cbState );
|
|
|
|
// Send a codec specific message
|
|
int SendDriverMessage(
|
|
int uMsg,
|
|
long dw1,
|
|
long dw2 );
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
[StructLayout(LayoutKind.Sequential), ComVisible(false)]
|
|
public class VideoStreamConfigCaps // VIDEO_STREAM_CONFIG_CAPS
|
|
{
|
|
public Guid Guid;
|
|
public AnalogVideoStandard VideoStandard;
|
|
public Size InputSize;
|
|
public Size MinCroppingSize;
|
|
public Size MaxCroppingSize;
|
|
public int CropGranularityX;
|
|
public int CropGranularityY;
|
|
public int CropAlignX;
|
|
public int CropAlignY;
|
|
public Size MinOutputSize;
|
|
public Size MaxOutputSize;
|
|
public int OutputGranularityX;
|
|
public int OutputGranularityY;
|
|
public int StretchTapsX;
|
|
public int StretchTapsY;
|
|
public int ShrinkTapsX;
|
|
public int ShrinkTapsY;
|
|
public long MinFrameInterval;
|
|
public long MaxFrameInterval;
|
|
public int MinBitsPerSecond;
|
|
public int MaxBitsPerSecond;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
[StructLayout(LayoutKind.Sequential), ComVisible(false)]
|
|
public class AudioStreamConfigCaps // AUDIO_STREAM_CONFIG_CAPS
|
|
{
|
|
public Guid Guid;
|
|
public int MinimumChannels;
|
|
public int MaximumChannels;
|
|
public int ChannelsGranularity;
|
|
public int MinimumBitsPerSample;
|
|
public int MaximumBitsPerSample;
|
|
public int BitsPerSampleGranularity;
|
|
public int MinimumSampleFrequency;
|
|
public int MaximumSampleFrequency;
|
|
public int SampleFrequencyGranularity;
|
|
}
|
|
|
|
|
|
} // namespace DShowNET
|