diff options
Diffstat (limited to 'sdk/dx8sdk/Include/vpconfig.h')
-rw-r--r-- | sdk/dx8sdk/Include/vpconfig.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/sdk/dx8sdk/Include/vpconfig.h b/sdk/dx8sdk/Include/vpconfig.h new file mode 100644 index 00000000..776d99f5 --- /dev/null +++ b/sdk/dx8sdk/Include/vpconfig.h @@ -0,0 +1,135 @@ +//------------------------------------------------------------------------------ +// File: VPConfig.h +// +// Desc: An interface exposed by the decoder to help it and the filter +// configuring the videoport to communicate. +// +// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __IVPConfig__ +#define __IVPConfig__ + +#ifdef __cplusplus +extern "C" { +#endif + +// IVPBaseConfig +DECLARE_INTERFACE_(IVPBaseConfig, IUnknown) +{ +public: + + // gets the various connection information structures (guid, portwidth) + // in an array of structures. If the pointer to the array is NULL, first + // parameter returns the total number of formats supported. + STDMETHOD (GetConnectInfo)(THIS_ + IN OUT LPDWORD pdwNumConnectInfo, + IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo + ) PURE; + + // sets the connection entry chosen (0, 1, .. ,(dwNumProposedEntries-1)) + STDMETHOD (SetConnectInfo)(THIS_ + IN DWORD dwChosenEntry + ) PURE; + + // gets various data parameters, includes dimensionnal info + STDMETHOD (GetVPDataInfo)(THIS_ + IN OUT LPAMVPDATAINFO pamvpDataInfo + ) PURE; + + // retrives maximum pixels per second rate expected for a given + // format and a given scaling factor. If decoder does not support + // those scaling factors, then it gives the rate and the nearest + // scaling factors. + STDMETHOD (GetMaxPixelRate)(THIS_ + IN OUT LPAMVPSIZE pamvpSize, + OUT LPDWORD pdwMaxPixelsPerSecond + ) PURE; + + // informs the callee of the videoformats supported by the videoport + STDMETHOD (InformVPInputFormats)(THIS_ + IN DWORD dwNumFormats, + IN LPDDPIXELFORMAT pDDPixelFormats + ) PURE; + + // gets the various formats supported by the decoder in an array + // of structures. If the pointer to the array is NULL, first parameter + // returns the total number of formats supported. + STDMETHOD (GetVideoFormats)(THIS_ + IN OUT LPDWORD pdwNumFormats, + IN OUT LPDDPIXELFORMAT pddPixelFormats + ) PURE; + + // sets the format entry chosen (0, 1, .. ,(dwNumProposedEntries-1)) + STDMETHOD (SetVideoFormat)(THIS_ + IN DWORD dwChosenEntry + ) PURE; + + // asks the decoder to treat even fields like odd fields and visa versa + STDMETHOD (SetInvertPolarity)(THIS_ + ) PURE; + + // the mixer uses this function to determine if the callee wants + // the vpmixer to use its overlay surface and if so to get a pointer to it + STDMETHOD (GetOverlaySurface)(THIS_ + OUT LPDIRECTDRAWSURFACE* ppddOverlaySurface + ) PURE; + + // sets the direct draw kernel handle + STDMETHOD (SetDirectDrawKernelHandle)(THIS_ + IN ULONG_PTR dwDDKernelHandle + ) PURE; + + // sets the video port id + STDMETHOD (SetVideoPortID)(THIS_ + IN DWORD dwVideoPortID + ) PURE; + + // sets the direct draw surface kernel handle + STDMETHOD (SetDDSurfaceKernelHandles)(THIS_ + IN DWORD cHandles, + IN ULONG_PTR *rgDDKernelHandles + ) PURE; + + // Tells driver about surface created on its behalf by ovmixer/vbisurf and + // returned from videoport/ddraw. Should always return NOERROR or E_NOIMPL. + // dwPitch is the pitch of the surface (distance in pixels between the start + // pixels of two consecutive lines of the surface). (dwXOrigin, dwYOrigin) + // are the (X, Y) coordinates of the pixel at which valid data starts. + STDMETHOD (SetSurfaceParameters)(THIS_ + IN DWORD dwPitch, + IN DWORD dwXOrigin, + IN DWORD dwYOrigin + ) PURE; +}; + +// IVPConfig +DECLARE_INTERFACE_(IVPConfig, IVPBaseConfig) +{ +public: + // the mixer uses this function to determine if the callee wants + // the mixer to decimate VIDEO data at its own descrition + STDMETHOD (IsVPDecimationAllowed)(THIS_ + OUT LPBOOL pbIsDecimationAllowed + ) PURE; + + // sets the scaling factors. If decoder does not support these, + // then it sets the values to the nearest factors it can support + STDMETHOD (SetScalingFactors)(THIS_ + IN LPAMVPSIZE pamvpSize + ) PURE; +}; + +// IVPVBIConfig +DECLARE_INTERFACE_(IVPVBIConfig, IVPBaseConfig) +{ +public: +}; + +#ifdef __cplusplus +} +#endif + + +#endif // __IVPConfig__ |