Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenamvideo.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
1.7.6.1
|