home *** CD-ROM | disk | FTP | other *** search
/ Beginning Direct3D Game Programming / Direct3D.iso / directx / dxf / include / vpconfig.h < prev    next >
C/C++ Source or Header  |  2000-10-01  |  4KB  |  136 lines

  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__
  136.