| 1 |
bearsoft |
1.1 |
//------------------------------------------------------------------------------
|
| 2 |
|
|
// File: VPConfig.h
|
| 3 |
|
|
//
|
| 4 |
|
|
// Desc: An interface exposed by the decoder to help it and the filter
|
| 5 |
|
|
// configuring the videoport to communicate.
|
| 6 |
|
|
//
|
| 7 |
|
|
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
| 8 |
|
|
//------------------------------------------------------------------------------
|
| 9 |
|
|
|
| 10 |
|
|
|
| 11 |
|
|
#ifndef __IVPConfig__
|
| 12 |
|
|
#define __IVPConfig__
|
| 13 |
|
|
|
| 14 |
|
|
#ifdef __cplusplus
|
| 15 |
|
|
extern "C" {
|
| 16 |
|
|
#endif
|
| 17 |
|
|
|
| 18 |
|
|
// IVPBaseConfig
|
| 19 |
|
|
DECLARE_INTERFACE_(IVPBaseConfig, IUnknown)
|
| 20 |
|
|
{
|
| 21 |
|
|
public:
|
| 22 |
|
|
|
| 23 |
|
|
// gets the various connection information structures (guid, portwidth)
|
| 24 |
|
|
// in an array of structures. If the pointer to the array is NULL, first
|
| 25 |
|
|
// parameter returns the total number of formats supported.
|
| 26 |
|
|
STDMETHOD (GetConnectInfo)(THIS_
|
| 27 |
|
|
IN OUT LPDWORD pdwNumConnectInfo,
|
| 28 |
|
|
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo
|
| 29 |
|
|
) PURE;
|
| 30 |
|
|
|
| 31 |
|
|
// sets the connection entry chosen (0, 1, .. ,(dwNumProposedEntries-1))
|
| 32 |
|
|
STDMETHOD (SetConnectInfo)(THIS_
|
| 33 |
|
|
IN DWORD dwChosenEntry
|
| 34 |
|
|
) PURE;
|
| 35 |
|
|
|
| 36 |
|
|
// gets various data parameters, includes dimensionnal info
|
| 37 |
|
|
STDMETHOD (GetVPDataInfo)(THIS_
|
| 38 |
|
|
IN OUT LPAMVPDATAINFO pamvpDataInfo
|
| 39 |
|
|
) PURE;
|
| 40 |
|
|
|
| 41 |
|
|
// retrives maximum pixels per second rate expected for a given
|
| 42 |
|
|
// format and a given scaling factor. If decoder does not support
|
| 43 |
|
|
// those scaling factors, then it gives the rate and the nearest
|
| 44 |
|
|
// scaling factors.
|
| 45 |
|
|
STDMETHOD (GetMaxPixelRate)(THIS_
|
| 46 |
|
|
IN OUT LPAMVPSIZE pamvpSize,
|
| 47 |
|
|
OUT LPDWORD pdwMaxPixelsPerSecond
|
| 48 |
|
|
) PURE;
|
| 49 |
|
|
|
| 50 |
|
|
// informs the callee of the videoformats supported by the videoport
|
| 51 |
|
|
STDMETHOD (InformVPInputFormats)(THIS_
|
| 52 |
|
|
IN DWORD dwNumFormats,
|
| 53 |
|
|
IN LPDDPIXELFORMAT pDDPixelFormats
|
| 54 |
|
|
) PURE;
|
| 55 |
|
|
|
| 56 |
|
|
// gets the various formats supported by the decoder in an array
|
| 57 |
|
|
// of structures. If the pointer to the array is NULL, first parameter
|
| 58 |
|
|
// returns the total number of formats supported.
|
| 59 |
|
|
STDMETHOD (GetVideoFormats)(THIS_
|
| 60 |
|
|
IN OUT LPDWORD pdwNumFormats,
|
| 61 |
|
|
IN OUT LPDDPIXELFORMAT pddPixelFormats
|
| 62 |
|
|
) PURE;
|
| 63 |
|
|
|
| 64 |
|
|
// sets the format entry chosen (0, 1, .. ,(dwNumProposedEntries-1))
|
| 65 |
|
|
STDMETHOD (SetVideoFormat)(THIS_
|
| 66 |
|
|
IN DWORD dwChosenEntry
|
| 67 |
|
|
) PURE;
|
| 68 |
|
|
|
| 69 |
|
|
// asks the decoder to treat even fields like odd fields and visa versa
|
| 70 |
|
|
STDMETHOD (SetInvertPolarity)(THIS_
|
| 71 |
|
|
) PURE;
|
| 72 |
|
|
|
| 73 |
|
|
// the mixer uses this function to determine if the callee wants
|
| 74 |
|
|
// the vpmixer to use its overlay surface and if so to get a pointer to it
|
| 75 |
|
|
STDMETHOD (GetOverlaySurface)(THIS_
|
| 76 |
|
|
OUT LPDIRECTDRAWSURFACE* ppddOverlaySurface
|
| 77 |
|
|
) PURE;
|
| 78 |
|
|
|
| 79 |
|
|
// sets the direct draw kernel handle
|
| 80 |
|
|
STDMETHOD (SetDirectDrawKernelHandle)(THIS_
|
| 81 |
|
|
IN ULONG_PTR dwDDKernelHandle
|
| 82 |
|
|
) PURE;
|
| 83 |
|
|
|
| 84 |
|
|
// sets the video port id
|
| 85 |
|
|
STDMETHOD (SetVideoPortID)(THIS_
|
| 86 |
|
|
IN DWORD dwVideoPortID
|
| 87 |
|
|
) PURE;
|
| 88 |
|
|
|
| 89 |
|
|
// sets the direct draw surface kernel handle
|
| 90 |
|
|
STDMETHOD (SetDDSurfaceKernelHandles)(THIS_
|
| 91 |
|
|
IN DWORD cHandles,
|
| 92 |
|
|
IN ULONG_PTR *rgDDKernelHandles
|
| 93 |
|
|
) PURE;
|
| 94 |
|
|
|
| 95 |
|
|
// Tells driver about surface created on its behalf by ovmixer/vbisurf and
|
| 96 |
|
|
// returned from videoport/ddraw. Should always return NOERROR or E_NOIMPL.
|
| 97 |
|
|
// dwPitch is the pitch of the surface (distance in pixels between the start
|
| 98 |
|
|
// pixels of two consecutive lines of the surface). (dwXOrigin, dwYOrigin)
|
| 99 |
|
|
// are the (X, Y) coordinates of the pixel at which valid data starts.
|
| 100 |
|
|
STDMETHOD (SetSurfaceParameters)(THIS_
|
| 101 |
|
|
IN DWORD dwPitch,
|
| 102 |
|
|
IN DWORD dwXOrigin,
|
| 103 |
|
|
IN DWORD dwYOrigin
|
| 104 |
|
|
) PURE;
|
| 105 |
|
|
};
|
| 106 |
|
|
|
| 107 |
|
|
// IVPConfig
|
| 108 |
|
|
DECLARE_INTERFACE_(IVPConfig, IVPBaseConfig)
|
| 109 |
|
|
{
|
| 110 |
|
|
public:
|
| 111 |
|
|
// the mixer uses this function to determine if the callee wants
|
| 112 |
|
|
// the mixer to decimate VIDEO data at its own descrition
|
| 113 |
|
|
STDMETHOD (IsVPDecimationAllowed)(THIS_
|
| 114 |
|
|
OUT LPBOOL pbIsDecimationAllowed
|
| 115 |
|
|
) PURE;
|
| 116 |
|
|
|
| 117 |
|
|
// sets the scaling factors. If decoder does not support these,
|
| 118 |
|
|
// then it sets the values to the nearest factors it can support
|
| 119 |
|
|
STDMETHOD (SetScalingFactors)(THIS_
|
| 120 |
|
|
IN LPAMVPSIZE pamvpSize
|
| 121 |
|
|
) PURE;
|
| 122 |
|
|
};
|
| 123 |
|
|
|
| 124 |
|
|
// IVPVBIConfig
|
| 125 |
|
|
DECLARE_INTERFACE_(IVPVBIConfig, IVPBaseConfig)
|
| 126 |
|
|
{
|
| 127 |
|
|
public:
|
| 128 |
|
|
};
|
| 129 |
|
|
|
| 130 |
|
|
#ifdef __cplusplus
|
| 131 |
|
|
}
|
| 132 |
|
|
#endif
|
| 133 |
|
|
|
| 134 |
|
|
|
| 135 |
|
|
#endif // __IVPConfig__
|