691 lines
28 KiB
C
691 lines
28 KiB
C
|
|
/*****************************************************************************/
|
|
/* Let's bring the videoStream functions back from the dead, and rename them */
|
|
/* in a way consistent with the waveIn and waveOut APIs. */
|
|
/* This will allow us to create a VideoPacket class VERY similar to the */
|
|
/* AudioPacket class. And we will be talking directly to the capture driver */
|
|
/* which is much more straightforward than the stuff that is available today.*/
|
|
/*****************************************************************************/
|
|
|
|
#ifndef _INC_VIDEOINOUT
|
|
#define _INC_VIDEOINOUT
|
|
|
|
#pragma pack(1) /* Assume byte packing throughout */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" { /* Assume C declarations for C++ */
|
|
#endif /* __cplusplus */
|
|
|
|
/****************************************************************************
|
|
videoIn and videoOut Constants
|
|
****************************************************************************/
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const 10 | MAXVIDEODRIVERS | Maximum number of video input capture drivers.
|
|
*
|
|
* @const WAVE_MAPPER | VIDEO_MAPPER | Arbitrary video driver.
|
|
*
|
|
* @const WAVE_FORMAT_PCM | VIDEO_FORMAT_DEFAULT | Default video format.
|
|
*
|
|
* @const 16 | NUM_4BIT_ENTRIES | Number of entries in a 4bit palette.
|
|
*
|
|
* @const 256 | NUM_8BIT_ENTRIES | Number of entries in an 8bit palette.
|
|
*
|
|
****************************************************************************/
|
|
#define MAXVIDEODRIVERS 10
|
|
#define VIDEO_MAPPER WAVE_MAPPER
|
|
#define VIDEO_FORMAT_DEFAULT WAVE_FORMAT_PCM
|
|
#define NUM_4BIT_ENTRIES 16
|
|
#define NUM_8BIT_ENTRIES 256
|
|
|
|
/****************************************************************************
|
|
videoIn and videoOut Macros
|
|
****************************************************************************/
|
|
// WIDTHBYTES takes number of bits in a scan line and rounds up to nearest word.
|
|
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)
|
|
|
|
/****************************************************************************
|
|
videoIn and videoOut Data Types
|
|
****************************************************************************/
|
|
DECLARE_HANDLE(HVIDEOIN); // generic handle
|
|
typedef HVIDEOIN *PHVIDEOIN;
|
|
DECLARE_HANDLE(HVIDEOOUT); // generic handle
|
|
typedef HVIDEOOUT *PHVIDEOOUT;
|
|
|
|
/****************************************************************************
|
|
Callback Capture Messages
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPMSG
|
|
*
|
|
* @msg VIM_OPEN | This message is sent to a video capture input callback function when
|
|
* a video capture input device is opened.
|
|
*
|
|
* @parm DWORD | dwParam1 | Currently unused.
|
|
*
|
|
* @parm DWORD | dwParam2 | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m MM_VIM_OPEN>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPMSG
|
|
*
|
|
* @msg MM_VIM_OPEN | This message is sent to a window when a video capture input
|
|
* device is opened.
|
|
*
|
|
* @parm WORD | wParam | Specifies a handle to the video capture input device
|
|
* that was opened.
|
|
*
|
|
* @parm LONG | lParam | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m VIM_OPEN>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPMSG
|
|
*
|
|
* @msg VIM_CLOSE | This message is sent to a video capture input callback function when
|
|
* a video capture input device is closed. The device handle is no longer
|
|
* valid once this message has been sent.
|
|
*
|
|
* @parm DWORD | dwParam1 | Currently unused.
|
|
*
|
|
* @parm DWORD | dwParam2 | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m MM_VIM_CLOSE>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPMSG
|
|
*
|
|
* @msg MM_VIM_CLOSE | This message is sent to a window when a video capture input
|
|
* device is closed. The device handle is no longer valid once this message
|
|
* has been sent.
|
|
*
|
|
* @parm WORD | wParam | Specifies a handle to the video capture input device
|
|
* that was closed.
|
|
*
|
|
* @parm LONG | lParam | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m VIM_CLOSE>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPMSG
|
|
*
|
|
* @msg VIM_DATA | This message is sent to a video capture input callback function when
|
|
* video data is present in the input buffer and the buffer is being
|
|
* returned to the application. The message can be sent either when the
|
|
* buffer is full, or after the <f videoInReset> function is called.
|
|
*
|
|
* @parm DWORD | dwParam1 | Specifies a far pointer to a <t VIDEOINOUTHDR> structure
|
|
* identifying the buffer containing the video data.
|
|
*
|
|
* @parm DWORD | dwParam2 | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @comm The returned buffer may not be full. Use the
|
|
* <e VIDEOINOUTHDR.dwBytesUsed>
|
|
* field of the <t VIDEOINOUTHDR> structure specified by <p dwParam1> to
|
|
* determine the number of valid bytes into the returned buffer.
|
|
*
|
|
* @xref <m MM_VIM_DATA>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPMSG
|
|
*
|
|
* @msg MM_VIM_DATA | This message is sent to a window when video data is
|
|
* present in the input buffer and the buffer is being returned to the
|
|
* application. The message can be sent either when the buffer is full, or
|
|
* after the <f videoInReset> function is called.
|
|
*
|
|
* @parm WORD | wParam | Specifies a handle to the video capture input device
|
|
* that received the video data.
|
|
*
|
|
* @parm LONG | lParam | Specifies a far pointer to a <t VIDEOINOUTHDR> structure
|
|
* identifying the buffer containing the video data.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @comm The returned buffer may not be full. Use the
|
|
* <e VIDEOINOUTHDR.dwBytesUsed>
|
|
* field of the <t VIDEOINOUTHDR> structure specified by <p lParam> to
|
|
* determine the number of valid bytes into the returned buffer.
|
|
*
|
|
* @xref <m VIM_DATA>
|
|
****************************************************************************/
|
|
|
|
#define MM_VIM_OPEN MM_WIM_OPEN
|
|
#define MM_VIM_CLOSE MM_WIM_CLOSE
|
|
#define MM_VIM_DATA MM_WIM_DATA
|
|
#define VIM_OPEN MM_VIM_OPEN
|
|
#define VIM_CLOSE MM_VIM_CLOSE
|
|
#define VIM_DATA MM_VIM_DATA
|
|
|
|
/****************************************************************************
|
|
Callback Playback Messages
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYMSG
|
|
*
|
|
* @msg VOM_OPEN | This message is sent to a video output callback function when
|
|
* a video output device is opened.
|
|
*
|
|
* @parm DWORD | dwParam1 | Currently unused.
|
|
*
|
|
* @parm DWORD | dwParam2 | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m MM_VOM_OPEN>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYMSG
|
|
*
|
|
* @msg MM_VOM_OPEN | This message is sent to a window when a video output
|
|
* device is opened.
|
|
*
|
|
* @parm WORD | wParam | Specifies a handle to the video output device
|
|
* that was opened.
|
|
*
|
|
* @parm LONG | lParam | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m VOM_OPEN>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYMSG
|
|
*
|
|
* @msg VOM_CLOSE | This message is sent to a video output callback function when
|
|
* a video output device is closed. The device handle is no longer
|
|
* valid once this message has been sent.
|
|
*
|
|
* @parm DWORD | dwParam1 | Currently unused.
|
|
*
|
|
* @parm DWORD | dwParam2 | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m MM_VOM_CLOSE>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYMSG
|
|
*
|
|
* @msg MM_VOM_CLOSE | This message is sent to a window when a video output
|
|
* device is closed. The device handle is no longer valid once this message
|
|
* has been sent.
|
|
*
|
|
* @parm WORD | wParam | Specifies a handle to the video output device
|
|
* that was closed.
|
|
*
|
|
* @parm LONG | lParam | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m VOM_CLOSE>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYMSG
|
|
*
|
|
* @msg VOM_DONE | This message is sent to a video output callback function when
|
|
* the specified output buffer is being returned to
|
|
* the application. Buffers are returned to the application when
|
|
* they have been played back, or as the result of a call to <f videoOutReset>.
|
|
*
|
|
* @parm DWORD | dwParam1 | Specifies a far pointer to a <t VIDEOINOUTHDR> structure
|
|
* identifying the buffer.
|
|
*
|
|
* @parm DWORD | dwParam2 | Currently unused.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m MM_VOM_DONE>
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYMSG
|
|
*
|
|
* @msg MM_VOM_DONE | This message is sent to a window when
|
|
* the specified output buffer is being returned to
|
|
* the application. Buffers are returned to the application when
|
|
* they have been played, or as the result of a call to <f videoOutReset>.
|
|
*
|
|
* @parm WORD | wParam | Specifies a handle to the video output device
|
|
* that played the buffer.
|
|
*
|
|
* @parm LONG | lParam | Specifies a far pointer to a <t VIDEOINOUTHDR> structure
|
|
* identifying the buffer.
|
|
*
|
|
* @rdesc None
|
|
*
|
|
* @xref <m VOM_DONE>
|
|
****************************************************************************/
|
|
|
|
#define MM_VOM_OPEN MM_WOM_OPEN
|
|
#define MM_VOM_CLOSE MM_WOM_CLOSE
|
|
#define MM_VOM_DONE MM_WOM_DONE
|
|
#define VOM_OPEN MM_VOM_OPEN
|
|
#define VOM_CLOSE MM_VOM_CLOSE
|
|
#define VOM_DONE MM_VOM_DONE
|
|
|
|
/****************************************************************************
|
|
videoIn and videoOut Structures
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPSTRUCTENUM
|
|
*
|
|
* @struct VIDEOFORMATEX | The <t VIDEOFORMATEX> structure defines the format used to
|
|
* capture video data and settings for the capture device.
|
|
*
|
|
* @field DWORD | dwFormatTag | Specifies the video format type (FOURCC code).
|
|
*
|
|
* @field DWORD | nSamplesPerSec | Specifies the sample rate, in frames per second.
|
|
*
|
|
* @field DWORD | nAvgBytesPerSec | Specifies the average data-transfer rate, in bytes per second.
|
|
*
|
|
* @field DWORD | nMinBytesPerSec | Specifies the minimum data-transfer rate, in bytes per second.
|
|
*
|
|
* @field DWORD | nMaxBytesPerSec | Specifies the maximum data-transfer rate, in bytes per second.
|
|
*
|
|
* @field DWORD | nBlockAlign | Specifies the block alignment, in bytes.
|
|
*
|
|
* @field DWORD | wBitsPerSample | Specifies the bits per sample for the wFormatTag format type.
|
|
*
|
|
* @field DWORD | dwRequestMicroSecPerFrame | Specifies the requested frame rate, in microseconds.
|
|
*
|
|
* @field DWORD | dwPercentDropForError | Specifies the maximum allowable percentage of dropped frames during capture.
|
|
*
|
|
* @field DWORD | dwNumVideoRequested | This specifies the maximum number of video buffers to allocate.
|
|
*
|
|
* @field DWORD | dwSupportTSTradeOff | Specifies the usage of temporal/spatial trade off.
|
|
*
|
|
* @field BOOL | bLive | Specifies if the preview is to be allowed.
|
|
*
|
|
* @field HWND | hWndParent | Specifies handle of the parent window.
|
|
*
|
|
* @field DWORD | dwFormatSize | Specifies the size of the actual video format.
|
|
*
|
|
* @field DWORD | bih.biSize | Specifies the number of bytes required by the spatial information.
|
|
*
|
|
* @field LONG | bih.biWidth | Specifies the width of the bitmap, in pixels.
|
|
*
|
|
* @field LONG | bih.biHeight | Specifies the height of the bitmap, in pixels.
|
|
*
|
|
* @field WORD | bih.biPlanes | Specifies the number of planes for the target device.
|
|
*
|
|
* @field WORD | bih.biBitCount | Specifies the number of bits per pixel.
|
|
*
|
|
* @field DWORD | bih.biCompression | Specifies the type of compression.
|
|
*
|
|
* @field DWORD | bih.biSizeImage | Specifies the size, in bytes, of the image.
|
|
*
|
|
* @field LONG | bih.biXPelsPerMeter | Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap.
|
|
*
|
|
* @field LONG | bih.biYPelsPerMeter | Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap.
|
|
*
|
|
* @field DWORD | bih.biClrUsed | Specifies the number of color indices in the color table that are actually used by the bitmap.
|
|
*
|
|
* @field DWORD | bih.biClrImportant | Specifies the number of color indices that are considered important for displaying the bitmap.
|
|
*
|
|
* @field DWORD | bmiColors[256] | Specifies an array of 256 RGBQUADs.
|
|
*
|
|
* @type PVIDEOFORMATEX | Pointer to a <t VIDEOFORMATEX> structure.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#define BMIH_SLOP 256+32
|
|
#define BMIH_SLOP_BYTES (256+32)*4
|
|
|
|
typedef struct videoformatex_tag {
|
|
// Wave format compatibility fields
|
|
DWORD dwFormatTag;
|
|
DWORD nSamplesPerSec;
|
|
DWORD nAvgBytesPerSec;
|
|
DWORD nMinBytesPerSec;
|
|
DWORD nMaxBytesPerSec;
|
|
DWORD nBlockAlign;
|
|
DWORD wBitsPerSample;
|
|
// Temporal fields
|
|
DWORD dwRequestMicroSecPerFrame;
|
|
DWORD dwPercentDropForError;
|
|
DWORD dwNumVideoRequested;
|
|
DWORD dwSupportTSTradeOff;
|
|
BOOL bLive;
|
|
// Spatial fields
|
|
DWORD dwFormatSize;
|
|
BITMAPINFOHEADER bih;
|
|
DWORD bihSLOP[BMIH_SLOP]; // bmiColors = &bih + bih.biSize
|
|
// RGBQUAD bmiColors[256];
|
|
} VIDEOFORMATEX, *PVIDEOFORMATEX;
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CAPSTRUCTENUM
|
|
*
|
|
* @struct VIDEOINCAPS | The <t VIDEOINCAPS> structure describes the
|
|
* capabilities of a video capture input device.
|
|
*
|
|
* @field TCHAR | szDeviceName[80] | Specifies the device name.
|
|
*
|
|
* @field TCHAR | szDeviceVersion[80] | Specifies the device version.
|
|
*
|
|
* @field DWORD | dwImageSize | Specifies which standard image sizes are supported.
|
|
* The supported sizes are specified with a logical OR of the following
|
|
* flags:
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_40_30 | 40x30 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_80_60 | 80x30 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_120_90 | 120x90 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_160_120 | 160x120 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_200_150 | 200x150 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_240_180 | 240x180 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_280_210 | 280x210 pixels
|
|
* @flag VIDEO_FORMAT_IMAGE_SIZE_320_240 | 320x240 pixels
|
|
*
|
|
* @field DWORD | dwNumColors | Specifies what number of colors are supported.
|
|
* The supported number of colors are specified with a logical OR of the following
|
|
* flags:
|
|
* @flag VIDEO_FORMAT_NUM_COLORS_16 | 16 colors
|
|
* @flag VIDEO_FORMAT_NUM_COLORS_256 | 256 colors
|
|
* @flag VIDEO_FORMAT_NUM_COLORS_65536 | 65536 colors
|
|
* @flag VIDEO_FORMAT_NUM_COLORS_16777216 | 16777216 colors
|
|
*
|
|
* @field DWORD | dwStreamingMode | Specifies the preferred streaming mode.
|
|
* The supported mode is either one of the following
|
|
* flags:
|
|
* @flag STREAMING_PREFER_STREAMING | Real streaming
|
|
* @flag STREAMING_PREFER_FRAME_GRAB | Single frame grabbing
|
|
*
|
|
* @field DWORD | dwDialogs | Specifies the dialogs that we shoud enable\disable.
|
|
* The supported dialogs are specified with a logical OR of the following
|
|
* flags:
|
|
* @flag FORMAT_DLG_ON | Enable video format dialog
|
|
* @flag FORMAT_DLG_OFF | Disable video format dialog
|
|
* @flag SOURCE_DLG_ON | Enable source dialog
|
|
* @flag SOURCE_DLG_OFF | Disable source dialog
|
|
*
|
|
* @field RGBQUAD | bmi4bitColors[16] | Specifies a 16 color palette.
|
|
*
|
|
* @field RGBQUAD | bmi8bitColors[256] | Specifies a 256 color palette.
|
|
*
|
|
* @type PVIDEOINCAPS | Pointer to a <t VIDEOINCAPS> structure.
|
|
*
|
|
* @devnote We could allocate the memory space required by the palettes dynamically.
|
|
* But since the VIDEOINCAPS structure are only created on the stack of a couple of
|
|
* VCM functions, why bother.
|
|
*
|
|
* @xref <f videoInGetDevCaps>
|
|
****************************************************************************/
|
|
typedef struct videoincaps_tag {
|
|
TCHAR szDeviceName[80];
|
|
TCHAR szDeviceVersion[80];
|
|
DWORD dwImageSize;
|
|
DWORD dwNumColors;
|
|
DWORD dwStreamingMode;
|
|
DWORD dwDialogs;
|
|
DWORD dwFlags;
|
|
RGBQUAD bmi4bitColors[NUM_4BIT_ENTRIES];
|
|
RGBQUAD bmi8bitColors[NUM_8BIT_ENTRIES];
|
|
} VIDEOINCAPS, *PVIDEOINCAPS;
|
|
|
|
#define VICF_4BIT_TABLE 1 // set in dwFlags, if bmi4bitColors is valid
|
|
#define VICF_8BIT_TABLE 2 // set in dwFlags, if bmi8bitColors is valid
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL PLAYSTRUCTENUM
|
|
*
|
|
* @struct VIDEOOUTCAPS | The <t VIDEOOUTCAPS> structure describes the
|
|
* capabilities of a video output device.
|
|
*
|
|
* @field DWORD | dwFormats | Specifies which standard formats are supported.
|
|
* The supported formats are specified with a logical OR of the following
|
|
* flags:
|
|
* @flag VIDEO_FORMAT_04 | 4-bit palettized
|
|
* @flag VIDEO_FORMAT_08 | 8-bit palettized
|
|
* @flag VIDEO_FORMAT_16 | 16-bit
|
|
* @flag VIDEO_FORMAT_24 | 24-bit
|
|
* @flag VIDEO_FORMAT_SP | Driver supplies palettes
|
|
*
|
|
* @type PVIDEOOUTCAPS | Pointer to a <t VIDEOOUTCAPS> structure.
|
|
*
|
|
* @xref <f videoOutGetDevCaps>
|
|
****************************************************************************/
|
|
typedef struct videooutcaps_tag {
|
|
DWORD dwFormats;
|
|
} VIDEOOUTCAPS, *PVIDEOOUTCAPS;
|
|
|
|
// dwFlags field of VIDEOINOUTHDR
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const 0x00000001 | VHDR_DONE | Data is done.
|
|
*
|
|
* @const 0x00000002 | VHDR_PREPARED | Data is prepared.
|
|
*
|
|
* @const 0x00000004 | VHDR_INQUEUE | Data is in queue.
|
|
*
|
|
****************************************************************************/
|
|
#define VHDR_DONE 0x00000001 /* Done bit */
|
|
#define VHDR_PREPARED 0x00000002 /* Set if this header has been prepared */
|
|
#define VHDR_INQUEUE 0x00000004 /* Reserved for driver */
|
|
#define VHDR_KEYFRAME 0x00000008 /* Key Frame */
|
|
#define VHDR_VALID 0x0000000F /* valid flags */ /* ;Internal */
|
|
|
|
// dwImageSize of VIDEOINCAPS
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const 27 | VIDEO_FORMAT_NUM_IMAGE_SIZE | Number of video input sizes used by the device.
|
|
*
|
|
* @const 0x00000001 | VIDEO_FORMAT_IMAGE_SIZE_40_30 | Video input device uses 40x30 pixel frames.
|
|
*
|
|
* @const 0x00000002 | VIDEO_FORMAT_IMAGE_SIZE_64_48 | Video input device uses 64x48 pixel frames.
|
|
*
|
|
* @const 0x00000004 | VIDEO_FORMAT_IMAGE_SIZE_80_60 | Video input device uses 80x60 pixel frames.
|
|
*
|
|
* @const 0x00000008 | VIDEO_FORMAT_IMAGE_SIZE_96_64 | Video input device uses 96x64 pixel frames.
|
|
*
|
|
* @const 0x00000010 | VIDEO_FORMAT_IMAGE_SIZE_112_80 | Video input device uses 112x80 pixel frames.
|
|
*
|
|
* @const 0x00000020 | VIDEO_FORMAT_IMAGE_SIZE_120_90 | Video input device uses 120x90 pixel frames.
|
|
*
|
|
* @const 0x00000040 | VIDEO_FORMAT_IMAGE_SIZE_128_96 | Video input device uses 128x96 (SQCIF) pixel frames.
|
|
*
|
|
* @const 0x00000080 | VIDEO_FORMAT_IMAGE_SIZE_144_112 | Video input device uses 144x112 pixel frames.
|
|
*
|
|
* @const 0x00000100 | VIDEO_FORMAT_IMAGE_SIZE_160_120 | Video input device uses 160x120 pixel frames.
|
|
*
|
|
* @const 0x00000200 | VIDEO_FORMAT_IMAGE_SIZE_160_128 | Video input device uses 160x128 pixel frames.
|
|
*
|
|
* @const 0x00000400 | VIDEO_FORMAT_IMAGE_SIZE_176_144 | Video input device uses 176x144 (QCIF) pixel frames.
|
|
*
|
|
* @const 0x00000800 | VIDEO_FORMAT_IMAGE_SIZE_192_160 | Video input device uses 192x160 pixel frames.
|
|
*
|
|
* @const 0x00001000 | VIDEO_FORMAT_IMAGE_SIZE_200_150 | Video input device uses 200x150 pixel frames.
|
|
*
|
|
* @const 0x00002000 | VIDEO_FORMAT_IMAGE_SIZE_208_176 | Video input device uses 208x176 pixel frames.
|
|
*
|
|
* @const 0x00004000 | VIDEO_FORMAT_IMAGE_SIZE_224_192 | Video input device uses 224x192 pixel frames.
|
|
*
|
|
* @const 0x00008000 | VIDEO_FORMAT_IMAGE_SIZE_240_180 | Video input device uses 240x180 pixel frames.
|
|
*
|
|
* @const 0x00010000 | VIDEO_FORMAT_IMAGE_SIZE_240_208 | Video input device uses 240x208 pixel frames.
|
|
*
|
|
* @const 0x00020000 | VIDEO_FORMAT_IMAGE_SIZE_256_224 | Video input device uses 256x224 pixel frames.
|
|
*
|
|
* @const 0x00040000 | VIDEO_FORMAT_IMAGE_SIZE_272_240 | Video input device uses 272x240 pixel frames.
|
|
*
|
|
* @const 0x00080000 | VIDEO_FORMAT_IMAGE_SIZE_280_210 | Video input device uses 280x210 pixel frames.
|
|
*
|
|
* @const 0x00100000 | VIDEO_FORMAT_IMAGE_SIZE_288_256 | Video input device uses 288x256 pixel frames.
|
|
*
|
|
* @const 0x00200000 | VIDEO_FORMAT_IMAGE_SIZE_304_272 | Video input device uses 304x272 pixel frames.
|
|
*
|
|
* @const 0x00400000 | VIDEO_FORMAT_IMAGE_SIZE_320_240 | Video input device uses 320x240 pixel frames.
|
|
*
|
|
* @const 0x00800000 | VIDEO_FORMAT_IMAGE_SIZE_320_288 | Video input device uses 320x288 pixel frames.
|
|
*
|
|
* @const 0x01000000 | VIDEO_FORMAT_IMAGE_SIZE_336_288 | Video input device uses 336x288 pixel frames.
|
|
*
|
|
* @const 0x02000000 | VIDEO_FORMAT_IMAGE_SIZE_352_288 | Video input device uses 352x288 (CIF) pixel frames.
|
|
*
|
|
* @const 0x04000000 | VIDEO_FORMAT_IMAGE_SIZE_640_480 | Video input device uses 640x480 pixel frames.
|
|
*
|
|
****************************************************************************/
|
|
#define VIDEO_FORMAT_NUM_IMAGE_SIZE 27
|
|
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_40_30 0x00000001
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_64_48 0x00000002
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_80_60 0x00000004
|
|
#if !defined(_ALPHA_) && defined(USE_BILINEAR_MSH26X)
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_80_64 0x00000008
|
|
#else
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_96_64 0x00000008
|
|
#endif
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_112_80 0x00000010
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_120_90 0x00000020
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_128_96 0x00000040
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_144_112 0x00000080
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_160_120 0x00000100
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_160_128 0x00000200
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_176_144 0x00000400
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_192_160 0x00000800
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_200_150 0x00001000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_208_176 0x00002000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_224_192 0x00004000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_240_180 0x00008000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_240_208 0x00010000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_256_224 0x00020000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_272_240 0x00040000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_280_210 0x00080000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_288_256 0x00100000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_304_272 0x00200000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_320_240 0x00400000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_320_288 0x00800000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_336_288 0x01000000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_352_288 0x02000000
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_640_480 0x04000000
|
|
|
|
#define VIDEO_FORMAT_IMAGE_SIZE_USE_DEFAULT 0x80000000
|
|
|
|
// dwNumColors of VIDEOINCAPS
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const 0x00000001 | VIDEO_FORMAT_NUM_COLORS_16 | Video input device uses 16 colors.
|
|
*
|
|
* @const 0x00000002 | VIDEO_FORMAT_NUM_COLORS_256 | Video input device uses 256 colors.
|
|
*
|
|
* @const 0x00000004 | VIDEO_FORMAT_NUM_COLORS_65536 | Video input device uses 65536 colors.
|
|
*
|
|
* @const 0x00000008 | VIDEO_FORMAT_NUM_COLORS_16777216 | Video input device uses 16777216 colors.
|
|
*
|
|
* @const 0x00000010 | VIDEO_FORMAT_NUM_COLORS_YVU9 | Video input device uses the YVU9 compressed format.
|
|
*
|
|
* @const 0x00000020 | VIDEO_FORMAT_NUM_COLORS_I420 | Video input device uses the I420 compressed format.
|
|
*
|
|
* @const 0x00000040 | VIDEO_FORMAT_NUM_COLORS_IYUV | Video input device uses the IYUV compressed format.
|
|
*
|
|
****************************************************************************/
|
|
#define VIDEO_FORMAT_NUM_COLORS_16 0x00000001
|
|
#define VIDEO_FORMAT_NUM_COLORS_256 0x00000002
|
|
#define VIDEO_FORMAT_NUM_COLORS_65536 0x00000004
|
|
#define VIDEO_FORMAT_NUM_COLORS_16777216 0x00000008
|
|
#define VIDEO_FORMAT_NUM_COLORS_YVU9 0x00000010
|
|
#define VIDEO_FORMAT_NUM_COLORS_I420 0x00000020
|
|
#define VIDEO_FORMAT_NUM_COLORS_IYUV 0x00000040
|
|
#define VIDEO_FORMAT_NUM_COLORS_YUY2 0x00000080
|
|
#define VIDEO_FORMAT_NUM_COLORS_UYVY 0x00000100
|
|
|
|
// dwDialogs of VIDEOINCAPS
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const 0x00000000 | FORMAT_DLG_OFF | Disable video format dialog.
|
|
*
|
|
* @const 0x00000000 | SOURCE_DLG_OFF | Disable source dialog.
|
|
*
|
|
* @const 0x00000001 | FORMAT_DLG_ON | Enable video format dialog.
|
|
*
|
|
* @const 0x00000002 | SOURCE_DLG_ON | Enable source dialog.
|
|
*
|
|
****************************************************************************/
|
|
#define FORMAT_DLG_OFF 0x00000000
|
|
#define SOURCE_DLG_OFF 0x00000000
|
|
#define FORMAT_DLG_ON 0x00000001
|
|
#define SOURCE_DLG_ON 0x00000002
|
|
|
|
// dwFormats of VIDEOOUTCAPS
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const 0x00000001 | VIDEO_FORMAT_04 | Video output device supports 4bit DIBs
|
|
*
|
|
* @const 0x00000002 | VIDEO_FORMAT_08 | Video output device supports 8bit DIBs
|
|
*
|
|
* @const 0x00000004 | VIDEO_FORMAT_16 | Video output device supports 16bit DIBs
|
|
*
|
|
* @const 0x00000008 | VIDEO_FORMAT_24 | Video output device supports 24bit DIBs
|
|
*
|
|
* @const 0x00000008 | VIDEO_FORMAT_32 | Video output device supports 32bit DIBs
|
|
*
|
|
****************************************************************************/
|
|
#define VIDEO_FORMAT_04 0x00000001
|
|
#define VIDEO_FORMAT_08 0x00000002
|
|
#define VIDEO_FORMAT_16 0x00000004
|
|
#define VIDEO_FORMAT_24 0x00000008
|
|
#define VIDEO_FORMAT_32 0x00000010
|
|
|
|
/****************************************************************************
|
|
Error Return Values
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* @doc EXTERNAL CONSTANTS
|
|
*
|
|
* @const WAVERR_BASE | VIDEOERR_BASE | Base for video errors.
|
|
*
|
|
* @const (VIDEOERR_BASE + 0) | VIDEOERR_BADFORMAT | Unsupported video format.
|
|
*
|
|
* @const (VIDEOERR_BASE + 1) | VIDEOERR_INQUEUE | Header is already or still queued.
|
|
*
|
|
* @const (VIDEOERR_BASE + 2) | VIDEOERR_UNPREPARED | Header is not prepared.
|
|
*
|
|
* @const (VIDEOERR_BASE + 3) | VIDEOERR_NONSPECIFIC | Non specific error.
|
|
*
|
|
* @const (VIDEOERR_BASE + 3) | VIDEOERR_LASTERROR | Last video error in range.
|
|
*
|
|
****************************************************************************/
|
|
#define VIDEOERR_BASE WAVERR_BASE /* base for video errors */
|
|
#define VIDEOERR_BADFORMAT (VIDEOERR_BASE + 0) /* unsupported video format */
|
|
#define VIDEOERR_INQUEUE (VIDEOERR_BASE + 1) /* header is already queued */
|
|
#define VIDEOERR_UNPREPARED (VIDEOERR_BASE + 2) /* header not prepared */
|
|
#define VIDEOERR_NONSPECIFIC (VIDEOERR_BASE + 3) /* non specific */
|
|
#define VIDEOERR_LASTERROR (VIDEOERR_BASE + 3) /* last error in range */
|
|
|
|
#ifdef __cplusplus
|
|
} /* End of extern "C" { */
|
|
#endif /* __cplusplus */
|
|
|
|
#pragma pack() /* Revert to default packing */
|
|
|
|
#endif /* _INC_VIDEOINOUT */
|