Axextend.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:160k
- //Get the pan for this channel
- HRESULT get_Pan (
- [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
- HRESULT put_Loudness (
- [in] BOOL fLoudness);// TRUE=on FALSE=off
- HRESULT get_Loudness (
- [out] BOOL *pfLoudness);
- // boosts or cuts the treble of the signal before it's recorded by
- // a certain amount of dB
- HRESULT put_Treble (
- [in] double Treble); // gain in dB (-ve = attenuate)
- //Get the treble EQ for this channel
- HRESULT get_Treble (
- [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
- HRESULT get_TrebleRange (
- [out] double *pRange); // largest value allowed
- // boosts or cuts the bass of the signal before it's recorded by
- // a certain amount of dB
- HRESULT put_Bass (
- [in] double Bass); // gain in dB (-ve = attenuate)
- // Get the bass EQ for this channel
- HRESULT get_Bass (
- [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
- HRESULT get_BassRange (
- [out] double *pRange); // largest value allowed
- }
- //---------------------------------------------------------------------
- // IAMBufferNegotiation interface
- //
- // Tells a pin what kinds of buffers to use when connected
- //---------------------------------------------------------------------
- // This interface can be implemented by any pin that will connect to
- // another pin using IMemInputPin. All capture filters should support
- // this interface.
- // SuggestAllocatorProperties is a way for an application to get
- // in on the buffer negotiation process for a pin. This pin will use
- // the numbers given to it by the application as its request to the
- // allocator. An application can use a negative number for any element
- // in the ALLOCATOR_PROPERTIES to mean "don't care". An application must
- // call this function before the pin is connected, or it will be too late
- // To ensure that an application gets what it wants, it would be wise to
- // call this method on both pins being connected together, so the other
- // pin doesn't overrule the application's request.
- // GetAllocatorProperties can only be called after a pin is connected and
- // it returns the properties of the current allocator being used
- [
- object,
- uuid(56ED71A0-AF5F-11D0-B3F0-00AA003761C5),
- pointer_default(unique)
- ]
- interface IAMBufferNegotiation : IUnknown
- {
- HRESULT SuggestAllocatorProperties (
- [in] const ALLOCATOR_PROPERTIES *pprop);
- HRESULT GetAllocatorProperties (
- [out] ALLOCATOR_PROPERTIES *pprop);
- }
- //---------------------------------------------------------------------
- // AnalogVideoStandard enum
- //---------------------------------------------------------------------
- typedef enum tagAnalogVideoStandard
- {
- AnalogVideo_None = 0x00000000, // This is a digital sensor
- AnalogVideo_NTSC_M = 0x00000001, // 75 IRE Setup
- AnalogVideo_NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup
- AnalogVideo_NTSC_433 = 0x00000004,
- AnalogVideo_PAL_B = 0x00000010,
- AnalogVideo_PAL_D = 0x00000020,
- AnalogVideo_PAL_G = 0x00000040,
- AnalogVideo_PAL_H = 0x00000080,
- AnalogVideo_PAL_I = 0x00000100,
- AnalogVideo_PAL_M = 0x00000200,
- AnalogVideo_PAL_N = 0x00000400,
- AnalogVideo_PAL_60 = 0x00000800,
- AnalogVideo_SECAM_B = 0x00001000,
- AnalogVideo_SECAM_D = 0x00002000,
- AnalogVideo_SECAM_G = 0x00004000,
- AnalogVideo_SECAM_H = 0x00008000,
- AnalogVideo_SECAM_K = 0x00010000,
- AnalogVideo_SECAM_K1 = 0x00020000,
- AnalogVideo_SECAM_L = 0x00040000,
- AnalogVideo_SECAM_L1 = 0x00080000,
- AnalogVideo_PAL_N_COMBO // Argentina
- = 0x00100000
- } AnalogVideoStandard;
- cpp_quote("#define AnalogVideo_NTSC_Mask 0x00000007")
- cpp_quote("#define AnalogVideo_PAL_Mask 0x00100FF0")
- cpp_quote("#define AnalogVideo_SECAM_Mask 0x000FF000")
- //---------------------------------------------------------------------
- // TunerInputType enum
- //---------------------------------------------------------------------
- typedef enum tagTunerInputType
- {
- TunerInputCable,
- TunerInputAntenna
- } TunerInputType;
- //---------------------------------------------------------------------
- // VideoCopyProtectionType enum
- //---------------------------------------------------------------------
- typedef enum
- {
- VideoCopyProtectionMacrovisionBasic,
- VideoCopyProtectionMacrovisionCBI
- } VideoCopyProtectionType;
- //---------------------------------------------------------------------
- // PhysicalConnectorType enum
- //---------------------------------------------------------------------
- typedef enum tagPhysicalConnectorType
- {
- PhysConn_Video_Tuner = 1,
- PhysConn_Video_Composite,
- PhysConn_Video_SVideo,
- PhysConn_Video_RGB,
- PhysConn_Video_YRYBY,
- PhysConn_Video_SerialDigital,
- PhysConn_Video_ParallelDigital,
- PhysConn_Video_SCSI,
- PhysConn_Video_AUX,
- PhysConn_Video_1394,
- PhysConn_Video_USB,
- PhysConn_Video_VideoDecoder,
- PhysConn_Video_VideoEncoder,
- PhysConn_Video_SCART,
- PhysConn_Video_Black,
- PhysConn_Audio_Tuner = 0x1000,
- PhysConn_Audio_Line,
- PhysConn_Audio_Mic,
- PhysConn_Audio_AESDigital,
- PhysConn_Audio_SPDIFDigital,
- PhysConn_Audio_SCSI,
- PhysConn_Audio_AUX,
- PhysConn_Audio_1394,
- PhysConn_Audio_USB,
- PhysConn_Audio_AudioDecoder,
- } PhysicalConnectorType;
- //---------------------------------------------------------------------
- // IAMAnalogVideoDecoder interface
- //---------------------------------------------------------------------
- [
- object,
- uuid(C6E13350-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMAnalogVideoDecoder : IUnknown
- {
- //Gets the supported analog video standards (NTSC/M, PAL/B, SECAM/K1...
- HRESULT get_AvailableTVFormats(
- [out] long *lAnalogVideoStandard
- );
- //Sets or gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...
- HRESULT put_TVFormat(
- [in] long lAnalogVideoStandard
- );
- // Sets or gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...
- HRESULT get_TVFormat(
- [out] long * plAnalogVideoStandard
- );
- // True if horizontal sync is locked
- HRESULT get_HorizontalLocked (
- [out] long * plLocked);
- // True if connected to a VCR (changes PLL timing)
- HRESULT put_VCRHorizontalLocking (
- [in] long lVCRHorizontalLocking);
- HRESULT get_VCRHorizontalLocking (
- [out] long * plVCRHorizontalLocking);
- // Returns the number of lines in the video signal")]
- HRESULT get_NumberOfLines (
- [out] long *plNumberOfLines);
- // Enables or disables the output bus
- HRESULT put_OutputEnable (
- [in] long lOutputEnable);
- HRESULT get_OutputEnable (
- [out] long *plOutputEnable);
- }
- //---------------------------------------------------------------------
- // VideoProcAmp Property enum
- //---------------------------------------------------------------------
- typedef enum tagVideoProcAmpProperty
- {
- VideoProcAmp_Brightness,
- VideoProcAmp_Contrast,
- VideoProcAmp_Hue,
- VideoProcAmp_Saturation,
- VideoProcAmp_Sharpness,
- VideoProcAmp_Gamma,
- VideoProcAmp_ColorEnable,
- VideoProcAmp_WhiteBalance,
- VideoProcAmp_BacklightCompensation,
- VideoProcAmp_Gain
- } VideoProcAmpProperty;
- //---------------------------------------------------------------------
- // VideoProcAmp Flags enum
- //---------------------------------------------------------------------
- typedef enum tagVideoProcAmpFlags
- {
- VideoProcAmp_Flags_Auto = 0x0001,
- VideoProcAmp_Flags_Manual = 0x0002
- } VideoProcAmpFlags;
- //---------------------------------------------------------------------
- // IAMVideoProcAmp interface
- //
- // Adjusts video quality in either the analog or digital domain.
- //
- //---------------------------------------------------------------------
- [
- object,
- uuid(C6E13360-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMVideoProcAmp : IUnknown
- {
- // Returns min, max, step size, and default values
- HRESULT GetRange(
- [in] long Property, // Which property to query
- [out] long * pMin, // Range minimum
- [out] long * pMax, // Range maxumum
- [out] long * pSteppingDelta,// Step size
- [out] long * pDefault, // Default value
- [out] long * pCapsFlags // VideoProcAmpFlags
- );
- // Set a VideoProcAmp property
- HRESULT Set(
- [in] long Property, // VideoProcAmpProperty
- [in] long lValue, // Value to set
- [in] long Flags // VideoProcAmp_Flags_*
- );
- // Get a VideoProcAmp property
- HRESULT Get(
- [in] long Property, // VideoProcAmpProperty
- [out] long * lValue, // Current value
- [out] long * Flags // VideoProcAmp_Flags_*
- );
- }
- //---------------------------------------------------------------------
- // CameraControl Property enum
- //---------------------------------------------------------------------
- typedef enum tagCameraControlProperty
- {
- CameraControl_Pan,
- CameraControl_Tilt,
- CameraControl_Roll,
- CameraControl_Zoom,
- CameraControl_Exposure,
- CameraControl_Iris,
- CameraControl_Focus
- } CameraControlProperty;
- //---------------------------------------------------------------------
- // CameraControl Flags enum
- //---------------------------------------------------------------------
- typedef enum tagCameraControlFlags
- {
- CameraControl_Flags_Auto = 0x0001,
- CameraControl_Flags_Manual = 0x0002
- } CameraControlFlags;
- //---------------------------------------------------------------------
- // IAMCameraControl interface
- //
- // Control of local or remote cameras
- //---------------------------------------------------------------------
- [
- object,
- uuid(C6E13370-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMCameraControl : IUnknown
- {
- // Returns min, max, step size, and default values
- HRESULT GetRange(
- [in] long Property, // Which property to query
- [out] long * pMin, // Range minimum
- [out] long * pMax, // Range maxumum
- [out] long * pSteppingDelta,// Step size
- [out] long * pDefault, // Default value
- [out] long * pCapsFlags // CamaeraControlFlags
- );
- // Set a CameraControl property
- HRESULT Set(
- [in] long Property, // CameraControlProperty
- [in] long lValue, // Value to set
- [in] long Flags // CameraControl_Flags_*
- );
- // Get a CameraControl property
- HRESULT Get(
- [in] long Property, // CameraControlProperty
- [out] long * lValue, // Current value
- [out] long * Flags // CameraControl_Flags_*
- );
- }
- //---------------------------------------------------------------------
- // VideoControl Flags enum
- //---------------------------------------------------------------------
- typedef enum tagVideoControlFlags
- {
- VideoControlFlag_FlipHorizontal = 0x0001,
- VideoControlFlag_FlipVertical = 0x0002,
- VideoControlFlag_ExternalTriggerEnable = 0x0004,
- VideoControlFlag_Trigger = 0x0008
- } VideoControlFlags;
- //---------------------------------------------------------------------
- // IAMVideoControl interface
- //
- // Control of horizontal & vertical flip, external trigger,
- // and listing available frame rates
- //---------------------------------------------------------------------
- [
- object,
- uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
- pointer_default(unique)
- ]
- interface IAMVideoControl : IUnknown
- {
- // What can the underlying hardware do?
- HRESULT GetCaps(
- [in] IPin * pPin, // the pin to query or control
- [out] long * pCapsFlags // VideoControlFlag_*
- );
- // Set the mode of operation
- HRESULT SetMode(
- [in] IPin * pPin, // the pin to query or control
- [in] long Mode // VideoControlFlag_*
- );
- // Get the mode of operation
- HRESULT GetMode(
- [in] IPin * pPin, // the pin to query or control
- [out] long * Mode // VideoControlFlag_*
- );
- // Get actual frame rate info for USB and 1394
- // This is only available when streaming
- HRESULT GetCurrentActualFrameRate(
- [in] IPin * pPin, // the pin to query or control
- [out] LONGLONG * ActualFrameRate // 100 nS units
- );
- // Get max available frame rate info for USB and 1394
- // Returns the max frame rate currently available based on bus bandwidth usage
- HRESULT GetMaxAvailableFrameRate(
- [in] IPin * pPin, // the pin to query or control
- [in] long iIndex, // 0 to IAMStreamConfig->GetNumberOfCapabilities-1
- [in] SIZE Dimensions, // width and height
- [out] LONGLONG * MaxAvailableFrameRate // 100 nS units
- );
- // Get List of available frame rates
- HRESULT GetFrameRateList(
- [in] IPin * pPin, // the pin to query or control
- [in] long iIndex, // 0 to IAMStreamConfig->GetNumberOfCapabilities-1
- [in] SIZE Dimensions, // width and height
- [out] long * ListSize, // Number of elements in the list
- [out] LONGLONG ** FrameRates // Array of framerates in 100 nS units
- // or NULL to just get ListSize
- );
- }
- //---------------------------------------------------------------------
- // IAMCrossbar interface
- //
- // Controls a routing matrix for analog or digital video or audio
- //---------------------------------------------------------------------
- [
- object,
- uuid(C6E13380-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMCrossbar : IUnknown
- {
- // How many pins are there?
- HRESULT get_PinCounts(
- [out] long * OutputPinCount, // count of output pins
- [out] long * InputPinCount); // count of input pins
- // True if routing is possible
- HRESULT CanRoute (
- [in] long OutputPinIndex, // the output pin
- [in] long InputPinIndex); // the input pin
- // Routes an input pin to an output pin
- HRESULT Route (
- [in] long OutputPinIndex, // the output pin
- [in] long InputPinIndex); // the input pin
- // Returns the input pin connected to a given output pin
- HRESULT get_IsRoutedTo (
- [in] long OutputPinIndex, // the output pin
- [out] long * InputPinIndex); // the connected input pin
- // Returns a pin which is related to a given pin
- // (ie. this audio pin is related to a video pin)
- HRESULT get_CrossbarPinInfo (
- [in] BOOL IsInputPin, // TRUE for input pins
- [in] long PinIndex, // a pin
- [out] long * PinIndexRelated, // Index of related pin
- [out] long * PhysicalType); // Physical type of pin
- }
- //---------------------------------------------------------------------
- // IAMTuner interface
- //
- // base tuner device
- //---------------------------------------------------------------------
-
- // predefined subchannel values
- typedef enum tagAMTunerSubChannel
- {
- AMTUNER_SUBCHAN_NO_TUNE = -2, // don't tune
- AMTUNER_SUBCHAN_DEFAULT = -1 // use default sub chan
- } AMTunerSubChannel;
-
- // predefined signal strength values
- typedef enum tagAMTunerSignalStrength
- {
- AMTUNER_HASNOSIGNALSTRENGTH = -1, // cannot indicate signal strength
- AMTUNER_NOSIGNAL = 0, // no signal available
- AMTUNER_SIGNALPRESENT = 1 // signal present
- } AMTunerSignalStrength;
- // specifies the mode of operation of the tuner
- typedef enum tagAMTunerModeType
- {
- AMTUNER_MODE_DEFAULT = 0x0000, // default tuner mode
- AMTUNER_MODE_TV = 0x0001, // tv
- AMTUNER_MODE_FM_RADIO = 0x0002, // fm radio
- AMTUNER_MODE_AM_RADIO = 0x0004, // am radio
- AMTUNER_MODE_DSS = 0x0008, // dss
- } AMTunerModeType;
-
- // Events reported by IAMTunerNotification
- typedef enum tagAMTunerEventType{
- AMTUNER_EVENT_CHANGED = 0x0001, // status changed
- } AMTunerEventType;
-
- interface IAMTunerNotification;
- [
- object,
- uuid(211A8761-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IAMTuner : IUnknown
- {
- // Sets and gets the Channel
- HRESULT put_Channel(
- [in] long lChannel,
- [in] long lVideoSubChannel,
- [in] long lAudioSubChannel
- );
- HRESULT get_Channel(
- [out] long *plChannel,
- [out] long *plVideoSubChannel,
- [out] long *plAudioSubChannel
- );
-
- // Gets the minimum and maximum channel available
- HRESULT ChannelMinMax(
- [out] long *lChannelMin,
- [out] long *lChannelMax
- );
-
- // CountryCode is the same as the international
- // long distance telephone dialing prefix
-
- HRESULT put_CountryCode(
- [in] long lCountryCode
- );
- HRESULT get_CountryCode(
- [out] long *plCountryCode
- );
-
- HRESULT put_TuningSpace(
- [in] long lTuningSpace
- );
- HRESULT get_TuningSpace(
- [out] long *plTuningSpace
- );
-
- [local] HRESULT Logon(
- [in] HANDLE hCurrentUser
- );
- HRESULT Logout();
-
- // Signal status for current channel
- // signal strength == TUNER_NOSIGNAL, or strength value
- HRESULT SignalPresent(
- [out] long * plSignalStrength // AMTunerSignalStrength
- );
-
- // allow multifunction tuner to be switch between modes
- HRESULT put_Mode(
- [in] AMTunerModeType lMode // AMTunerModeType
- );
- HRESULT get_Mode(
- [out] AMTunerModeType *plMode // AMTunerModeType
- );
-
- // retrieve a bitmask of the possible modes
- HRESULT GetAvailableModes(
- [out] long *plModes // AMTunerModeType
- );
-
- // allow IAMTuner clients to receive event notification
- HRESULT RegisterNotificationCallBack(
- [in] IAMTunerNotification *pNotify,
- [in] long lEvents // bitmask from AMTunerEventType enumeration
- );
- HRESULT UnRegisterNotificationCallBack(
- [in] IAMTunerNotification *pNotify
- );
- }
-
- //---------------------------------------------------------------------
- // IAMTunerNotification interface
- //
- // Provided to IAMTuner if notification callbacks are desired
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(211A8760-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IAMTunerNotification : IUnknown
- {
- HRESULT OnEvent([in] AMTunerEventType Event);
- }
-
-
- //---------------------------------------------------------------------
- // IAMTVTuner interface
- //
- // Controls an analog TV tuner device
- //---------------------------------------------------------------------
- [
- object,
- uuid(211A8766-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IAMTVTuner : IAMTuner
- {
- // Gets the supported analog video standards (NTSC/M, PAL/B, SECAM/K1, ...
- HRESULT get_AvailableTVFormats(
- [out] long *lAnalogVideoStandard
- );
-
- // Gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...)
- HRESULT get_TVFormat(
- [out] long * plAnalogVideoStandard
- );
-
- // Scans for a signal on a given channel
- // NOTE: this is equivalent to put_Channel(), SignalStrength()
- HRESULT AutoTune(
- [in] long lChannel,
- [out] long * plFoundSignal
- );
-
- // Saves the fine tuning information for all channels")]
- HRESULT StoreAutoTune();
-
- // The number of TV sources plugged into the tuner
- HRESULT get_NumInputConnections(
- [out] long * plNumInputConnections
- );
-
- // Sets or gets the tuner input type (Cable or Antenna)
- HRESULT put_InputType(
- [in] long lIndex,
- [in] TunerInputType InputType
- );
- HRESULT get_InputType(
- [in] long lIndex,
- [out] TunerInputType * pInputType
- );
-
- // Sets or gets the tuner input
- HRESULT put_ConnectInput(
- [in] long lIndex
- );
- HRESULT get_ConnectInput(
- [out] long *plIndex
- );
-
- // Gets the video and audio carrier frequencies
- HRESULT get_VideoFrequency(
- [out] long *lFreq
- );
- HRESULT get_AudioFrequency(
- [out] long *lFreq
- );
- }
-
- //---------------------------------------------------------------------
- // IBPCSatelliteTuner interface
- //
- // An interface supporting Satellite tuning-related functions
- //---------------------------------------------------------------------
- [
- object,
- local,
- uuid(211A8765-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IBPCSatelliteTuner : IAMTuner
- {
- HRESULT get_DefaultSubChannelTypes(
- [out] long *plDefaultVideoType, // Provider-specific service type
- [out] long *plDefaultAudioType // Provider-specific service type
- );
-
- HRESULT put_DefaultSubChannelTypes(
- [in] long lDefaultVideoType, // Provider-specific service type
- [in] long lDefaultAudioType // Provider-specific service type
- );
-
- HRESULT IsTapingPermitted(); // S_OK yes, S_FALSE no
- }
- //---------------------------------------------------------------------
- // IAMTVAudio interface
- //
- // TV Audio control
- //---------------------------------------------------------------------
-
- typedef enum tagTVAudioMode
- {
- AMTVAUDIO_MODE_MONO = 0x0001, // Mono
- AMTVAUDIO_MODE_STEREO = 0x0002, // Stereo
- AMTVAUDIO_MODE_LANG_A = 0x0010, // Primary language
- AMTVAUDIO_MODE_LANG_B = 0x0020, // 2nd avail language
- AMTVAUDIO_MODE_LANG_C = 0x0040, // 3rd avail language
- } TVAudioMode;
- // Events reported by IAMTVAudioNotification
- typedef enum tagAMTVAudioEventType
- {
- AMTVAUDIO_EVENT_CHANGED = 0x0001, // mode changed
- } AMTVAudioEventType;
- interface IAMTVAudioNotification;
- [
- object,
- local,
- uuid(83EC1C30-23D1-11d1-99E6-00A0C9560266),
- pointer_default(unique)
- ]
- interface IAMTVAudio : IUnknown
- {
- // retrieve a bitmask of the formats available in the hardware
- HRESULT GetHardwareSupportedTVAudioModes(
- [out] long *plModes // TVAudioMode
- );
-
- // retrieve a bitmask of the possible modes
- HRESULT GetAvailableTVAudioModes(
- [out] long *plModes // TVAudioMode
- );
-
- HRESULT get_TVAudioMode(
- [out] long *plMode // TVAudioMode
- );
- HRESULT put_TVAudioMode(
- [in] long lMode // TVAudioMode
- );
- // allow IAMTVAudio clients to receive event notification
- HRESULT RegisterNotificationCallBack(
- [in] IAMTunerNotification *pNotify,
- [in] long lEvents // bitmask from AMTVAudioEventType enumeration
- );
- HRESULT UnRegisterNotificationCallBack(
- IAMTunerNotification *pNotify
- );
- }
- //---------------------------------------------------------------------
- // IAMTVAudioNotification interface
- //
- // Provided to IAMTVAudio clients if notification callbacks are desired
- //---------------------------------------------------------------------
-
- [
- object,
- local,
- uuid(83EC1C33-23D1-11d1-99E6-00A0C9560266),
- pointer_default(unique)
- ]
- interface IAMTVAudioNotification : IUnknown
- {
- HRESULT OnEvent([in] AMTVAudioEventType Event);
- }
- //---------------------------------------------------------------------
- // IAMAnalogVideoEncoder interface
- //---------------------------------------------------------------------
- [
- object,
- uuid(C6E133B0-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMAnalogVideoEncoder : IUnknown
- {
- // Gets the supported analog video standards (NTSC/M, PAL/B, SECAM/K1, ...)
- HRESULT get_AvailableTVFormats(
- [out] long *lAnalogVideoStandard
- );
- // Sets or gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...)
- HRESULT put_TVFormat(
- [in] long lAnalogVideoStandard
- );
- HRESULT get_TVFormat(
- [out] long * plAnalogVideoStandard
- );
- // Sets or gets the copy protection
- HRESULT put_CopyProtection (
- [in] long lVideoCopyProtection); // VideoCopyProtectionType
- HRESULT get_CopyProtection (
- [out] long *lVideoCopyProtection); // VideoCopyProtectionType
- // Enables and disables close captioning
- HRESULT put_CCEnable (
- [in] long lCCEnable);
- HRESULT get_CCEnable (
- [out] long *lCCEnable);
- }
- // used by IKsPropertySet set AMPROPSETID_Pin
- typedef enum {
- AMPROPERTY_PIN_CATEGORY,
- AMPROPERTY_PIN_MEDIUM
- } AMPROPERTY_PIN;
- //---------------------------------------------------------------------
- // IKsPropertySet interface
- //
- // Sets or gets a property identified by a property set GUID and a
- // property ID.
- //
- // Return codes for all 3 methods:
- // E_PROP_SET_UNSUPPORTED the property set is not supported
- // E_PROP_ID_UNSUPPORTED the property ID is not supported
- // for the specified property set
- //---------------------------------------------------------------------
- cpp_quote("#ifndef _IKsPropertySet_")
- cpp_quote("#define _IKsPropertySet_")
- //---------------------------------------------------------------------
- // #defines for IKsPropertySet::QuerySupported return result in pTypeSupport
- //---------------------------------------------------------------------
- cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
- cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
- [
- object,
- uuid(31EFAC30-515C-11d0-A9AA-00AA0061BE93),
- pointer_default(unique)
- ]
- interface IKsPropertySet : IUnknown
- {
- [local] HRESULT Set(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] LPVOID pInstanceData,
- [in] DWORD cbInstanceData,
- [in, size_is(cbPropData)] LPVOID pPropData,
- [in] DWORD cbPropData);
- [call_as(Set)] HRESULT RemoteSet(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] byte * pInstanceData,
- [in] DWORD cbInstanceData,
- [in, size_is(cbPropData)] byte * pPropData,
- [in] DWORD cbPropData);
- // To get a property, the caller allocates a buffer which the called
- // function fills in. To determine necessary buffer size, call Get with
- // pPropData=NULL and cbPropData=0.
- [local] HRESULT Get(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] LPVOID pInstanceData,
- [in] DWORD cbInstanceData,
- [out, size_is(cbPropData)] LPVOID pPropData,
- [in] DWORD cbPropData,
- [out] DWORD * pcbReturned);
- [call_as(Get)] HRESULT RemoteGet(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] byte * pInstanceData,
- [in] DWORD cbInstanceData,
- [out, size_is(cbPropData)] byte * pPropData,
- [in] DWORD cbPropData,
- [out] DWORD * pcbReturned);
- // QuerySupported must either return E_NOTIMPL or correctly indicate
- // if getting or setting the property set and property is supported.
- // S_OK indicates the property set and property ID combination is
- HRESULT QuerySupported(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [out] DWORD *pTypeSupport);
- }
- cpp_quote("#endif // _IKsPropertySet_")
- [
- object,
- uuid(6025A880-C0D5-11d0-BD4E-00A0C911CE86),
- pointer_default(unique)
- ]
- interface IMediaPropertyBag : IPropertyBag
- {
- import "ocidl.idl";
- typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG;
- // return the i'th element in the property bag
- HRESULT EnumProperty(
- [in] ULONG iProperty,
- [in, out] VARIANT * pvarPropertyName,
- [in, out] VARIANT * pvarPropertyValue
- );
- }
- [
- object,
- uuid(5738E040-B67F-11d0-BD4D-00A0C911CE86),
- pointer_default(unique)
- ]
- interface IPersistMediaPropertyBag : IPersist
- {
- import "ocidl.idl";
- import "unknwn.idl";
- HRESULT InitNew(
- void
- );
- HRESULT Load(
- [in] IMediaPropertyBag * pPropBag,
- [in] IErrorLog * pErrorLog
- );
- HRESULT Save(
- [in] IMediaPropertyBag * pPropBag,
- [in] BOOL fClearDirty,
- [in] BOOL fSaveAllProperties
- );
- typedef IPersistMediaPropertyBag * LPPERSISTMEDIAPROPERTYBAG;
- }
- //---------------------------------------------------------------------
- //
- // Defines IAMPhysicalPinInfo Interface
- //
- // Returns an enum and string that describes an input pin's physical type.
- //
- // Implement if: you have physical input pins such as video or audio (like
- // on a video capture card or a VCR)
- //
- // Use if: you want to communicate to a user available physical input pins
- // and allow them to select the active one if there is more than one
- //---------------------------------------------------------------------
- [
- object,
- uuid(F938C991-3029-11cf-8C44-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMPhysicalPinInfo : IUnknown {
- // Returns VFW_E_NO_ACCEPTABLE_TYPES if not a physical pin
- HRESULT GetPhysicalType(
- [out] long *pType, // the enum representing the Physical Type
- [out] LPOLESTR *ppszType // a friendly name
- );
- }
- typedef IAMPhysicalPinInfo *PAMPHYSICALPININFO;
- //---------------------------------------------------------------------
- // Defines IAMExtDevice Interface
- //
- // Base interface for external professional devices
- //
- // Implement if: the filter controls an external device such as a VCR,
- // timecode reader/generator, etc. The intent is to build a object from
- // this implementation plus another that specifically describes the device,
- // such as IAMExtTransport.
- //
- // Use if: you want to control and external device such as a VCR
- //
- // See edevdefs.h for the enumerated parameter list
- //---------------------------------------------------------------------
- [
- object,
- uuid(B5730A90-1A2C-11cf-8C23-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMExtDevice : IUnknown
- {
- // General device capabilities property. See edevdefs.h for supported
- // values
- HRESULT GetCapability(
- [in] long Capability, // identify the property
- [out] long *pValue, // return value
- [out] double *pdblValue // return value
- );
- // Get external device identification string. Usually the model #
- // of the device
- HRESULT get_ExternalDeviceID(
- [out] LPOLESTR *ppszData // ID string
- );
-
- HRESULT get_ExternalDeviceVersion(
- [out] LPOLESTR *ppszData // revision string
- );
-
- // Controls the external device's power mode
- HRESULT put_DevicePower([in] long PowerMode
- );
- HRESULT get_DevicePower([out] long *pPowerMode
- );
-
- // Some devices need to be reset in some way, i.e., rewinding a VCR
- // to the beginning of the tape and resetting the counter to zero.
- HRESULT Calibrate(
- [in] HEVENT hEvent,
- [in] long Mode,
- [out] long *pStatus // OATRUE is active, OAFALSE is inactive
- );
- // Selects the device's communications port, i.e.,COM1, IEEE1394, etc.
- // See edevdefs.h for enums
- HRESULT put_DevicePort([in] long DevicePort
- );
- HRESULT get_DevicePort([out] long *pDevicePort
- );
-
- }
- typedef IAMExtDevice *PEXTDEVICE;
- //---------------------------------------------------------------------
- // Defines IAMExtTransport Interface
- //
- // Contains properties and methods that control behavior of an external
- // transport device such as a VTR
- //
- // Implement if: you control such a device. Intended to be agregated
- // with IAMExtDevice.
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //---------------------------------------------------------------------
- [
- object,
- uuid(A03CD5F0-3045-11cf-8C44-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMExtTransport : IUnknown {
- // General transport capabilities property. See edevdefs.h for enums
- HRESULT GetCapability(
- [in] long Capability, // identify the property
- [out] long *pValue, // return value
- [out] double *pdblValue // return value
- );
- // For disc-based devices: spinning, or not spinning.
- // For tape-based device: threaded, unthreaded or ejected
- HRESULT put_MediaState([in] long State
- );
- HRESULT get_MediaState([out] long *pState // see edevdefs.h
- );
-
- // Determines state of unit's front panel
- HRESULT put_LocalControl([in] long State
- );
- HRESULT get_LocalControl([out] long *pState // OATRUE or OAFALSE
- );
-
- // Transport status such as Play, Stop, etc. More extensive
- // than AM states.
- HRESULT GetStatus(
- [in] long StatusItem, // see edevdefs.h
- [out] long *pValue
- );
- // Parameters such as recording speed, servo reference, ballistics, etc.
- HRESULT GetTransportBasicParameters(
- [in] long Param,
- [out] long *pValue,
- [out] LPOLESTR *ppszData
- );
- HRESULT SetTransportBasicParameters(
- [in] long Param,
- [in] long Value,
- [in] LPCOLESTR pszData
- );
-
- // Parameters such as video output mode
- HRESULT GetTransportVideoParameters(
- [in] long Param,
- [out] long *pValue
- );
- HRESULT SetTransportVideoParameters(
- [in] long Param,
- [in] long Value
- );
- // Parameters such as audio channel enable
- HRESULT GetTransportAudioParameters(
- [in] long Param,
- [out] long *pValue
- );
- HRESULT SetTransportAudioParameters(
- [in] long Param,
- [in] long Value
- );
-
- // Mode is the movement of the transport, i.e., Play, Stop,
- // Record, Edit, etc.
- HRESULT put_Mode([in] long Mode
- );
- HRESULT get_Mode([out] long *pMode
- );
- // Rate is for variable speed control of the the device. This
- // can be linked to IMediaControl::Rate() in the implementation
- // if desired.
- HRESULT put_Rate([in] double dblRate
- );
- HRESULT get_Rate([out] double *pdblRate
- );
- // This is a lengthy method, that is, it is in effect until canceled or complete and
- // requires housekeeping by the filter. It puts transport in play mode and maintains
- // fixed relationship between master time reference and transport position.
- HRESULT GetChase(
- [out] long *pEnabled, // OATRUE | OAFALSE
- [out] long *pOffset, // offset in current time format
- [out] HEVENT *phEvent // completion notification
- );
- HRESULT SetChase(
- [in] long Enable, // OATRUE | OAFALSE
- [in] long Offset, // offset in current time format
- [in] HEVENT hEvent // completion notification
- );
- // Also a lengthy method: temporarily change transport speed (for synchronizing).
- HRESULT GetBump(
- [out] long *pSpeed,
- [out] long *pDuration // in current time format
- );
- HRESULT SetBump(
- [in] long Speed,
- [in] long Duration // in current time format
- );
-
- // Enable/Disable transport anti-headclog control.
- HRESULT get_AntiClogControl([out] long *pEnabled // OATRUE | OAFALSE
- );
- HRESULT put_AntiClogControl([in] long Enable // OATRUE | OAFALSE
- );
-
- // The following group of properties describes edit events. An edit event can be a
- // standard insert or assemble edit or a memorized position called a bookmark.
- // A NOTE ABOUT EVENTS: as with all lengthy commands, event objects must be created to
- // signal completion or error.
- // Intended usage: an edit event is prepared for use by:
- // 1. Registering an edit property set and getting an EditID
- // 2. Setting the necessary edit properties
- // 3. Setting the edit property set active
- // Please see edevdefs.h for properties and values
- // The reference clock's advance is the mechanism that puts an edit in motion (see
- // ED_EDIT_REC_INPOINT).
-
- // Property set methods
- HRESULT GetEditPropertySet(
- [in] long EditID,
- [out] long *pState // ED_SET_ACTIVE | ED_SET_INACTIVE | ED_SET_INVALID
- // | ED_SET_EXECUTING
- );
- HRESULT SetEditPropertySet(
- [in, out] long *pEditID,
- [in] long State // ED_SET_REGISTER | ED_SET_DELETE | ED_SET_ACTIVE |
- ); // ED_SET_INACTIVE
- // the following properties define an edit event such as a bookmark, seek point, or
- // actual edit
- HRESULT GetEditProperty(
- [in] long EditID,
- [in] long Param,
- [out] long *pValue
- );
- HRESULT SetEditProperty(
- [in] long EditID,
- [in] long Param,
- [in] long Value
- );
-
- // Activates a capable transport's edit control (typically used for "on the fly" editing).
- HRESULT get_EditStart([out] long *pValue // OATRUE or OAFALSE
- );
- HRESULT put_EditStart([in] long Value // OATRUE or OAFALSE
- );
- }
- typedef IAMExtTransport *PIAMEXTTRANSPORT;
- //---------------------------------------------------------------------
- // Defines IAMTimecodeReader Interface
- //
- // Contains properties and methods that define behavior of a
- // SMPTE/MIDI Timecode Reader. It is expected that this interface
- // will be combined (aggregated) with IAMExtTransport to "build" a pro
- // VCR.
- //
- // Implement if: you control such a device
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //=====================================================================
- // timecode structures
- cpp_quote("#if 0")
- cpp_quote("/* the following is what MIDL knows how to remote */")
- typedef struct tagTIMECODE {
- WORD wFrameRate; // will be replaced by AM defs, but see ED_FORMAT_SMPTE for now
- WORD wFrameFract; // fractional frame. full scale is always 0x1000
- DWORD dwFrames;
- }TIMECODE;
- cpp_quote("#else /* 0 */")
- cpp_quote("#ifndef TIMECODE_DEFINED")
- cpp_quote("#define TIMECODE_DEFINED")
- cpp_quote("typedef union _timecode {")
- cpp_quote(" struct {")
- cpp_quote(" WORD wFrameRate;")
- cpp_quote(" WORD wFrameFract;")
- cpp_quote(" DWORD dwFrames;")
- cpp_quote(" };")
- cpp_quote(" DWORDLONG qw;")
- cpp_quote(" } TIMECODE;")
- cpp_quote("")
- cpp_quote("#endif /* TIMECODE_DEFINED */")
- cpp_quote("#endif /* 0 */")
- typedef TIMECODE *PTIMECODE;
- typedef struct tagTIMECODE_SAMPLE {
- LONGLONG qwTick; // ActiveMovie 100ns timestamp
- TIMECODE timecode; // timecode
- DWORD dwUser; // timecode user data (aka user bits)
- DWORD dwFlags; // timecode flags - see below
- } TIMECODE_SAMPLE;
- typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE;
- [
- object,
- uuid(9B496CE1-811B-11cf-8C77-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMTimecodeReader : IUnknown
- {
- // Timecode Reader Mode - gets/sets the following properties
- // ED_TCR_SOURCE - timecode gen (readback), LTC, VITC, or Control Track
- HRESULT GetTCRMode(
- [in] long Param,
- [out] long *pValue);
- HRESULT SetTCRMode(
- [in] long Param,
- [in] long Value);
-
- // Select which line of the vertical interval timecode will be read from (if VITC).
- // To read VITC on specific multiple lines, the caller would make successive calls to
- // put_VITCLine(), once for each line desired.
- HRESULT put_VITCLine(
- [in] long Line ); // valid lines are 11-20, 0 means autoselect,
- // hi bit set means add to list of lines (for
- // readers that test across multiple lines)
- HRESULT get_VITCLine(
- [out] long *pLine ); // hi bit set means multiple lines are used,
- // and successive calls will cycle through the
- // line numbers (like an enumerator, only simpler)
- // GetTimecode can be used to obtain the most recent timecode value available in the
- // stream. The client can use this to monitor the timecode, parse duplicates and
- // discontinuities. The source filter supplying the timecode or possibly a down stream
- // filter might want to parse for discontinuities or errors since you have to look at
- // every sample to do this properly.
- //
- HRESULT GetTimecode(
- [out] PTIMECODE_SAMPLE pTimecodeSample) ;
- }
- typedef IAMTimecodeReader *PIAMTIMECODEREADER;
- //---------------------------------------------------------------------
- //=====================================================================
- // Defines IAMTimecodeGenerator Interface
- //
- // Contains properties and methods that define behavior of an external
- // SMPTE/MIDI Timecode Generator. It is expected that this interface
- // will be combined (aggregated) with IAMExtTransport to "build" a pro
- // VCR.
- //
- // Implement if: you control such a device
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //---------------------------------------------------------------------
- [
- object,
- uuid(9B496CE0-811B-11cf-8C77-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMTimecodeGenerator : IUnknown {
- // Timecode Generator Mode - gets/sets the following properties (see
- // vcrdefss.h for detailed values):
- // ED_TCG_TIMECODE_TYPE - LTC, VITC, or MIDI
- // ED_TCG_FRAMERATE - 24, 25, 30 drop or 30 nondrop
- // ED_TCG_SYNC_SOURCE - what is driving the bitclock
- // ED_TCG_REFERENCE_SOURCE - what is driving the count value
- HRESULT GetTCGMode(
- [in] long Param,
- [out] long *pValue);
- HRESULT SetTCGMode(
- [in] long Param,
- [in] long Value);
- // Select into which line(s) of the vertical interval timecode will be inserted (if VITC).
- // Hi bit set means add this line to any previously set lines.
- // To generate VITC on specific multiple lines, the caller would make successive calls to
- // put_VITCLine(), once for each line desired.
- HRESULT put_VITCLine(
- [in] long Line // valid lines are 11-20, 0 means autoselect(this setting
- ); // is for TC readers that decode from multiple lines)
- HRESULT get_VITCLine(
- [out] long *pLine
- );
- // Sets timecode and/or userbit value. If generator is running, takes effect
- // immediately. If caller wants to set only timecode, set userbit value to -1L (and
- // same for setting userbits only)
- //
- HRESULT SetTimecode(
- [in] PTIMECODE_SAMPLE pTimecodeSample) ;
- // GetTimecode can be used to obtain the most recent timecode value available in the
- // stream. The client can use this to monitor the timecode and verify the generator is
- // working properly
- //
- HRESULT GetTimecode(
- [out] PTIMECODE_SAMPLE pTimecodeSample) ;
- }
- typedef IAMTimecodeGenerator *PIAMTIMECODEGENERATOR;
- //---------------------------------------------------------------------
- // Defines IAMTimecodeDisplay Interface
- //
- // Contains properties and methods that define behavior of an external
- // SMPTE/MIDI Timecode Display device (aka "character generator" for
- // making "burn-ins" or "window dubs"). It is expected that this interface
- // will be combined (aggregated) with IAMExtTransport and the timecode
- // interfaces to "build" a pro VCR.
- //
- // Implement if: you control such a device
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //---------------------------------------------------------------------
- [
- object,
- uuid(9B496CE2-811B-11cf-8C77-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMTimecodeDisplay : IUnknown
- {
- // Enable/disable external device's timecode reader's character generator output. Some
- // readers have this feature - this is not intended for rendering inside the PC!
- HRESULT GetTCDisplayEnable(
- [out] long *pState); // OATRUE | OAFALSE
- HRESULT SetTCDisplayEnable(
- [in] long State); // OATRUE | OAFALSE
- // Timecode reader's character generator output
- // characteristics (size, position, intensity, etc.).
- HRESULT GetTCDisplay(
- [in] long Param,
- [out] long *pValue);
- HRESULT SetTCDisplay(
- [in] long Param,
- [in] long Value);
- /* Allowable params and values (see edevdefs.h for details):
- ED_TCD_SOURCE
- ED_TCR | ED_TCG
- ED_TCD_SIZE
- ED_SMALL | ED_MED | ED_LARGE
- ED_TCD_POSITION
- ED_TOP | ED_MIDDLE | ED_BOTTOM or'd with
- ED_LEFT | ED_CENTER | ED_RIGHT
- ED_TCD_INTENSITY
- ED_HIGH | ED_LOW
- ED_TCD_TRANSPARENCY // set from 0 to 4, 0 being completely opaque
- ED_TCD_INVERT // white on black or black on white
- OATRUE | OAFALSE
- ED_TCD_BORDER // white border for black chars, black border for white letters
- OATRUE | OAFALSE
- */
- }
- typedef IAMTimecodeDisplay *PIAMTIMECODEDISPLAY;
- [
- object,
- uuid(c6545bf0-e76b-11d0-bd52-00a0c911ce86),
- pointer_default(unique)
- ]
- interface IAMDevMemoryAllocator : IUnknown
- {
- HRESULT GetInfo(
- [out] DWORD *pdwcbTotalFree,
- [out] DWORD *pdwcbLargestFree,
- [out] DWORD *pdwcbTotalMemory,
- [out] DWORD *pdwcbMinimumChunk);
- HRESULT CheckMemory(
- [in] const BYTE *pBuffer);
- HRESULT Alloc(
- [out] BYTE **ppBuffer,
- [in, out] DWORD *pdwcbBuffer);
- HRESULT Free(
- [in] BYTE *pBuffer);
- HRESULT GetDevMemoryObject(
- [out] IUnknown **ppUnkInnner,
- [in] IUnknown *pUnkOuter);
- }
- typedef IAMDevMemoryAllocator *PAMDEVMEMORYALLOCATOR;
- [
- object,
- uuid(c6545bf1-e76b-11d0-bd52-00a0c911ce86),
- pointer_default(unique)
- ]
- interface IAMDevMemoryControl : IUnknown
- {
- HRESULT QueryWriteSync();
- HRESULT WriteSync();
- HRESULT GetDevId(
- [out] DWORD *pdwDevId);
- }
- typedef IAMDevMemoryControl *PAMDEVMEMORYCONTROL;
- // Flags for IAMStreamSelection::Info
- enum _AMSTREAMSELECTINFOFLAGS {
- AMSTREAMSELECTINFO_ENABLED = 0x01, // Enable - off for disable
- AMSTREAMSELECTINFO_EXCLUSIVE = 0x02 // Turns off the others in the group
- // when enabling this one
- };
- // Flags for IAMStreamSelection::Enable
- enum _AMSTREAMSELECTENABLEFLAGS {
- // Currently valid values are :
- // 0 - disable all streams in the group containing this stream
- // ..._ENABLE - enable only this stream with in the given group
- // and disable all others
- // ..._ENABLEALL - send out all streams
- AMSTREAMSELECTENABLE_ENABLE = 0x01, // Enable
- AMSTREAMSELECTENABLE_ENABLEALL = 0x02 // Enable all streams in the group
- // containing this stream
- };
- // Control which logical streams are played and find out information about
- // them
- // Normally supported by a filter
- [
- object,
- uuid(c1960960-17f5-11d1-abe1-00a0c905f375),
- pointer_default(unique)
- ]
- interface IAMStreamSelect : IUnknown
- {
- // Returns total count of streams
- HRESULT Count(
- [out] DWORD *pcStreams); // Count of logical streams
- // Return info for a given stream - S_FALSE if iIndex out of range
- // The first steam in each group is the default
- HRESULT Info(
- [in] long lIndex, // 0-based index
- [out] AM_MEDIA_TYPE **ppmt, // Media type - optional
- // Use DeleteMediaType to free
- [out] DWORD *pdwFlags, // flags - optional
- [out] LCID *plcid, // LCID (returns 0 if none) - optional
- [out] DWORD *pdwGroup, // Logical group - optional
- [out] WCHAR **ppszName, // Name - optional - free with CoTaskMemFree
- // optional
- [out] IUnknown **ppObject, // Associated object - optional
- // Object may change if Enable is
- // called on this interface
- // - returns NULL if no associated object
- // Returns pin or filter for DShow
- [out] IUnknown **ppUnk); // Stream specific interface
- // Enable or disable a given stream
- HRESULT Enable(
- [in] long lIndex,
- [in] DWORD dwFlags);
- }
- typedef IAMStreamSelect *PAMSTREAMSELECT;
- enum _AMRESCTL_RESERVEFLAGS
- {
- AMRESCTL_RESERVEFLAGS_RESERVE = 0x00, // Increment reserve count
- AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x01 // Decrement reserve count
- };
- // Reserve resources now so that playback can be subsequently
- // guaranteed
- //
- // Normally supported by a filter
- //
- [
- object,
- uuid(8389d2d0-77d7-11d1-abe6-00a0c905f375),
- pointer_default(unique),
- local
- ]
- interface IAMResourceControl : IUnknown
- {
- // The reserve count is incremented/decremented if and only if
- // S_OK is returned
- // Unreserve once for every Reserve call
- HRESULT Reserve(
- [in] DWORD dwFlags, // From _AMRESCTL_RESERVEFLAGS enum
- [in] PVOID pvReserved // Must be NULL
- );
- }
- // Set clock adjustments - supported by some clocks
- [
- object,
- uuid(4d5466b0-a49c-11d1-abe8-00a0c905f375),
- pointer_default(unique),
- local
- ]
- interface IAMClockAdjust : IUnknown
- {
- // Set the following delta to clock times
- // The clock will add adjust its times by the given delta
- HRESULT SetClockDelta(
- [in] REFERENCE_TIME rtDelta
- );
- };
- // Filter miscellaneous status flags
- enum _AM_FILTER_MISC_FLAGS {
- AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x00000001, /* Will deliver EC_COMPLETE
- at end of media */
- AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x00000002 /* Filter sources data */
- };
- [
- object,
- uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
- pointer_default(unique),
- local
- ]
- interface IAMFilterMiscFlags : IUnknown
- {
- // Get miscellaneous property flags
- ULONG GetMiscFlags(void);
- };
- // Video Image drawing interface
- [
- object,
- local,
- uuid(48efb120-ab49-11d2-aed2-00a0c995e8d5),
- pointer_default(unique),
- ]
- interface IDrawVideoImage : IUnknown
- {
- HRESULT DrawVideoImageBegin();
- HRESULT DrawVideoImageEnd();
- HRESULT DrawVideoImageDraw(
- [in] HDC hdc,
- [in] LPRECT lprcSrc,
- [in] LPRECT lprcDst
- );
- }
- //
- // Video Image decimation interface
- //
- // The aim of this interface is to enable a video renderer filter to
- // control the decimation properties of a video decoder connected to
- // the video renderer
- //
- // This interface should only be supported by decoders that are capable of
- // decimating their output image by an arbitary amount.
- //
- //
- [
- object,
- local,
- uuid(2e5ea3e0-e924-11d2-b6da-00a0c995e8df),
- pointer_default(unique),
- ]
- interface IDecimateVideoImage : IUnknown
- {
- //
- // Informs the decoder that it should decimate its output
- // image to the specified width and height. If the decoder can
- // decimate to this size it should return S_OK.
- // If the decoder can't perform the requested decimation
- // or wants to stop performing the decimation that it is
- // currently doing it should return E_FAIL.
- //
- HRESULT SetDecimationImageSize(
- [in] long lWidth,
- [in] long lHeight);
- //
- // Informs the decoder that it should stop decimating its output image
- // and resume normal output.
- //
- HRESULT ResetDecimationImageSize();
- }
- typedef enum _DECIMATION_USAGE {
- DECIMATION_LEGACY, // decimate at ovly then video port then crop
- DECIMATION_USE_DECODER_ONLY, // decimate image at the decoder only
- DECIMATION_USE_VIDEOPORT_ONLY, // decimate at the video port only
- DECIMATION_USE_OVERLAY_ONLY, // decimate at the overlay only
- DECIMATION_DEFAULT // decimate at decoder then ovly the vide port then crop
- } DECIMATION_USAGE;
- [
- object,
- local,
- uuid(60d32930-13da-11d3-9ec6-c4fcaef5c7be),
- pointer_default(unique),
- ]
- interface IAMVideoDecimationProperties: IUnknown
- {
- //
- // Queries the current usage of the above IDecimateVideoImage
- // interface.
- //
- HRESULT QueryDecimationUsage(
- [out] DECIMATION_USAGE* lpUsage); // from DECIMATION_USAGE enum
- //
- // Sets the current usage of the above IDecimateVideoImage
- // interface.
- //
- HRESULT SetDecimationUsage(
- [in] DECIMATION_USAGE Usage); // from DECIMATION_USAGE enum
- }
- //---------------------------------------------------------------------
- //
- // IVideoFrameStep interface
- //
- //---------------------------------------------------------------------
- [
- object,
- uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a),
- pointer_default(unique),
- ]
- interface IVideoFrameStep : IUnknown
- {
- //
- // Stop(), Pause(), Run() all cancel Step as does any seeking
- // request.
- //
- // The Step() and CancelStep() methods of this interface
- // Cancel any previous step.
- //
- // When stepping is complete EC_STEP_COMPLETE is signalled.
- //
- // When the filter graph gets EC_STEP_COMPLETE it automatically
- // sets the filter graph into paused state and forwards the
- // notification to the application
- //
- // Returns S_OK if stepping initiated.
- //
- // dwFrames
- // 1 means step 1 frame forward
- // 0 is invalid
- // n (n > 1) means skip n - 1 frames and show the nth
- //
- // pStepObject
- // NULL - default step object (filter) picked
- // non-NULL - use this object for stepping
- //
- HRESULT Step(DWORD dwFrames, [unique] IUnknown *pStepObject);
- // Can step?
- // Returns S_OK if it can, S_FALSE if it can't or error code.
- // bMultiple - if TRUE return whether can step n > 1
- HRESULT CanStep(long bMultiple, [unique] IUnknown *pStepObject);
- // Cancel stepping
- HRESULT CancelStep();
- }
- //---------------------------------------------------------------------
- //
- // IAMPushSource interface
- //
- // Provides a means for source filters to describe information about the
- // data that they source, such as whether the data is live or not, and
- // what type of clock was used for timestamps. This information may be
- // needed by other clocks in the graph in order to provide accurate
- // synchronization. Also provides a way to specify an offset value for
- // the filter to use when timestamping the streams it sources. Provides
- // support for the IAMLatency interface as well.
- //
- //---------------------------------------------------------------------
- enum _AM_PUSHSOURCE_FLAGS {
- //
- // The default assumption is that the data is from a live source,
- // time stamped with the graph clock, and the source does not
- // attempt to rate match the data it delivers.
- // The following flags can be used to override this assumption.
- //
- // capability flags
- AM_PUSHSOURCECAPS_INTERNAL_RM = 0x00000001, // source provides internal support for rate matching
- AM_PUSHSOURCECAPS_NOT_LIVE = 0x00000002, // don't treat source data as live
- AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x00000004, // source data timestamped with clock not
- // exposed to the graph
- // request flags, set by user via SetPushSourceFlags method
- AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x00010000 // source was requested to timestamp
- // using a clock that isn't the graph clock
- };
- //
- // Used to set a source filter to run in a "live" mode.
- //
- [
- object,
- uuid(F185FE76-E64E-11d2-B76E-00C04FB6BD3D),
- pointer_default(unique)
- ]
- interface IAMPushSource : IAMLatency
- {
- // used to discover push source's capabilities.
- // may be any combination of the AM_PUSHSOURCE_FLAGS flags.
- HRESULT GetPushSourceFlags (
- [out] ULONG *pFlags
- );
- // used to set request flags for a push source.
- // may be a combination of the AM_PUSHSOURCE_REQS_xxx flags.
- HRESULT SetPushSourceFlags (
- [in] ULONG Flags
- );
- // specify an offset for push source time stamps
- HRESULT SetStreamOffset (
- [in] REFERENCE_TIME rtOffset
- );
- // retrieve the offset this push source is using
- HRESULT GetStreamOffset (
- [out] REFERENCE_TIME *prtOffset
- );
- // retrieve the maximum stream offset this push source thinks it can support
- HRESULT GetMaxStreamOffset (
- [out] REFERENCE_TIME *prtMaxOffset
- );
- // allows the filter graph to tell a push source the maximum latency allowed on the graph
- // this allows pins like the video capture preview pin to be more efficient with the amount
- // of buffering required to support the maximum graph latency
- HRESULT SetMaxStreamOffset (
- [in] REFERENCE_TIME rtMaxOffset
- );
- };
- // ------------------------------------------------------------------------
- //
- // IAMDeviceRemoval interface
- //
- // Implemented by filters to request and receive WM_DEVICECHANGE
- // notifications
- //
- // ------------------------------------------------------------------------
- [
- object,
- uuid(f90a6130-b658-11d2-ae49-0000f8754b99),
- pointer_default(unique)
- ]
- interface IAMDeviceRemoval : IUnknown
- {
- HRESULT DeviceInfo(
- [out] CLSID *pclsidInterfaceClass,
- [out] WCHAR **pwszSymbolicLink);
- HRESULT Reassociate();
- HRESULT Disassociate();
- }
- //
- // for DV
- //
- typedef struct {
- //for 1st 5/6 DIF seq.
- DWORD dwDVAAuxSrc;
- DWORD dwDVAAuxCtl;
- //for 2nd 5/6 DIF seq.
- DWORD dwDVAAuxSrc1;
- DWORD dwDVAAuxCtl1;
- //for video information
- DWORD dwDVVAuxSrc;
- DWORD dwDVVAuxCtl;
- DWORD dwDVReserved[2];
- } DVINFO, *PDVINFO;
- // ------------------------------------------------------------------------
- //
- // IDVEnc interface
- //
- // Implemented by DV encoder filters to set Encoder format
- //
- // ------------------------------------------------------------------------
- enum _DVENCODERRESOLUTION { //resolution
- DVENCODERRESOLUTION_720x480 = 2012,
- DVENCODERRESOLUTION_360x240 = 2013,
- DVENCODERRESOLUTION_180x120 = 2014,
- DVENCODERRESOLUTION_88x60 = 2015
- };
- enum _DVENCODERVIDEOFORMAT { //PAL/ntsc
- DVENCODERVIDEOFORMAT_NTSC = 2000,
- DVENCODERVIDEOFORMAT_PAL = 2001
- };
- enum _DVENCODERFORMAT { // dvsd/dvhd/dvsl
- DVENCODERFORMAT_DVSD = 2007,
- DVENCODERFORMAT_DVHD = 2008,
- DVENCODERFORMAT_DVSL = 2009
- };
- [
- object,
- uuid(d18e17a0-aacb-11d0-afb0-00aa00b67a42),
- pointer_default(unique)
- ]
- interface IDVEnc : IUnknown
- {
- HRESULT get_IFormatResolution (
- [out] int *VideoFormat, //pal or ntsc
- [out] int *DVFormat, //dvsd dvhd dvsl
- [out] int *Resolution, //720, 360, 180,88
- [in] BYTE fDVInfo, //TRUE: DVINFO structure exist, FALSE: Do not care DVINFO
- [out] DVINFO *sDVInfo //NULL if fDVInfo=FALSE,
- );
- HRESULT put_IFormatResolution (
- [in] int VideoFormat,
- [in] int DVFormat,
- [in] int Resolution,
- [in] BYTE fDVInfo, //TRUE: DVINFO structure exist, FALSE: Do not care DVINFO
- [in] DVINFO *sDVInfo //NULL if fDVInfo=FALSE,
- );
- }
- // ------------------------------------------------------------------------
- //
- // IDVDec interface
- //
- // Implemented by DV decoder filters to set decoder size
- //
- // ------------------------------------------------------------------------
- enum _DVDECODERRESOLUTION {
- DVDECODERRESOLUTION_720x480 = 1000,
- DVDECODERRESOLUTION_360x240 = 1001,
- DVDECODERRESOLUTION_180x120 = 1002,
- DVDECODERRESOLUTION_88x60 = 1003
- };
- enum _DVRESOLUTION {
- DVRESOLUTION_FULL = 1000,
- DVRESOLUTION_HALF = 1001,
- DVRESOLUTION_QUARTER = 1002,
- DVRESOLUTION_DC = 1003
- };
- [
- object,
- uuid(b8e8bd60-0bfe-11d0-af91-00aa00b67a42),
- pointer_default(unique)
- ]
- interface IIPDVDec : IUnknown
- {
- HRESULT get_IPDisplay (
- [out] int *displayPix // The display pixels arrage
- );
- HRESULT put_IPDisplay (
- [in] int displayPix // Change to this display pixel arrage
- ) ;
- }
- // ------------------------------------------------------------------------
- //
- // IDVSplitter interface
- //
- // Implemented by DV splitter filters
- //
- // ------------------------------------------------------------------------
- [
- object,
- uuid(92a3a302-da7c-4a1f-ba7e-1802bb5d2d02)
- ]
- interface IDVSplitter : IUnknown
- {
- HRESULT DiscardAlternateVideoFrames(
- [in] int nDiscard
- ) ;
- }
- // Audio Renderer statistics params for IAMAudioRendererStats interface
- enum _AM_AUDIO_RENDERER_STAT_PARAM {
- AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1, // audio breaks
- AM_AUDREND_STAT_PARAM_SLAVE_MODE, // current slave mode, see AM_AUDREND_SLAVE_MODEs
- AM_AUDREND_STAT_PARAM_SILENCE_DUR, // silence inserted due to gaps (ms)
- AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR, // duration of the last buffer received
- AM_AUDREND_STAT_PARAM_DISCONTINUITIES, // discontinuities seen since running
- AM_AUDREND_STAT_PARAM_SLAVE_RATE, // what rate are we currently slaving at? S_FALSE if not slaving
- AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR, // for waveOut slaving - data dropped or added to stay in-sync
- // dwParam1 - dropped duration(ms)
- // dwParam2 - paused duration(ms)
- AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR, // highest & lowest clock differences seen
- // dwParam1 - high err
- // dwParam2 - low err
- AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR, // last high and low errs seen
- // dwParam1 - last high err
- // dwParam2 - last low err
- AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR, // error between master/slave clocks
- AM_AUDREND_STAT_PARAM_BUFFERFULLNESS, // percent audio buffer fullness
- AM_AUDREND_STAT_PARAM_JITTER // input buffer jitter
- };
- //---------------------------------------------------------------------
- //
- // IAMAudioRendererStats interface
- //
- // Interface to get at statistical information that is optionally stored
- // in an audio renderer filter. Supported on the filter interface (although
- // this might be better for ksproxy if we define it as a pin interface?)
- //
- //---------------------------------------------------------------------
- [
- object,
- uuid(22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93),
- pointer_default(unique)
- ]
- interface IAMAudioRendererStats : IUnknown
- {
- // Get value corresponding to the passed in parameter id
- HRESULT GetStatParam(
- [in] DWORD dwParam,
- [out] DWORD *pdwParam1,
- [out] DWORD *pdwParam2
- );
- }
- //---------------------------------------------------------------------
- //
- // IAMLatency interface
- //
- // Allows a filter to report the expected latency associated with a data
- // stream flowing from its input to output pin. Supported on output pins.
- //
- //---------------------------------------------------------------------
- [
- object,
- uuid(62EA93BA-EC62-11d2-B770-00C04FB6BD3D),
- pointer_default(unique)
- ]
- interface IAMLatency : IUnknown
- {
- HRESULT GetLatency(
- [in] REFERENCE_TIME *prtLatency
- );
- }
- enum _AM_INTF_SEARCH_FLAGS {
- AM_INTF_SEARCH_INPUT_PIN = 0x00000001, // search input pins
- AM_INTF_SEARCH_OUTPUT_PIN = 0x00000002, // search output pins
- AM_INTF_SEARCH_FILTER = 0x00000004 // search filters
- };
- //---------------------------------------------------------------------
- //
- // IAMGraphStreams interface
- //
- // Interface used to control or search over connected streams of data
- // flow within a filter graph.
- //
- //---------------------------------------------------------------------
- [
- object,
- uuid(632105FA-072E-11d3-8AF9-00C04FB6BD3D),
- pointer_default(unique)
- ]
- interface IAMGraphStreams : IUnknown
- {
- // Search upstream from the current pin, for the specified interface.
- // dwFlags can be any combination of the AM_INTF_SEARCH_FLAGS, and allows
- // control over what objects to search. A value of 0 means to search all.
- HRESULT FindUpstreamInterface(
- [in] IPin *pPin,
- [in] REFIID riid,
- [out, iid_is(riid)] void **ppvInterface,
- [in] DWORD dwFlags );
- // Enable or disable the graph's setting of a timestamp offset
- // on push sources.
- HRESULT SyncUsingStreamOffset( [in] BOOL bUseStreamOffset );
- // allow an app to set the maximum offset used on push source filters
- HRESULT SetMaxGraphLatency( [in] REFERENCE_TIME rtMaxGraphLatency );
- }
- //
- // IAMOverlayFX
- //
- // This interface is exposed by the overlay mixer filter and allows
- // an application to apply various "effects" to the overlay surface
- // used by the overlay mixer.
- //
- // The effects that can be applied are described by the AMOVERLAYFX
- // enumeration.
- //
- enum AMOVERLAYFX {
- // Normal (ie. top down, left to right) video
- AMOVERFX_NOFX = 0x00000000,
- // Mirror the overlay across the vertical axis
- AMOVERFX_MIRRORLEFTRIGHT = 0x00000002,
- // Mirror the overlay across the horizontal axis
- AMOVERFX_MIRRORUPDOWN = 0x00000004,
- // Deinterlace the overlay, if possible
- AMOVERFX_DEINTERLACE = 0x00000008
- };
- [
- object,
- uuid(62fae250-7e65-4460-bfc9-6398b322073c),
- pointer_default(unique)
- ]
- interface IAMOverlayFX : IUnknown
- {
- // Use this method to determine what overlay effects are currently available
- // for the overlay surface used by the overlay mixer filter.
- //
- HRESULT QueryOverlayFXCaps(
- [out] DWORD *lpdwOverlayFXCaps
- );
- // Use this method to apply a new overlay effect to the overlay surface
- // used by the overlay mixer filter. This method can be called while the
- // filter graph is running, the effect is applied immediately
- //
- HRESULT SetOverlayFX(
- [in] DWORD dwOverlayFX
- );
- // Use this method to determine what effect (if any) is currently being
- // applied to the overlay surface by the overlay mixer filter.
- //
- HRESULT GetOverlayFX(
- [out] DWORD *lpdwOverlayFX
- );
- }
- // IAMOpenProgress interface provides information about current progress through
- // a download
- // NOTE: The following cpp_quote is there to make sure that we do not break the whistler build when this file is
- // updated in Whistler as they are using a private copy of op.h which is removed as a result of moving the IAMOpenProgress
- // interface into axextend.idl. Html+time has a private copy of op.h in \index1srcnewntinetcoremshtmlsrctimeincludeop.h
- // which needs to be removed when integrating into Whistler to avoid any future build breaks.
- cpp_quote("#define __OP_H__")
- [
- object,
- uuid(8E1C39A1-DE53-11cf-AA63-0080C744528D),
- pointer_default(unique)
- ]
- interface IAMOpenProgress : IUnknown
- {
- // QueryProgress can be used to query the source filter which supports this interface
- // for progress information during a renderfile operation.
- HRESULT QueryProgress(
- [out] LONGLONG* pllTotal,
- [out] LONGLONG* pllCurrent
- );
- // AbortOperation can be used to request an abort of RenderFile operation
- // causing it to stop downloading. This methods instructs the exporter of
- // the IAMOpenProgress interface to hold up their internal abort flag until
- // further notice.
- HRESULT AbortOperation(
- );
- }
- /*++
- IMpeg2Demultiplexer
-
- This interface is implemented by the MPEG-2 Demultiplexer filter,
- irrespective of program vs. transport stream splitting functionality.
- --*/
- [
- object,
- local,
- uuid (436eee9c-264f-4242-90e1-4e330c107512),
- pointer_default(unique)
- ]
- interface IMpeg2Demultiplexer : IUnknown
- {
- /*++
- ------------------------------------------------------------------------
- purpose: Creates an output pin of the specified media type.
-
- pMediaType media type specifier for the new pin
- pszPinName pin name; cannot be a duplicate of an existing pin
- ppIPin IPin interface pointer to the newly created pin
- --*/
- HRESULT
- CreateOutputPin (
- [in] AM_MEDIA_TYPE * pMediaType,
- [in] LPWSTR pszPinName,
- [out] IPin ** ppIPin
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- purpose: Updates the media type of the specified output pin. If no
- connection exists, the media type is updated always. If
- the pin is connected, the success/failure of the call will
- depend on downstream input pin's accetance/rejection of
- the specified media type, and subsequent success/failure
- of a reconnect.
-
- pszPinName pin name
- pMediaType new media type specifier
- --*/
- HRESULT
- SetOutputPinMediaType (
- [in] LPWSTR pszPinName,
- [in] AM_MEDIA_TYPE * pMediaType
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- purpose: Deletes the specified output pin.
-
- pszPinName pin name
- --*/
- HRESULT
- DeleteOutputPin (
- [in] LPWSTR pszPinName
- ) ;
- } ;
- //---------------------------------------------------------------------
- // IEnumStreamIdMap interface
- //---------------------------------------------------------------------
- cpp_quote("#define MPEG2_PROGRAM_STREAM_MAP 0x00000000")
- cpp_quote("#define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001")
- cpp_quote("#define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002")
- cpp_quote("#define MPEG2_PROGRAM_PACK_HEADER 0x00000003")
- cpp_quote("#define MPEG2_PROGRAM_PES_STREAM 0x00000004")
- cpp_quote("#define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005")
- cpp_quote("#define SUBSTREAM_FILTER_VAL_NONE 0x10000000")
- typedef struct {
- ULONG stream_id ; // mpeg-2 stream_id
- DWORD dwMediaSampleContent ; // #define'd above
- ULONG ulSubstreamFilterValue ; // filtering value
- int iDataOffset ; // offset to elementary stream
- } STREAM_ID_MAP ;
- /*++
- Enumerates the StreamIds mapped on a pin
- --*/
- [
- object,
- local,
- uuid (945C1566-6202-46fc-96C7-D87F289C6534),
- pointer_default(unique)
- ]
- interface IEnumStreamIdMap : IUnknown
- {
- HRESULT
- Next (
- [in] ULONG cRequest,
- [in, out, size_is (cRequest)] STREAM_ID_MAP * pStreamIdMap,
- [out] ULONG * pcReceived
- ) ;
- HRESULT
- Skip (
- [in] ULONG cRecords
- ) ;
- HRESULT
- Reset (
- ) ;
- HRESULT
- Clone (
- [out] IEnumStreamIdMap ** ppIEnumStreamIdMap
- ) ;
- } ;
- /*++
- Implemented on the output pin.
-
- Provides the ability to map/unmap a stream_id to/from an output pin.
- --*/
- [
- object,
- local,
- uuid (D0E04C47-25B8-4369-925A-362A01D95444),
- pointer_default(unique)
- ]
- interface IMPEG2StreamIdMap : IUnknown
- {
- HRESULT
- MapStreamId (
- [in] ULONG ulStreamId, // mpeg-2 stream_id
- [in] DWORD MediaSampleContent, // #define'd above IEnumStreamIdMap
- [in] ULONG ulSubstreamFilterValue, // filter value
- [in] int iDataOffset // elementary stream offset
- ) ;
- HRESULT
- UnmapStreamId (
- [in] ULONG culStreamId, // number of stream_id's in pulStreamId
- [in] ULONG * pulStreamId // array of stream_id's to unmap
- ) ;
- HRESULT
- EnumStreamIdMap (
- [out] IEnumStreamIdMap ** ppIEnumStreamIdMap
- ) ;
- } ;