home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / videotlk.zip / H / VCADD.H next >
Text File  |  1998-11-06  |  30KB  |  769 lines

  1. #ifdef DEBUG
  2. #define STATIC
  3. #else
  4. #define STATIC  static
  5. #endif
  6.  
  7. #define VIDEO_IMAGE_DEFAULT           (DI_FOURCC_Y422)
  8. #define VIDEO_BPP_DEFAULT             (DI_BITSPERPEL_16)
  9. #define VIDEO_OVERLAY_DEFAULT         (TRUE)
  10. #define COLOUR_KEY_DEFAULT            (0xDL)
  11. #define VIDEO_FPS_TYPE_FPS            (0)
  12. #define VIDEO_FPS_TYPE_MICRO          (1)
  13. #define VIDEO_FPS_RATE_DEFAULT        (15)
  14. #define VIDEO_FPS_TYPE_DEFAULT        (VIDEO_FPS_TYPE_FPS)
  15. #define VGA_NUMCOLOURS_DEFAULT        (256)
  16.  
  17. #ifndef INCL_32
  18. #define ULONG   unsigned long
  19. #define LONG    long
  20. #define UINT    unsigned short
  21. #define USHORT  unsigned short
  22. #define SHORT   short
  23. #define BOOL    unsigned short
  24. #define UCHAR   unsigned char
  25. #define BYTE    unsigned char
  26. #define CHAR    char
  27. #define VOID    void
  28. typedef VOID    *PVOID;
  29. typedef USHORT  (*PF)();
  30. #define FAR     far
  31. #endif
  32. #define DIM(a)  (sizeof(a)/sizeof(a[0]))
  33. #define MAX(x,y) (((x)>(y))?(x):(y))
  34. #define MIN(x,y) (((x)<(y))?(x):(y))
  35.  
  36. #ifndef TRUE
  37. #define TRUE    (1)
  38. #define FALSE   (0)
  39. #endif
  40.  
  41. // extern USHORT Io;
  42.  
  43. /* IOCTL Commands */
  44. #define  VCAI_CAT            (0x8C)
  45. #define  VCAI_INIINFO          0x60
  46. #define  VCAI_SAVE             0x61
  47. #define  VCAI_RESTORE          0x62
  48.                                   /* KLL New Image Restore Functions - Start */
  49. #define  VCAI_LOAD_MICROCODE   0x63
  50. #define  VCAI_RESTORE_FORMAT   0x64
  51. #define  VCAI_CAPTURE_FORMAT   0x65
  52. #define  VCAI_RESTORE_IMAGE    0x66
  53. #define  VCAI_PLAY             0x67
  54.                                   /* KLL New Image Restore Functions - End   */
  55.                                   /* KLL New Tuner Functions - Start         */
  56. #define  VCAI_QUERYVIDEOSIGNAL 0x68
  57. #define  VCAI_TUNERCHANNEL     0x69
  58.                                   /* KLL New Tuner Functions - End           */
  59. #define  VCAI_VIDEOINPUT       0x6A
  60. #define  VCAI_SETCAPTRECT      0x6B
  61. #define  VCAI_GETIMAGESCALE    0x6C
  62. #define  VCAI_GETDEVINFO       0x6D
  63. #define  VCAI_VALIDRECT        0x6E
  64. #define  VCAI_UNFREEZE         0x72
  65. #define  VCAI_FREEZE           0x74
  66. #define  VCAI_VIDEOADJ         0x75
  67. #define  VCAI_SETFPS           0x76
  68. #define  VCAI_USER             0x79
  69. #define  VCAI_AUDIODEV         0x79
  70. #define  VCAI_SCREENINFO       0x7C
  71. #define  VCAI_SETMONITOR       0x80
  72. #define  VCAI_EDCOLORKEY       0x81
  73. #define  VCAI_SETCOLORKEY      0x82
  74. #define  VCAI_SETCHROMAKEY     0x83
  75. #define  VCAI_TTSTATUS         0x92
  76. #define  VCAI_TTSETPAGE        0x93
  77. #define  VCAI_TTQUERYPAGE      0x94
  78. #define  VCAI_TTGETPAGE        0x95
  79. #define VCAERR_SUCCESS            0
  80. #define VCAERR_INVALID_BUFFER     1
  81. #define VCAERR_INVALID_RECT       2
  82. #define VCAERR_INVALID_PARM       3
  83. #define VCAERR_UNSUPPORTED_CMD    4
  84. #define VCAERR_HW_ERROR           5
  85.                                           /* KLL New Tuner Functions - Start */
  86. #define VCAERR_CHANNEL_TOO_LOW       6
  87. #define VCAERR_CHANNEL_TOO_HIGH      7
  88. #define VCAERR_CHANNEL_SKIP          8
  89. #define VCAERR_CHANNEL_NO_TUNER      9
  90. #define VCAERR_SIGNAL_LOCKED        10
  91. #define VCAERR_SIGNAL_NOT_LOCKED    11
  92. #define VCAERR_SIGNAL_INDETERMINATE 12
  93.  
  94. // Video format types
  95. #define CF_PAL          0
  96. #define CF_NTSC         1
  97. #define CF_YC           8
  98. #define CF_COMPOSITE    9
  99. #define CF_COMPRESS    10
  100. #define CF_EXPAND      11
  101. #define CF_INPUT0      12
  102. #define CF_INPUT1      13
  103. #define CF_INPUT2      14
  104.  
  105. // these are the video formats supported by the celebrity boards
  106. #define CF_PAL_BGHI     0
  107. #define CF_NTSC_M       1
  108. #define CF_SECAM        2
  109. #define CF_PAL_M        3
  110. #define CF_PAL_N        4
  111. #define CF_NTSC_443     5
  112. #define CF_EXTERNAL_SRC 6
  113.  
  114. // these formats are supported by the prism board
  115. #define CF_PAL_443      7
  116. #define CF_MONO         8
  117.  
  118. typedef struct VIDSETTINGS
  119. {
  120.   USHORT vid_brightness;
  121.   USHORT vid_hue;
  122.   USHORT vid_saturation;
  123.   USHORT vid_contrast;
  124. } VIDSETTINGS, FAR *PVIDSETTINGS;
  125.  
  126. /* Used to contain initialiser strings for vxp500/bt812 chips */
  127. typedef struct REGPAIR {
  128.    USHORT rp_register;
  129.    USHORT rp_value;
  130. } REGPAIR, FAR *PREGPAIR;
  131.  
  132. typedef struct TUNER
  133. {
  134.     ULONG tune_if_freq;
  135.     ULONG tune_low_band;
  136.     ULONG tune_mid_band;
  137.     USHORT tune_band_low;
  138.     USHORT tune_band_mid;
  139.     USHORT tune_band_high;
  140. } TUNER, FAR * PTUNER;
  141.  
  142. #define TT_SYNC             (0x80)
  143. #define TT_VERSION          (0x1C)
  144. #define TT_CHIP_ID_MASK     (0x60)
  145. #define TT_CHIP_ID_5246     (0x00)
  146. #define TT_CHIP_ID_5248     (0x20)
  147. #define TT_CHIP_ID_5280     (0x40)
  148. #define TT_CHIP_ID_5281     (0x60)
  149. #define TT_TELETEXT_QUALITY (0x02)
  150. #define TT_VIDEO_QUALITY    (0x01)
  151. #define TT_ACQUISITION_CIRCUITS (4)
  152.  
  153. typedef struct TTSTATUS        // Teletext status result
  154. {
  155.     ULONG  tt_length;
  156.     USHORT tt_no_acquisition_circuits;
  157.     USHORT tt_flags;
  158. } TTSTATUS, FAR *PTTSTATUS;
  159.  
  160. typedef struct TTSETPAGE      // Specify Teletext page to acquire
  161. {
  162.     USHORT  tt_page_no;
  163.     USHORT  tt_acquisition_circuit;
  164. } TTSETPAGE, FAR *PTTSETPAGE;
  165.  
  166. typedef struct TTQUERYPAGE    // Query if Teletext page present
  167. {
  168.     USHORT  tt_page_no;
  169.     USHORT  tt_result;
  170. } TTQUERYPAGE, FAR *PTTQUERYPAGE;
  171.  
  172.  
  173. #define TT_PAGE_NOT_PRESENT (0x00)      // return status results
  174. #define TT_PAGE_PRESENT     (0x01)
  175. #define TT_GOOD_PAGE        (0x02)
  176. #define TT_BAD_PAGE_NO      (0x04)
  177.  
  178.                                         // Input flag settings
  179. #define TT_ACQUIRE_SYNC     (0x02)      // call return
  180. #define TT_ACQUIRE_ASYNC    (0x04)      // return & use semaphore
  181. #define TT_TIMEOUT          (0x80)      // Timeout on long acquires SYNC/ASYNC
  182.  
  183. typedef struct TTGETPAGE      // Get page of teletext
  184. {
  185.     USHORT tt_page_no;
  186.     USHORT tt_page_start;       // where in page to start acquiring from
  187.     USHORT tt_page_length;      // number of bytes to acquire
  188.     ULONG  tt_timeout;
  189.     USHORT tt_flags;
  190.     // HSEM   tt_sem;
  191. } TTGETPAGE, FAR *PTTGETPAGE;
  192.  
  193.                                   // Specify the chip to use
  194. #define HW_CHIP_ID_VXP500   (0x01)
  195. #define HW_CHIP_ID_DIG      (0x02)
  196. #define HW_CHIP_ID_BT848    (0x03)
  197.                                   // Is it a read or a write
  198. #define HW_READ             (0x01)
  199. #define HW_WRITE            (0x02)
  200. #define HW_READ_GPIO        (0x03)      // GPIO reads under Bt848 chip
  201. #define HW_WRITE_GPIO       (0x04)      // GPIO writes under Bt848 chip
  202.  
  203. typedef struct HWINFO
  204. {
  205.     USHORT hw_chip;
  206.     USHORT hw_flags;
  207.     USHORT hw_register;
  208.     USHORT hw_value;
  209. } HWINFO, FAR * PHWINFO;
  210.  
  211.  
  212. typedef struct I2CIO
  213. {
  214.     USHORT i2c_id;
  215.     USHORT i2c_length_out;
  216.     UCHAR  FAR *i2c_out_data;
  217.     USHORT i2c_length_in;
  218.     UCHAR  FAR *i2c_in_data;
  219.     USHORT i2c_result;
  220. } I2CIO, FAR * PI2CIO;
  221.  
  222. typedef struct ADV_FEATURES
  223. {
  224.     ULONG   af_red_low;
  225.     ULONG   af_red_high;
  226.     ULONG   af_green_low;
  227.     ULONG   af_green_high;
  228.     ULONG   af_blue_low;
  229.     ULONG   af_blue_high;
  230.     ULONG   af_crop_left;
  231.     ULONG   af_crop_top;
  232.     ULONG   af_crop_right;
  233.     ULONG   af_crop_bottom;
  234.     ULONG   af_scale_h;
  235.     ULONG   af_scale_v;
  236.     ULONG   af_chroma_key_flag;
  237.     ULONG   af_colour_key_flag;
  238.     ULONG   af_colour_key;
  239.     ULONG   af_no_colours;
  240.     ULONG   af_input_format;
  241.     ULONG   af_interlace_flag;
  242.     ULONG   af_v_interpolation;
  243.     ULONG   af_uniform_flag;
  244.     ULONG   af_hfilter;
  245.     ULONG   af_q_factor;
  246.     ULONG   af_q_auto;
  247.     ULONG   af_interleave;
  248.     ULONG   af_tuner_region;
  249.     ULONG   af_tuner_frequency;
  250. } AF, FAR * PAF;
  251.  
  252. /* Common Cature Rectangle Define */
  253. typedef struct CRECT {     /* CR */
  254.    ULONG X_Left;
  255.    ULONG Y_Top;
  256.    ULONG Y_Height;
  257.    ULONG X_Width;
  258. } CRECT;
  259.  
  260. /* XLATOFF */
  261. #pragma pack(1)
  262. /* XLATON */
  263.  
  264. /* IOCTL category 140 code 6Ah - Set Video Input Source Connector     */
  265. /*                             & Query Current Input Source Connector */
  266. typedef struct VCASETVIDEOINPUT{      /* VI */
  267.    ULONG  INPUT_CONNECTOR;  /* -1 NO_Change Returns Current Setting */
  268. } VCASETVIDEOINPUT;
  269. typedef VCASETVIDEOINPUT FAR * PVCASETVIDEOINPUT;
  270.  
  271.  
  272. /* IOCTL category 140 code 6Bh - Set Source and Destination Capture Rectangles */
  273. typedef struct VCASETCAPTURERECT{      /* CR */
  274.    ULONG  Source_X_Left;
  275.    ULONG  Source_Y_Top;
  276.    ULONG  Source_Y_Height;
  277.    ULONG  Source_X_Width;
  278.    ULONG  Dest_X_Left;
  279.    ULONG  Dest_Y_Top;
  280.    ULONG  Dest_Y_Height;
  281.    ULONG  Dest_X_Width;
  282. } VCASETCAPTURERECT;
  283. typedef VCASETCAPTURERECT FAR * PVCASETCAPTURERECT;
  284.  
  285. /* IOCTL category 140 code 6Ch - Get Image and Scale Into RAM Buffer */
  286. typedef struct VCAGETIMAGESCALE{      /* GIS */
  287.    ULONG  Capture_Buf_Len;
  288.    ULONG  Capture_Buf_Ptr;
  289.    ULONG  Source_X_Left;
  290.    ULONG  Source_Y_Top;
  291.    ULONG  Source_Y_Height;
  292.    ULONG  Source_X_Width;
  293.    ULONG  Dest_X_Left;
  294.    ULONG  Dest_Y_Top;
  295.    ULONG  Dest_Y_Height;
  296.    ULONG  Dest_X_Width;
  297. } VCAGETIMAGESCALE;
  298. typedef VCAGETIMAGESCALE FAR * PVCAGETIMAGESCALE;
  299.  
  300. /* IOCTL category 140 code 6Dh - Get Devinfo */
  301. typedef struct _vcadevinfo {     /* DI */
  302.    ULONG  Length;
  303.    CHAR   ProdInfo[30];
  304.    CHAR   ManInfo[30];
  305.    CHAR   Version[10];
  306.    ULONG  ImgFormat;        /* Image Format Supported by the card            */
  307.    USHORT BitsPerPEL;       /* Bit Per PEL in this image format              */
  308.    USHORT Overlay;          /* Device has overlay support                    */
  309.    ULONG  Brightness;       /* Default Video Attributes for the card         */
  310.    ULONG  hue;
  311.    ULONG  saturation;
  312.    ULONG  contrast;
  313.    ULONG  Sharpness;
  314.    ULONG  unused1;
  315.    ULONG  S_X_Left;         /* Default Source Coordinates                    */
  316.    ULONG  S_Y_Top;
  317.    ULONG  S_Y_Height;
  318.    ULONG  S_X_Width;
  319.    ULONG  D_X_Left;         /* Default Destination Coordinates               */
  320.    ULONG  D_Y_Top;
  321.    ULONG  D_Y_Height;
  322.    ULONG  D_X_Width;
  323.    ULONG  D_ScaleFactor;    /* Default Scale Factor on copy                  */
  324.    ULONG  S_X_MAX;          /* Maximum X size for the digitized Source       */
  325.    ULONG  S_Y_MAX;          /* Maximun Y size for the digitized Source       */
  326.    ULONG  D_X_MAX;          /* Maximun X size for the Destination            */
  327.    ULONG  D_Y_MAX;          /* Maximun Y size for the Destination            */
  328.    ULONG  O_X_MAX;          /* Maximun X size for the Overlay Destination    */
  329.    ULONG  O_Y_MAX;          /* Maximun Y size for the Overlay Destination    */
  330.    USHORT VideoInputs;      /* Number of Software Switchable video Inputs    */
  331.    USHORT CanRestore;
  332.    USHORT CanStretch;
  333.    USHORT CanDistort;
  334.    USHORT HasVolume;        /* Has Volume  Control                           */
  335.    USHORT HasBalance;       /* Has Balance Control                           */
  336.    USHORT CanScale;         /* Can Scale Down on GetImage                    */
  337.    USHORT CanStream;        /* Can do streaming of Images to Stream Handler  */
  338.    ULONG  ulFileNum;        /* System File Number used in Streaming          */
  339.    //////////// New Items after 1.0 release below //////////////////////////
  340.    BYTE   HasTuner;         /* Card Has a Channel Tuner                      */
  341.    BYTE   HasTeleTex;       /* Card Has a TeleTex support                    */
  342.    LONG   Delay_Time;       /* MS delay between connector change/query signal*/
  343.    BYTE   HasAFC;           /* Automatic Frequency Control/FineTune          */
  344.    BYTE   HasPolarizer;     /* Automatic Frequency Control/FineTune          */
  345.    //////////// New Items after 1.1 release below //////////////////////////
  346. // USHORT VideoOutputs;     /* Opposite of Videoinputs */
  347. } VCADEVINFO;
  348.  
  349. typedef VCADEVINFO FAR * PVCADEVINFO;
  350.  
  351. /* XLATOFF */
  352. #pragma pack()
  353. /* XLATON */
  354.  
  355. #define DI_FOURCC_Y422               0x32323459L //( 'Y422' in RAM = 224Y long)
  356. #define DI_BITSPERPEL_16             16 /* 16 Bits Per PEL                          */
  357. #define DI_NotSupported              -1 /* Not Supported                            */
  358. #define DI_Supported                  1 /* Supported                                */
  359.  
  360. /* IOCTL category 140 code 6Eh - Set Streaming Capture Image Size */
  361. typedef struct VCACAPISIZE {     /* CS */
  362.    ULONG X_Left;
  363.    ULONG Y_Top;
  364.    ULONG Y_Height;
  365.    ULONG X_Width;
  366.    ULONG ScaleFactor;
  367. } VCACAPISIZE;
  368. typedef VCACAPISIZE FAR * PVCACAPISIZE;
  369.  
  370. /* IOCTL category 140 code 6Fh - Get Image Into RAM Buffer */
  371. typedef struct VCAGETIMAGE{      /* GI */
  372.    ULONG  Capture_Buf_Len;
  373.    ULONG  Capture_Buf_Ptr;
  374. } VCAGETIMAGE;
  375. typedef VCAGETIMAGE FAR * PVCAGETIMAGE;
  376.  
  377.  
  378. /* IOCTL category 140 code 70h - get buffer addressing */
  379. typedef struct VCABUFFER{        /* BA */
  380.    ULONG buf_addr;   /* 32 bit linear address                                 */
  381.    ULONG buf_len;    /* buffer length in bytes                                */
  382.    ULONG buf_banks;  /* number of banks (1 if full aperature)                 */
  383. } VCABUFFER;
  384. typedef VCABUFFER FAR * PVCABUFFER;
  385.  
  386. /* IOCTL category 140 code 71h - set current VRAM bank number */
  387. typedef struct VCASELECTBANK{    /* SB */
  388.    ULONG bank_num;   /* number of bank to select (0-39)                       */
  389. } VCASELECTBANK;
  390. typedef VCASELECTBANK FAR * PVCASELECTBANK;
  391.  
  392. /* IOCTL category 140 code 75h - set/query video adjustments  */
  393. typedef struct VCASETVIDEO{      /* SV */
  394.    ULONG set_brightness;   /* 1=min, 255=max, 128=norm, -1=no change, -2=reset default   */
  395.    ULONG set_hue;          /* 1=min, 255=max, 128=neutral, -1=no change, -2=reset default*/
  396.    ULONG set_saturation;   /* 1=min, 255=max, 128=norm, -1=no change, -2=reset default   */
  397.    ULONG set_contrast;     /* 1=min, 255=max, 128=norm, -1=no change, -2=reset default   */
  398.    ULONG ret_brightness;   /* 1=min, 255=max */
  399.    ULONG ret_hue;          /* 1=min, 255=max */
  400.    ULONG ret_saturation;   /* 1=min, 255=max */
  401.    ULONG ret_contrast;     /* 1=min, 255=max */
  402. } VCASETVIDEO;
  403. typedef VCASETVIDEO FAR * PVCASETVIDEO;
  404.  
  405. #define NO_CHANGE (0xFFFFFFFFL)
  406. #define DEFAULT   (0xFFFFFFFEL)
  407.  
  408. /* IOCTL category 140 code 76h - set Frame Rate for Streaming */
  409. typedef struct VCASETFPS{        /* SF */
  410.    ULONG set_FPS;          /* Frames to Second to stream to the Stream Handler   */
  411.    ULONG ulFlags;          /* Frames or MicroSeconds */
  412. } VCASETFPS;
  413. typedef VCASETFPS FAR * PVCASETFPS;
  414. /* Defines for ulFlags */
  415. #define  VCASF_FRAMES       0x0
  416. #define  VCASF_MICROSECONDS 0x1
  417.  
  418. /* IOCTL cat 140 code 7Ch - New func that supplies info about the display */
  419.  
  420. typedef struct VCASCREENINFO{      /* SCRINFO */
  421.    ULONG  ulLength;          /* Length of this structure               */
  422.    ULONG  ul_RESV01;         /* Reserved and set to zero               */
  423.    ULONG  ulWidth;           /* Width of the Screen                    */
  424.    ULONG  ulHeight;          /* Height of the Screen                   */
  425.    ULONG  ulNumColours;      /* Number of Color in Screen's Palette    */
  426.    ULONG  ulHFreq;           /* Horizontal Screen Frequency            */
  427.    ULONG  ulVFreq;           /* Vertical   Screen Frequency            */
  428.    ULONG  ulRGB[256];        /* Pallete Info if ulNumColors < 256      */
  429. } VCASCREENINFO, FAR *PVCASCREENINFO;
  430.  
  431. /* IOCTL category 140 code 60h - Init Info from .INI file  Generic Format  */
  432. typedef struct VCAINITG {      /* INI */
  433.    ULONG ulBrightness;   /* 1=min, 255=max                    */
  434.    ULONG ulHue;          /* 1=min, 255=max  or Tint           */
  435.    ULONG ulSaturation;   /* 1=min, 255=max  or Color          */
  436.    ULONG ulContrast;     /* 1=min, 255=max                    */
  437.    BYTE  bD_Info[512];   /* Device Specific Info              */
  438. } VCAINITG;
  439. typedef VCAINITG FAR * PVCAINITG;
  440.  
  441. /* IOCTL category 140 code 60h - Init Info from .INI file     */
  442. typedef struct VCAINIT {      /* IN */
  443.    ULONG ulBrightness;   /* 1=min, 255=max                    */
  444.    ULONG ulHue;          /* 1=min, 255=max  or Tint           */
  445.    ULONG ulSaturation;   /* 1=min, 255=max  or Color          */
  446.    ULONG ulContrast;     /* 1=min, 255=max                    */
  447.    BYTE  bControl ;      /* see ulControl Defines             */
  448.    BYTE  bCapPos  ;      /* see ulCappos  Defines             */
  449. } VCAINIT;
  450. typedef VCAINIT FAR * PVCAINIT;
  451.  
  452.  
  453.                                /* KLL New Image Restore Functions - Start */
  454. /**************************************************************************/
  455. /* IOCTL category 140 code 63h - Query/Load/Unload MicroCode              */
  456. typedef struct VCALOAD {     /* LOAD */
  457.    ULONG  ulflags;           /* 1=Query,2=Load,3=Unload                   */
  458.    CHAR   ProdInfo[256];     /* Path and Name of MicroCode Load           */
  459.    ULONG  ulLoadID;          /* Load ID (returend on a load)              */
  460.    ULONG  ulLength;          /* Lenght of load data                       */
  461.    PVOID  pLoadData;         /* Pointer to MicroCode Load Data            */
  462. } VCALOAD;
  463. typedef VCALOAD FAR * PVCALOAD;
  464.  
  465. /*  ulFlags for VCALOAD                                                */
  466. #define  VCALOAD_QUERY          0x01
  467. #define  VCALOAD_LOAD           0x02
  468. #define  VCALOAD_UNLOAD         0x03
  469.  
  470. /**************************************************************************/
  471. /* IOCTL category 140 code 64h  - Query/Set Image Restore Format           */
  472. typedef struct VCAIMAGERF {      /* IRF */
  473.    ULONG ulFlags;        /* 0 = Query, 1 = Set                            */
  474.    ULONG ulNumFormats;   /* Number of supported format(s)                 */
  475.    ULONG ulCurIndex;     /* Current or Format to set to                   */
  476.    ULONG FourCC[64];     /* Name for Format                               */
  477. } VCAIMAGERF;
  478. typedef VCAIMAGERF FAR * PVCAIMAGERF;
  479.  
  480. /*  ulFlags for VCAIMAGERF (Image Restore Format)                         */
  481. #define  VCAIRF_Query           0x00
  482. #define  VCAIRF_Set             0x01
  483.  
  484. /**************************************************************************/
  485. /* IOCTL category 140 code 65h - Query/Set Image Capture Format           */
  486. typedef struct VCAIMAGECF {      /* ICF */
  487.    ULONG ulFlags;        /* 0 = Query, 1 = Set                            */
  488.    ULONG ulNumFormats;   /* Number of supported format(s)                 */
  489.    ULONG ulCurIndex;     /* Current or Format to set to                   */
  490.    ULONG FourCC[64];     /* Name for Format                               */
  491. } VCAIMAGECF;
  492. typedef VCAIMAGECF FAR * PVCAIMAGECF;
  493.  
  494. /*  ulFlags for VCAIMAGECF (Image Capture Format)                         */
  495. #define  VCAICF_Query           0x00
  496. #define  VCAICF_Set             0x01
  497.  
  498.  
  499. /**************************************************************************/
  500. /* IOCTL category 140 code 66h - Restore Image data to the device         */
  501. typedef struct VCAIMAGER {      /* IR */
  502.    ULONG ulLength;       /* Lenght of Image Data                          */
  503.    PVOID pImageData;     /* Pointer to Image Data                         */
  504. } VCAIMAGER;
  505. typedef VCAIMAGER FAR * PVCAIMAGER;
  506.  
  507. /**************************************************************************/
  508. /* IOCTL category 140 code 67h - Restore Image data to the device         */
  509. typedef struct VCASTREAM {      /* STRM */
  510.    ULONG ulLength;       /* Lenght of Image Data                          */
  511.    PVOID pImageData;     /* Pointer to Image Data                         */
  512.    ULONG ulFlags;        /* Flag info                                     */
  513. } VCASTREAM;
  514. typedef VCASTREAM FAR * PVCASTREAM;
  515.  
  516. /* ulFlag    Defines  for VCASTREAM */
  517. #define  VCA_PLAY_START         0x01
  518. #define  VCA_PLAY_DATA          0x02
  519. #define  VCA_PLAY_STOP          0x04
  520.  
  521. /*********************** ********************** ****************************/
  522. /*********************** Overlay Card Functions ****************************/
  523. /*********************** ********************** ****************************/
  524.  
  525. /* IOCTL category 140 code 80h - Enable/Disable Monitor       */
  526. typedef struct VCASETMONITOR {   /* EDM */
  527.    BOOL  bMonitor;               /* 1=TRUE=ON, 0=FALSE=OFF    */
  528. } VCASETMONITOR;
  529. typedef VCASETMONITOR FAR * PVCASETMONITOR;
  530.  
  531. /* IOCTL category 140 code 81h - Enable/Disable Transparrent Color  */
  532. typedef struct VCAEDCOLORKEY {   /* EDCK */
  533.    BOOL  bColorKeying;           /* 1=TRUE=ON, 0=FALSE=OFF          */
  534. } VCAEDCOLORKEY;
  535. typedef VCAEDCOLORKEY FAR * PVCAEDCOLORKEY;
  536.  
  537. /* IOCTL category 140 code 82h - Set Color Key / Transparrent Color */
  538. typedef struct VCASETCOLORKEY {   /* SCK */
  539.    ULONG  ulColorKey;             /* Transparrent Color             */
  540.                                   // VCA_QUERY_CURRENT
  541.                                   // VCA_SET_DEFAULT
  542. } VCASETCOLORKEY;
  543. typedef VCASETCOLORKEY FAR * PVCASETCOLORKEY;
  544.  
  545. /* IOCTL category 140 code 83h - Enable/Disable Chroma Key */
  546. typedef struct VCASETCHROMAKEY {
  547.    BOOL  bChromaKeying;           /* 1=TRUE=ON, 0=FALSE=OFF          */
  548. } VCASETCHROMAKEY, FAR *PVCASETCHROMAKEY;
  549.  
  550.  
  551. /* IOCTL category 140 code 83h - Set Destination Clip List */
  552. typedef struct VCASETCLIPLIST
  553. {
  554.     ULONG   ulLength;
  555.     ULONG   ulFlags;        // reserved and set to zero
  556.     ULONG   ulNum_Rects;
  557.     CRECT   VisRect[256];   // Array of n visible Rectangles
  558. } VCASETCLIPLIST, FAR *PVCASETCLIPLIST;
  559.  
  560.  
  561.                                           /* KLL New Tuner Functions - Start */
  562. /* IOCTL category 140 code 68h - Query Video Input Connector's Signal */
  563. /* no structure it just Returns a status */
  564.     /* VCAERR_SIGNAL_LOCKED        10    */
  565.     /* VCAERR_SIGNAL_NOT_LOCKED    11    */
  566.     /* VCAERR_SIGNAL_INDETERMINATE 12    */
  567.  
  568. /* IOCTL category 140 code 69h - Set/Query Tuner Channel     */
  569. typedef struct VCATUNCHAN {      /* TUC */
  570.    ULONG  ulFlags;        /* 1=Set, 2=Query                      */
  571.    ULONG  ulOptions;      /* Options                             */
  572.    USHORT usRegion;       /* Region of the word tuner is used in */
  573.    USHORT usChannel;      /* Channel Number                      */
  574.    LONG   lFineTune;      /* Fine Tune value for Channel         */
  575.    ULONG  ulFrequency;    /* Frequency instead of Channel/region */
  576. } VCATUNCHAN;
  577. typedef VCATUNCHAN FAR * PVCATUNCHAN;
  578.  
  579. /* Values for ulFlags on Set/Query Channel */
  580. #define TUC_SET_CHANNEL   1
  581. #define TUC_QUERY_CHANNEL 2
  582.  
  583. /* Values for ulOptions on Set/Query Channel */
  584. /* Bit sensitive field                       */
  585. #define TUC_AFC_ON             4
  586. #define TUC_AFC_OFF            0
  587. #define TUC_FREQUENCY          8
  588. #define TUC_CHANNEL            0
  589. #define TUC_POLARIZATION_VERT 16
  590. #define TUC_POLARIZATION_HORI  0
  591.  
  592. /* values for ulRegion use on Set/Query Channel */
  593. /*   Tuner Type M  */
  594. #define USA             0
  595. #define US_CATV         1
  596. /*   Tuner Type BG */
  597. #define CCIR            2       /* Western Europe       */
  598. #define CCIR_CATV       3       /* Western Europe       */
  599. /*   Tuner Type I  */
  600. #define AUSTRALIA       4       /* Australia            */
  601.  
  602. #define JAPAN           5       /* Japan                */
  603. #define JAPAN_CATV      6       /* Japan                */
  604.  
  605. /* Specific Status Returned by Set/Query Channel */
  606.     /* VCAERR_CHANNEL_TOO_LOW       6    */
  607.     /* VCAERR_CHANNEL_TOO_HIGH      7    */
  608.     /* VCAERR_CHANNEL_SKIP          8    */
  609.     /* VCAERR_CHANNEL_NO_TUNER      9    */
  610.  
  611.                                           /* KLL New Tuner Functions - End   */
  612.                                        /* KLL Volume Functions - Start */
  613.  
  614.                                        // Modified by TS to comply to
  615.                                        // naming convention standard
  616. /* IOCTL category 140 code 79h - General purpose VCAI_USER   */
  617. /*                               a General Device Specific command     */
  618. typedef struct VCAUSER{      /* Generic general purpose */
  619.    ULONG  user_length;       /* Length of this structure               */
  620.    ULONG  user_function;     /* Function                               */
  621. } VCAUSER, FAR *PVCAUSER;;
  622.  
  623.                                        // Modified by TS to comply to
  624.                                        // naming convention standard
  625. /* IOCTL category 140 code 79h - Set/Query  Audio Functions, this is   */
  626. /*                               a General Device Specific command     */
  627. typedef struct VCADEVAUDIO{      /* DEVAUD */
  628.    ULONG  aud_length;        /* Length of this structure               */
  629.    ULONG  aud_function;      /* Audio Input Channel                    */
  630.    ULONG  aud_flags;         /* Flags                                  */
  631.    ULONG  aud_reserved;      /* Reserved and set to zero               */
  632.    ULONG  aud_lvolume;       /* Left  Volume                           */
  633.    ULONG  aud_rvolume;       /* Right   "                              */
  634.    ULONG  aud_lbass;         /* Left  Bass                             */
  635.    ULONG  aud_rbass;         /* Right   "                              */
  636.    ULONG  aud_ltreble;       /* Left  Treble                           */
  637.    ULONG  aud_rtreble;       /* Right   "                              */
  638. } VCADEVAUDIO;
  639.  
  640. typedef VCADEVAUDIO FAR * PVCADEVAUDIO;
  641.  
  642. /* Defines for function on VCADEVAUDIO IOCTL */
  643. //                           A U D 1
  644. #define VCADEV_AUDIO_FUNC 0x41554431
  645.  
  646. /* Defines for ulFlags on VCADEVAUDIO IOCTL */
  647. #define VCADEV_AUDIO_FLAG_MUTE   1
  648. #define VCADEV_AUDIO_FLAG_UNMUTE 0
  649.  
  650. /* Defines for ulL_xxx and ulR_xxx on VCADEVAUDIO IOCTL         */
  651. /*  -1=no change, -2=reset default, -1 on QUERY = not supported */
  652. #define VCA_QUERY_CURRENT  0xFFFFFFFF
  653. #define VCA_SET_TO_DEFAULT 0xFFFFFFFE
  654. #define VCA_NOT_SUPPORTED  0xFFFFFFFF
  655.                                        /* New Volume Functions - End   */
  656.  
  657.  
  658. typedef struct
  659. {
  660.    ULONG   vfh_FrameNumber;      /* relative frame number       */
  661.    ULONG   vfh_FramesSkipped;    /* no. frames skipped          */
  662.    ULONG   vfh_StreamTime;       /* stream time in milliseconds */
  663.    ULONG   vfh_FrameSize;        /* size in bytes               */
  664.    ULONG   vfh_SHparm1;          /* used by stream handler      */
  665.    ULONG   vfh_reserved3;        /* unused                      */
  666.    ULONG   vfh_reserved2;        /* unused                      */
  667.    ULONG   vfh_reserved1;        /* unused                      */
  668. } VIDEO_FRAME_HDR, FAR *PVIDEO_FRAME_HDR;
  669.  
  670. void ini_load (char *ini_name);
  671.  
  672.  
  673. typedef struct MODEINFO
  674. {
  675.     ULONG mi_len;
  676.     ULONG mi_bpp;
  677.     ULONG mi_hres;
  678.     ULONG mi_vres;
  679.     ULONG mi_vram_address;
  680.     ULONG mi_vram_bank_size;    // Current bank size
  681.     ULONG mi_line_size;         // Size in bytes of one scan line
  682.     ULONG mi_fcc;               // PEL format FOURCC
  683.     ULONG mi_vram_size;
  684. } MODEINFO, FAR *PMODEINFO;
  685.  
  686.  
  687. typedef struct INIDATA
  688. {
  689.     char *ini_name;
  690.     void *ini_address;
  691. } INIDATA, FAR *PINIDATA;
  692.  
  693.                             // This structure is used by the hardware layer
  694.                             // to supply the generic layer with the addresses
  695.                             // of some key fields.
  696. typedef struct DETAILS
  697. {
  698.     ULONG  det_length;
  699.     UCHAR  det_product[30];         // VCA product name
  700.     UCHAR  det_manufacturer[30];    // VCA manufacturer
  701.     UCHAR  det_version[10];         // VCA version
  702.     USHORT *det_id;                 // address of VCAs Id      variable
  703.     USHORT *det_irq;                // address of VCAs Irq     variable
  704.     USHORT *det_io;                 // address of VCAs Io      variable
  705.     USHORT *det_dma;                // address of VCAs dma     variable
  706.     ULONG  *det_memory;             // address of VCAs memory  variable
  707.     UCHAR  *det_inifile;            // address of VCAs inifile variable
  708. } VCADETAILS, FAR *PVCADETAILS;
  709.  
  710.                             // Instance data structure passed from the generic
  711.                             // layer to the hardware specific.
  712.                             // The generic layer is responble for creating
  713.                             // & initialising this data structure.
  714.                             // In the current release (20/5/95) the instance
  715.                             // data is single instance per driver
  716. typedef struct VCAINST
  717. {
  718.     USHORT      vca_videoinput;
  719.     USHORT      vca_videoinputs;
  720.     ULONG       vca_fps_rate;
  721.     ULONG       vca_fps_type;
  722.     USHORT      vca_screenwidth;
  723.     USHORT      vca_screenheight;
  724.     USHORT      vca_xposition;
  725.     USHORT      vca_yposition;
  726.     SHORT       vca_xoffset;
  727.     SHORT       vca_yoffset;
  728.     USHORT      vca_windowwidth;
  729.     USHORT      vca_windowheight;
  730.     USHORT      vca_internhscale;
  731.     USHORT      vca_internvscale;
  732.     USHORT      vca_externhscale;
  733.     USHORT      vca_externvscale;
  734.     USHORT      vca_externhzoom;
  735.     USHORT      vca_externvzoom;
  736.     USHORT      vca_vzoomfactor;
  737.     USHORT      vca_vzoomtearpoint;
  738.     ULONG       vca_numcolours;
  739.     ULONG       vca_colourkey;
  740.     USHORT      vca_vgacolours;
  741.     USHORT      vca_vgaclock;
  742.     VIDSETTINGS vca_video;
  743.     VCADEVAUDIO vca_aud;
  744.     ULONG       vca_captureformat;
  745.     USHORT      vca_capturebpp;
  746.     USHORT      vca_capturemask;
  747.     USHORT      vca_capturequality;
  748.     USHORT      vca_freezestatus;
  749.     USHORT      vca_inputformat;
  750.     BOOL        vca_monitor;
  751.     BOOL        vca_colourkeyflag;
  752.     BOOL        vca_chromakeyflag;
  753.     ULONG       vca_tunerregion;
  754.     ULONG       vca_tunerchannel;
  755.     ULONG       vca_tunerfreq;             // Sky Satellite/Video
  756.     LONG        vca_tunerfinetune;
  757.     BOOL        vca_tunerafc;
  758.     BOOL        vca_tunerpolarization;
  759.     BOOL        vca_tunermute;
  760.     USHORT      vca_tunertype;              // Different tuner types
  761.     USHORT      vca_tuneraddress;           // Added to support new tuners
  762.     BOOL        vca_overlay;                // Is this an overlay driver
  763.     BOOL        vca_monitorsvert;           // Multi-monitor setting
  764.     BOOL        vca_monitorshoriz;          // Multi-monitor setting
  765.     BOOL        vca_hwnd;                   // Destination Window Handle
  766.     BOOL        vca_vram_present;           // Is there a physical VRAM buffer
  767. } VCAINST, FAR * PVCAINST;
  768.  
  769.