| 1 |
#ifndef _AMVIDEO_H |
| 2 |
#define _AMVIDEO_H |
| 3 |
#if __GNUC__ >=3 |
| 4 |
#pragma GCC system_header |
| 5 |
#endif |
| 6 |
|
| 7 |
#include <ddraw.h> |
| 8 |
#include <strmif.h> |
| 9 |
|
| 10 |
#ifdef __cplusplus |
| 11 |
extern "C" { |
| 12 |
#endif |
| 13 |
|
| 14 |
#define AMDDS_NONE 0x0000 |
| 15 |
#define AMDDS_DCIPS 0x0001 |
| 16 |
#define AMDDS_PS 0x0002 |
| 17 |
#define AMDDS_RGBOVR 0x0004 |
| 18 |
#define AMDDS_YUVOVR 0x0008 |
| 19 |
#define AMDDS_RGBOFF 0x0010 |
| 20 |
#define AMDDS_YUVOFF 0x0020 |
| 21 |
#define AMDDS_RGBFLP 0x0040 |
| 22 |
#define AMDDS_YUVFLP 0x0080 |
| 23 |
#define AMDDS_ ALL 0x00FF |
| 24 |
#define AMDDS_DEFAULT 0x00FF |
| 25 |
#define AMDDS_YUV (AMDDS_YUVOFF|AMDDS_YUVOVR|AMDDS_YUVFLP) |
| 26 |
#define AMDDS_RGB (AMDDS_RGBOFF|AMDDS_RGBOVR|AMDDS_RGBFLP) |
| 27 |
#define AMDDS_PRIMARY (AMDDS_DCIPS|AMDDS_PS) |
| 28 |
#define BIT_MASKS_MATCH(pbmi1,pbmi2) ((pbmi1)->dwBitMasks[0] == (pbmi2)->dwBitMasks[0] && (pbmi1)->dwBitMasks[1] == (pbmi2)->dwBitMasks[1] && (pbmi1)->dwBitMasks[2] == (pbmi2)->dwBitMasks[2]) |
| 29 |
#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= 8) |
| 30 |
#define PALETTE_ENTRIES(pbmi) (1 << (pbmi)->bmiHeader.biBitCount) |
| 31 |
#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,3*sizeof(DWORD))) |
| 32 |
#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,256*sizeof(RGBQUAD))); |
| 33 |
#define SIZE_EGA_PALETTE (16*sizeof(RGBQUAD)) |
| 34 |
#define SIZE_MASKS (3*sizeof(DWORD)) |
| 35 |
#define SIZE_PALETTE (256*sizeof(RGBQUAD)) |
| 36 |
typedef enum { |
| 37 |
AM_PROPERTY_FRAMESTEP_STEP = 1, |
| 38 |
AM_PROPERTY_FRAMESTEP_CANCEL = 2, |
| 39 |
AM_PROPERTY_FRAMESTEP_CANSTEP = 3, |
| 40 |
AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 4 |
| 41 |
} AM_PROPERTY_FRAMESTEP; |
| 42 |
typedef struct tag_TRUECOLORINFO { |
| 43 |
DWORD dwBitMasks[3]; |
| 44 |
RGBQUAD bmiColors[256]; |
| 45 |
} TRUECOLORINFO; |
| 46 |
typedef struct tagVIDEOINFOHEADER { |
| 47 |
RECT rcSource; |
| 48 |
RECT rcTarget; |
| 49 |
DWORD dwBitRate; |
| 50 |
DWORD dwBitErrorRate; |
| 51 |
REFERENCE_TIME AvgTimePerFrame; |
| 52 |
BITMAPINFOHEADER bmiHeader; |
| 53 |
} VIDEOINFOHEADER; |
| 54 |
typedef struct tagVIDEOINFO { |
| 55 |
RECT rcSource, |
| 56 |
RECT rcTarget, |
| 57 |
DWORD dwBitRate, |
| 58 |
DWORD dwBitErrorRate, |
| 59 |
REFERENCE_TIME AvgTimePerFrame; |
| 60 |
BITMAPINFOHEADER bmiHeader; |
| 61 |
union { |
| 62 |
RGBQUAD bmiColors[256]; |
| 63 |
DWORD dwBitMasks[3]; |
| 64 |
TRUECOLORINFO TrueColorInfo; |
| 65 |
}; |
| 66 |
} VIDEOINFO; |
| 67 |
typedef struct tagMPEG1VIDEOINFO { |
| 68 |
VIDEOINFOHEADER hdr; |
| 69 |
DWORD dwStartTimeCode; |
| 70 |
DWORD cbSequenceHeader; |
| 71 |
BYTE bSequenceHeader[1]; |
| 72 |
} MPEG1VIDEOINFO; |
| 73 |
typedef struct tagAnalogVideoInfo { |
| 74 |
RECT rcSource; |
| 75 |
RECT rcTarget; |
| 76 |
DWORD dwActiveWidth; |
| 77 |
DWORD dwActiveHeight; |
| 78 |
REFERENCE_TIME AvgTimePerFrame; |
| 79 |
} ANALOGVIDEOINFO; |
| 80 |
typedef struct _AM_FRAMESTEP_STEP { |
| 81 |
DWORD dwFramesToStep; |
| 82 |
} AM_FRAMESTEP_STEP; |
| 83 |
#define INTERFACE IDirectDrawVideo |
| 84 |
DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown) |
| 85 |
{ |
| 86 |
STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE; |
| 87 |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 88 |
STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 89 |
STDMETHOD(CanUseOverlayStretch)(THIS_ long*) PURE; |
| 90 |
STDMETHOD(CanUseScanLine)(THIS_ long*) PURE; |
| 91 |
STDMETHOD(GetCaps)(THIS_ DDCAPS*) PURE; |
| 92 |
STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW*) PURE; |
| 93 |
STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS*) PURE; |
| 94 |
STDMETHOD(GetFourCCCodes)(THIS_ DWORD*,DWORD*) PURE; |
| 95 |
STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC*) PURE; |
| 96 |
STDMETHOD(GetSurfaceType)(THIS_ DWORD*) PURE; |
| 97 |
STDMETHOD(GetSwitches)(THIS_ DWORD*) PURE; |
| 98 |
STDMETHOD(SetDefault)(THIS) PURE; |
| 99 |
STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW) PURE; |
| 100 |
STDMETHOD(SetSwitches)(THIS_ DWORD) PURE; |
| 101 |
STDMETHOD(UseOverlayStretch)(THIS_ long) PURE; |
| 102 |
STDMETHOD(UseScanLine)(THIS_ long) PURE; |
| 103 |
STDMETHOD(UseWhenFullScreen)(THIS_ long) PURE; |
| 104 |
STDMETHOD(WillUseFullScreen)(THIS_ long*) PURE; |
| 105 |
}; |
| 106 |
#undef INTERFACE |
| 107 |
#define INTERFACE IQualProp |
| 108 |
DECLARE_INTERFACE_(IQualProp, IUnknown) |
| 109 |
{ |
| 110 |
STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE; |
| 111 |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 112 |
STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 113 |
STDMETHOD(get_AvgFrameRate)(THIS_ int*) PURE; |
| 114 |
STDMETHOD(get_AvgSyncOffset)(THIS_ int*) PURE; |
| 115 |
STDMETHOD(get_DevSyncOffset)(THIS_ int*) PURE; |
| 116 |
STDMETHOD(get_FramesDrawn)(THIS_ int*) PURE; |
| 117 |
STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int*) PURE; |
| 118 |
STDMETHOD(get_Jitter)(THIS_ int*) PURE; |
| 119 |
}; |
| 120 |
#undef INTERFACE |
| 121 |
#define INTERFACE IFullScreenVideo |
| 122 |
DECLARE_INTERFACE_(IFullScreenVideo, IUnknown) |
| 123 |
{ |
| 124 |
STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE; |
| 125 |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 126 |
STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 127 |
STDMETHOD(CountModes)(THIS_ long*) PURE; |
| 128 |
STDMETHOD(GetCaption)(THIS_ BSTR*) PURE; |
| 129 |
STDMETHOD(GetClipFactor)(THIS_ long*) PURE; |
| 130 |
STDMETHOD(GetCurrentMode)(THIS_ long*) PURE; |
| 131 |
STDMETHOD(GetMessageDrain)(THIS_ HWND*) PURE; |
| 132 |
STDMETHOD(GetModeInfo)(THIS_ long,long*,long*,long*) PURE; |
| 133 |
STDMETHOD(GetMonitor)(THIS_ long*) PURE; |
| 134 |
STDMETHOD(HideOnDeactivate)(THIS_ long) PURE; |
| 135 |
STDMETHOD(IsHideOnDeactivate)(THIS) PURE; |
| 136 |
STDMETHOD(IsModeAvailable)(THIS_ long) PURE; |
| 137 |
STDMETHOD(IsModeEnabled)(THIS_ long) PURE; |
| 138 |
STDMETHOD(SetCaption)(THIS_ BSTR) PURE; |
| 139 |
STDMETHOD(SetClipFactor)(THIS_ long) PURE; |
| 140 |
STDMETHOD(SetDefault)(THIS) PURE; |
| 141 |
STDMETHOD(SetEnabled)(THIS_ long,long) PURE; |
| 142 |
STDMETHOD(SetMessageDrain)(THIS_ HWND) PURE; |
| 143 |
STDMETHOD(SetMonitor)(THIS_ long) PURE; |
| 144 |
}; |
| 145 |
#undef INTERFACE |
| 146 |
#define INTERFACE IFullScreenVideoEx |
| 147 |
DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo) |
| 148 |
{ |
| 149 |
STDMETHOD(QueryInterface)(THIS_ REFIID, LPVOID*) PURE; |
| 150 |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 151 |
STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 152 |
STDMETHOD(CountModes)(THIS_ long*) PURE; |
| 153 |
STDMETHOD(GetAcceleratorTable)(THIS_ HWND*,HACCEL*) PURE; |
| 154 |
STDMETHOD(GetCaption)(THIS_ BSTR*) PURE; |
| 155 |
STDMETHOD(GetClipFactor)(THIS_ long*) PURE; |
| 156 |
STDMETHOD(GetCurrentMode)(THIS_ long*) PURE; |
| 157 |
STDMETHOD(GetMessageDrain)(THIS_ HWND*) PURE; |
| 158 |
STDMETHOD(GetModeInfo)(THIS_ long,long*,long*,long*) PURE; |
| 159 |
STDMETHOD(GetMonitor)(THIS_ long*) PURE; |
| 160 |
STDMETHOD(HideOnDeactivate)(THIS_ long) PURE; |
| 161 |
STDMETHOD(IsHideOnDeactivate)(THIS) PURE; |
| 162 |
STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long*) PURE; |
| 163 |
STDMETHOD(IsModeAvailable)(THIS_ long) PURE; |
| 164 |
STDMETHOD(IsModeEnabled)(THIS_ long) PURE; |
| 165 |
STDMETHOD(KeepPixelAspectRatio)(THIS_ long) PURE; |
| 166 |
STDMETHOD(SetAcceleratorTable)(THIS_ HWND,HACCEL) PURE; |
| 167 |
STDMETHOD(SetCaption)(THIS_ BSTR) PURE; |
| 168 |
STDMETHOD(SetClipFactor)(THIS_ long) PURE; |
| 169 |
STDMETHOD(SetDefault)(THIS) PURE; |
| 170 |
STDMETHOD(SetEnabled)(THIS_ long,long) PURE; |
| 171 |
STDMETHOD(SetMessageDrain)(THIS_ HWND) PURE; |
| 172 |
STDMETHOD(SetMonitor)(THIS_ long) PURE; |
| 173 |
}; |
| 174 |
#undef INTERFACE |
| 175 |
|
| 176 |
#ifdef __cplusplus |
| 177 |
} |
| 178 |
#endif |
| 179 |
#endif |