ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

amvideo.h
Go to the documentation of this file.
00001 /*
00002  * amvideo.h
00003  *
00004  * DirectX header
00005  *
00006  * Copyright Magnus Olsen (magnus@greatlord.com)
00007  */
00008 
00009 #ifndef __AMVIDEO__
00010 #define __AMVIDEO__
00011 
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015 
00016 #include <ddraw.h>
00017 
00018 #define  AMDDS_NONE        0x00
00019 #define  AMDDS_DCIPS       0x01
00020 #define  AMDDS_PS          0x02
00021 #define  AMDDS_RGBOVR      0x04
00022 #define  AMDDS_YUVOVR      0x08
00023 #define  AMDDS_RGBOFF      0x10
00024 #define  AMDDS_YUVOFF      0x20
00025 #define  AMDDS_RGBFLP      0x40
00026 #define  AMDDS_YUVFLP      0x80
00027 #define  AMDDS_            ALL 0xFF
00028 #define  AMDDS_DEFAULT     AMDDS_ALL
00029 #define  AMDDS_YUV         (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
00030 #define  AMDDS_RGB         (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
00031 #define  AMDDS_PRIMARY     (AMDDS_DCIPS | AMDDS_PS)
00032 #define  iPALETTE_COLORS   256
00033 #define  iEGA_COLORS       16
00034 #define  iMASK_COLORS      3
00035 #define  iTRUECOLOR        16
00036 #define  iRED              0
00037 #define  iGREEN            1
00038 #define  iBLUE             2
00039 #define  iPALETTE          8
00040 #define  iMAXBITS          8
00041 
00042 typedef struct tag_TRUECOLORINFO
00043 {
00044          DWORD             dwBitMasks[iMASK_COLORS];
00045          RGBQUAD           bmiColors[iPALETTE_COLORS];
00046 } TRUECOLORINFO;
00047 
00048 
00049 typedef struct tagVIDEOINFOHEADER
00050 {
00051          RECT              rcSource;
00052          RECT              rcTarget;
00053          DWORD             dwBitRate;
00054          DWORD             dwBitErrorRate;
00055          REFERENCE_TIME    AvgTimePerFrame;
00056          BITMAPINFOHEADER  bmiHeader;
00057 } VIDEOINFOHEADER;
00058 
00059 
00060 typedef struct tagVIDEOINFO
00061 {
00062          RECT               rcSource;
00063          RECT               rcTarget;
00064          DWORD              dwBitRate;
00065          DWORD              dwBitErrorRate;
00066          REFERENCE_TIME     AvgTimePerFrame;
00067          BITMAPINFOHEADER   bmiHeader;
00068          union
00069          {
00070                RGBQUAD       bmiColors[iPALETTE_COLORS];
00071                DWORD         dwBitMasks[iMASK_COLORS];
00072                TRUECOLORINFO TrueColorInfo;
00073          };
00074 } VIDEOINFO;
00075 
00076 typedef struct tagMPEG1VIDEOINFO
00077 {
00078         VIDEOINFOHEADER      hdr;
00079         DWORD                dwStartTimeCode;
00080         DWORD                cbSequenceHeader;
00081         BYTE                 bSequenceHeader[1];
00082 } MPEG1VIDEOINFO;
00083 
00084 typedef struct tagAnalogVideoInfo
00085 {
00086         RECT                 rcSource;
00087         RECT                 rcTarget;
00088         DWORD                dwActiveWidth;
00089         DWORD                dwActiveHeight;
00090         REFERENCE_TIME       AvgTimePerFrame;
00091 } ANALOGVIDEOINFO;
00092 
00093 #define TRUECOLOR(PBMIH)  ((TRUECOLORINFO *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize))
00094 #define COLORS(PBMIH)     ((RGBQUAD *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize))
00095 #define BITMASKS(PBMIH)   ((DWORD *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize))
00096 
00097 #define SIZE_EGA_PALETTE  (iEGA_COLORS * sizeof(RGBQUAD))
00098 #define SIZE_PALETTE      (iPALETTE_COLORS * sizeof(RGBQUAD))
00099 #define SIZE_MASKS        (iMASK_COLORS * sizeof(DWORD))
00100 #define SIZE_PREHEADER    (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader))
00101 #define SIZE_VIDEOHEADER  (sizeof(BITMAPINFOHEADER) + SIZE_PREHEADER)
00102 
00103 #define WIDTHBYTES(BTIS)  ((DWORD)(((BTIS)+31) & (~31)) / 8)
00104 #define DIBWIDTHBYTES(BI) (DWORD)(BI).biBitCount) * (DWORD)WIDTHBYTES((DWORD)(BI).biWidth
00105 #define _DIBSIZE(BI)      (DIBWIDTHBYTES(BI) * (DWORD)(BI).biHeight)
00106 #define DIBSIZE(BI)       ((BI).biHeight < 0 ? (-1)*(_DIBSIZE(BI)) : _DIBSIZE(BI))
00107 
00108 #define BIT_MASKS_MATCH(PBMIH1,PBMIH2)                                \
00109         ((PBMIH2)->dwBitMasks[iGREEN] == (PBMIH1)->dwBitMasks[iGREEN]) && \
00110         (((PBMIH2)->dwBitMasks[iRED] == (PBMIH1)->dwBitMasks[iRED]) &&        \
00111         ((PBMIH2)->dwBitMasks[iBLUE] == (PBMIH1)->dwBitMasks[iBLUE]))
00112 
00113 #define    RESET_MASKS(PBMIH)            (ZeroMemory((PVOID)(PBMIH)->dwBitFields,SIZE_MASKS))
00114 #define    RESET_HEADER(PBMIH)           (ZeroMemory((PVOID)(PBMIH),SIZE_VIDEOHEADER))
00115 #define    RESET_PALETTE(PBMIH)          (ZeroMemory((PVOID)(PBMIH)->bmiColors,SIZE_PALETTE));
00116 #define    PALETTISED(PBMIH)             ((PBMIH)->bmiHeader.biBitCount <= iPALETTE)
00117 #define    PALETTE_ENTRIES(PBMIH)        ((DWORD) 1 << (PBMIH)->bmiHeader.biBitCount)
00118 #define    HEADER(pVideoInfo)            (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader))
00119 #define    MAX_SIZE_MPEG1_SEQUENCE_INFO  140
00120 #define    MPEG1_SEQUENCE_INFO(pv)       ((const BYTE *)(pv)->bSequenceHeader)
00121 #define    SIZE_MPEG1VIDEOINFO(pv)       (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + \
00122                                          (pv)->cbSequenceHeader)
00123 
00124 #undef INTERFACE
00125 #define INTERFACE IDirectDrawVideo
00126 
00127 DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown)
00128 {
00129   STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
00130   STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00131   STDMETHOD_(ULONG,Release)(THIS) PURE;
00132   STDMETHOD(GetSwitches)(THIS_ DWORD *pSwitches) PURE;
00133   STDMETHOD(SetSwitches)(THIS_ DWORD Switches) PURE;
00134   STDMETHOD(GetCaps)(THIS_ DDCAPS *pCaps) PURE;
00135   STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS *pCaps) PURE;
00136   STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *pSurfaceDesc) PURE;
00137   STDMETHOD(GetFourCCCodes)(THIS_ DWORD *pCount,DWORD *pCodes) PURE;
00138   STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE;
00139   STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW *ppDirectDraw) PURE;
00140   STDMETHOD(GetSurfaceType)(THIS_ DWORD *pSurfaceType) PURE;
00141   STDMETHOD(SetDefault)(THIS) PURE;
00142   STDMETHOD(UseScanLine)(THIS_ long UseScanLine) PURE;
00143   STDMETHOD(CanUseScanLine)(THIS_ long *UseScanLine) PURE;
00144   STDMETHOD(UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE;
00145   STDMETHOD(CanUseOverlayStretch)(THIS_ long *UseOverlayStretch) PURE;
00146   STDMETHOD(UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE;
00147   STDMETHOD(WillUseFullScreen)(THIS_ long *UseWhenFullScreen) PURE;
00148 };
00149 
00150 
00151 #undef INTERFACE
00152 #define INTERFACE IFullScreenVideo
00153 
00154 DECLARE_INTERFACE_(IFullScreenVideo, IUnknown)
00155 {
00156   STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
00157   STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00158   STDMETHOD_(ULONG,Release)(THIS) PURE;
00159   STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
00160   STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
00161   STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
00162   STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
00163   STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
00164   STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
00165   STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
00166   STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
00167   STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
00168   STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
00169   STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
00170   STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
00171   STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
00172   STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
00173   STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
00174   STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
00175   STDMETHOD(SetDefault)(THIS) PURE;
00176 };
00177 
00178 #undef INTERFACE
00179 #define INTERFACE IQualProp
00180 
00181 DECLARE_INTERFACE_(IQualProp, IUnknown)
00182 {
00183   STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
00184   STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00185   STDMETHOD_(ULONG,Release)(THIS) PURE;
00186   STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int *pcFrames) PURE;
00187   STDMETHOD(get_FramesDrawn)(THIS_ int *pcFramesDrawn) PURE;
00188   STDMETHOD(get_AvgFrameRate)(THIS_ int *piAvgFrameRate) PURE;
00189   STDMETHOD(get_Jitter)(THIS_ int *iJitter) PURE;
00190   STDMETHOD(get_AvgSyncOffset)(THIS_ int *piAvg) PURE;
00191   STDMETHOD(get_DevSyncOffset)(THIS_ int *piDev) PURE;
00192 };
00193 
00194 
00195 #undef INTERFACE
00196 #define INTERFACE IBaseVideoMixer
00197 
00198 DECLARE_INTERFACE_(IBaseVideoMixer, IUnknown)
00199 {
00200   STDMETHOD(SetLeadPin)(THIS_ int iPin) PURE;
00201   STDMETHOD(GetLeadPin)(THIS_ int *piPin) PURE;
00202   STDMETHOD(GetInputPinCount)(THIS_ int *piPinCount) PURE;
00203   STDMETHOD(IsUsingClock)(THIS_ int *pbValue) PURE;
00204   STDMETHOD(SetUsingClock)(THIS_ int bValue) PURE;
00205   STDMETHOD(GetClockPeriod)(THIS_ int *pbValue) PURE;
00206   STDMETHOD(SetClockPeriod)(THIS_ int bValue) PURE;
00207 };
00208 
00209 #undef INTERFACE
00210 #define INTERFACE IFullScreenVideoEx
00211 
00212 DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo)
00213 {
00214   STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
00215   STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00216   STDMETHOD_(ULONG,Release)(THIS) PURE;
00217   STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
00218   STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
00219   STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
00220   STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
00221   STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
00222   STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
00223   STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
00224   STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
00225   STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
00226   STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
00227   STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
00228   STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
00229   STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
00230   STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
00231   STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
00232   STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
00233   STDMETHOD(SetDefault)(THIS) PURE;
00234   STDMETHOD(SetAcceleratorTable)(THIS_ HWND hwnd,HACCEL hAccel) PURE;
00235   STDMETHOD(GetAcceleratorTable)(THIS_ HWND *phwnd,HACCEL *phAccel) PURE;
00236   STDMETHOD(KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE;
00237   STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long *pKeepAspect) PURE;
00238 };
00239 
00240 
00241 
00242 
00243 typedef enum
00244 {
00245   AM_PROPERTY_FRAMESTEP_STEP            = 0x01,
00246   AM_PROPERTY_FRAMESTEP_CANCEL          = 0x02,
00247   AM_PROPERTY_FRAMESTEP_CANSTEP         = 0x03,
00248   AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04
00249 } AM_PROPERTY_FRAMESTEP;
00250 
00251 typedef struct _AM_FRAMESTEP_STEP
00252 {
00253     DWORD dwFramesToStep;
00254 } AM_FRAMESTEP_STEP;
00255 
00256 #ifdef __cplusplus
00257 }
00258 #endif
00259 #endif
00260 

Generated on Thu May 24 2012 04:31:10 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.