Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

165 lines
5.0 KiB

/*
*
* 32-bit Video Capture driver
*
* hardware-specific data structures for Video Spigot.
*
*
* This header describes the structures that are shared between
* the hardware-specific user-mode code and the hardware-specific
* kernel mode code.
*
* The vckernel library does not define the format of the
* config structures passed to the config functions beyond the fact that
* the first ULONG contains the length of the entire structure. Note that
* any pointers within this struct will need special handling.
*/
#ifndef _SPIGOT_H_
#define _SPIGOT_H_
/* possible video standards */
typedef enum _VIDSTD {
NTSC = 0,
PAL,
SECAM,
MAXVIDEOSTD
} VIDSTD, * PVIDSTD;
/* possible capture formats */
typedef enum _CAPTUREFORMAT {
FmtInvalid = 0, // default fmt is 'not set yet'
FmtPal8, // 8-bit palettised
FmtRGB555, // 16-bit rgb
FmtRGB24, // 24-bit rgb
FmtYUV422 // unpacked yuv 4:2:2
} CAPTUREFORMAT;
#ifndef FOURCC_YUV
#define FOURCC_YUV mmioFOURCC('S', '4', '2', '2')
#endif
/* possible source types */
/* Note: the user level driver will pass SourceAuto to the kernel driver.
* The kernel driver will NOT pass SourceAuto to the board, but will try
* each potential source in turn.
* NB: do NOT change the order of the enum. The user level configuration
* dialog relies on this order.
*/
typedef enum _VIDEOSOURCE {
Composite = 0,
SVideo,
SourceAuto // auto-detect signal
} VIDEOSOURCE, * PVIDEOSOURCE;
/* this structure is passed to the ConfigFormat function. it
* defines the size and format of the destination bitmap.
*
* if the format is palettised (Pal8), a translation table is
* passed in pXlate. This should translate from RGB555 to the chosen palette.
*
* note that VC_AccessData will need to be called to access this table safely
* from kernel mode.
*/
typedef struct _CONFIG_FORMAT {
ULONG ulSize;
CAPTUREFORMAT Format;
ULONG ulWidth;
ULONG ulHeight;
PVOID pXlate;
ULONG ulSizeXlate;
}CONFIG_FORMAT, *PCONFIG_FORMAT;
/* size of xlate table should be 32k bytes */
#define PAL_TO_RGB555_SIZE (32 * 1024)
/*
* this structure is passed to the ConfigSource function. it defines the
* source video selector, the source video standard and adjustable variables
* that control the source acquisition.
* Note: the user level WILL pass SourceAuto in VideoSrc. The kernel driver
* remembers this information separately from the actual VideoSrc.
*/
typedef struct _CONFIG_SOURCE {
ULONG ulSize;
ULONG ulHue; /* acquisition hue adjustment 0..ff */
VIDSTD VideoStd; /* pal/ntsc type of source */
VIDEOSOURCE VideoSrc; /* which connector? (svideo, composite, or Autodetect) */
BOOL bVCR; /* true if a VCR source device */
} CONFIG_SOURCE, *PCONFIG_SOURCE;
#define MAX_HUE 0xff
#define DEFAULT_HUE 0x80
/*
* default settings for port, interrupt and frame buffer
*/
#define DEF_PORT 0xad6
#define DEF_INTERRUPT 10
#define DEF_FIFO 0xa0000
/*
* Parameter Names:
*
* These are the names of Values in the Parameters key (or driver section
* of the profile) used for communicating configuration information and errors
* between the kernel and user-mode drivers.
*/
#define PARAM_PORT L"Port" // port i/o address
#define PARAM_INTERRUPT L"Interrupt" // interrupt number
#define PARAM_FIFO L"FiFo" // frame buffer fifo physical addr
#define PARAM_ERROR L"InstallError" // config error/success code (below)
/*
* the following values are saved in the parameters key, and are
* used by the kernel-mode driver. They can currently only be set by hand.
*/
#define PARAM_THRESH_1_8 L"Threshold_1_8"
#define PARAM_THRESH_1_4 L"Threshold_1_4"
#define PARAM_THRESH_3_8 L"Threshold_3_8"
#define PARAM_THRESH_1_2 L"Threshold_1_2"
#define PARAM_THRESH_FULL L"Threshold_FULL"
#define PARAM_TOF_NTSC L"TopOfField_NTSC"
#define PARAM_TOF_PAL L"TopOfField_PAL"
#define PARAM_TOF_SECAM L"TopOfField_SECAM"
#define PARAM_FIELD L"CaptureField"
/*
* these values are saved in the same place, but
* are currently only used by the user-mode driver.
*/
#define PARAM_FORMAT L"Format" // FmtPal8, FmtRGB555 etc
#define PARAM_WIDTH L"Width" // capture dest width in pixels
#define PARAM_HEIGHT L"Height" // capture dest height in pixels
#define PARAM_HUE L"Hue" // hue 0..ff
#define PARAM_VCR L"VCR" // vcr source device (bool)
#define PARAM_VIDEOSTD L"VideoStd" // ntsc, pal, secam
#define PARAM_CONNECTOR L"VideoSrc" // source connector
/*
* Configuration error handling
*
* during startup of the kernel-driver, the PARAM_ERROR value is written with
* one of the values below. These are the IDs of strings in
* spigot\dll\spigot.rc that are produced in a dialog box by the user-mode
* driver during configuration if not VC_ERR_OK
*/
#define VC_ERR_OK 0 // no configuration error
#define VC_ERR_CREATEDEVICE 1001 // failed to create device object
#define VC_ERR_CONFLICT 1002 // resource conflict
#define VC_ERR_DETECTFAILED 1003 // could not find hardware
#define VC_ERR_INTERRUPT 1004 // interrupt did not occur
#endif //_SPIGOT_H_