]> git.sesse.net Git - casparcg/blob - BluefishSDK_V5_8_0_31/Inc/bluedriver_p.h
Removed GLEE from dependencies.
[casparcg] / BluefishSDK_V5_8_0_31 / Inc / bluedriver_p.h
1 /*\r
2  $Id: BlueDriver_p.h,v 1.24.2.4 2009/08/29 04:31:59 tim Exp $\r
3 */\r
4 #pragma once \r
5 #define _BLUEDRIVER_P_H__\r
6 #define BLUE_UINT32     unsigned int \r
7 #define BLUE_INT32      int \r
8 #define BLUE_UINT8      unsigned char\r
9 #define BLUE_INT8       char\r
10 #define BLUE_UINT16     unsigned short\r
11 #define BLUE_INT16      short\r
12 #pragma once\r
13 #ifdef BLUE_LINUX_CODE\r
14 #define BLUE_UINT64 unsigned long long \r
15 //#include <asm/types.h>\r
16 #else\r
17 #define BLUE_UINT64     unsigned __int64\r
18 #endif \r
19 \r
20 \r
21 /**\r
22  * This contains the enumerators that can be used to set the cards \n\r
23  * video output and also to determine the video mode of the incoming \n\r
24  * video signal.\r
25  */ \r
26 typedef enum _EVideoMode\r
27 {\r
28         VID_FMT_PAL=0,\r
29         VID_FMT_NTSC=1,\r
30         VID_FMT_576I_5000=0,    /**< 720  x 576  50       Interlaced */\r
31         VID_FMT_486I_5994=1,    /**< 720  x 486  60/1.001 Interlaced */\r
32         VID_FMT_720P_5994,              /**< 1280 x 720  60/1.001 Progressive */\r
33         VID_FMT_720P_6000,              /**< 1280 x 720  60       Progressive */\r
34         VID_FMT_1080PSF_2397,   /**< 1920 x 1080 24/1.001 Segment Frame */\r
35         VID_FMT_1080PSF_2400,   /**< 1920 x 1080 24       Segment Frame */\r
36         VID_FMT_1080P_2397,             /**< 1920 x 1080 24/1.001 Progressive */\r
37         VID_FMT_1080P_2400,             /**< 1920 x 1080 24       Progressive */\r
38         VID_FMT_1080I_5000,             /**< 1920 x 1080 50       Interlaced */\r
39         VID_FMT_1080I_5994,             /**< 1920 x 1080 60/1.001 Interlaced */\r
40         VID_FMT_1080I_6000,             /**< 1920 x 1080 60       Interlaced */\r
41         VID_FMT_1080P_2500,             /**< 1920 x 1080 25       Progressive */\r
42         VID_FMT_1080P_2997,             /**< 1920 x 1080 30/1.001 Progressive */\r
43         VID_FMT_1080P_3000,             /**< 1920 x 1080 30       Progressive */\r
44         VID_FMT_HSDL_1498,              /**< 2048 x 1556 15/1.0   Segment Frame */\r
45         VID_FMT_HSDL_1500,              /**< 2048 x 1556 15             Segment Frame */\r
46         VID_FMT_720P_5000,\r
47         VID_FMT_720P_2398,\r
48         VID_FMT_720P_2400,\r
49         VID_FMT_2048_1080PSF_2397=19,\r
50         VID_FMT_2048_1080PSF_2400=20,\r
51         VID_FMT_2048_1080P_2397=21,\r
52         VID_FMT_2048_1080P_2400=22,\r
53         VID_FMT_1080PSF_2500=23,\r
54         VID_FMT_1080PSF_2997=24,\r
55         VID_FMT_1080PSF_3000=25,\r
56         VID_FMT_1080P_5000=26,\r
57         VID_FMT_1080P_5994=27,\r
58         VID_FMT_1080P_6000=28,\r
59         VID_FMT_720P_2500=29,\r
60         VID_FMT_720P_2997=30,\r
61         VID_FMT_720P_3000=31,\r
62         VID_FMT_INVALID=32\r
63 } EVideoMode;\r
64 \r
65 typedef enum _EMemoryFormat\r
66 {\r
67         MEM_FMT_ARGB=0,\r
68         MEM_FMT_BV10=1,\r
69         MEM_FMT_BV8=2,\r
70         MEM_FMT_YUVS=MEM_FMT_BV8,\r
71         MEM_FMT_V210=3, // Iridium HD (BAG1)\r
72         MEM_FMT_RGBA=4,\r
73         MEM_FMT_CINEON_LITTLE_ENDIAN=5,\r
74         MEM_FMT_ARGB_PC=6,\r
75         MEM_FMT_BGRA=MEM_FMT_ARGB_PC,\r
76         MEM_FMT_CINEON=7,\r
77         MEM_FMT_2VUY=8,\r
78         MEM_FMT_BGR=9,\r
79         MEM_FMT_INVALID=10\r
80 } EMemoryFormat;\r
81 \r
82 typedef enum _EUpdateMethod\r
83 {\r
84         UPD_FMT_FIELD=0,\r
85         UPD_FMT_FRAME,\r
86         UPD_FMT_FRAME_DISPLAY_FIELD1,\r
87         UPD_FMT_FRAME_DISPLAY_FIELD2,\r
88         UPD_FMT_INVALID\r
89 } EUpdateMethod;\r
90 \r
91 typedef enum _EResoFormat\r
92 {\r
93         RES_FMT_NORMAL=0,\r
94         RES_FMT_HALF,\r
95         RES_FMT_INVALID\r
96 } EResoFormat;\r
97 \r
98 typedef enum _ECardType\r
99 {\r
100         CRD_BLUEDEEP_LT=0,              // D64 Lite\r
101         CRD_BLUEDEEP_SD,                // Iridium SD\r
102         CRD_BLUEDEEP_AV,                // Iridium AV\r
103         CRD_BLUEDEEP_IO,                // D64 Full\r
104         CRD_BLUEWILD_AV,                // D64 AV\r
105         CRD_IRIDIUM_HD,                 // * Iridium HD\r
106         CRD_BLUEWILD_RT,                // D64 RT\r
107         CRD_BLUEWILD_HD,                // * BadAss G2\r
108         CRD_REDDEVIL,                   // Iridium Full\r
109         CRD_BLUEDEEP_HD,                // * BadAss G2 variant, proposed, reserved\r
110         CRD_BLUE_EPOCH_2K = CRD_BLUEDEEP_HD,\r
111         CRD_BLUE_EPOCH_2K_HORIZON=CRD_BLUE_EPOCH_2K,\r
112         CRD_BLUEDEEP_HDS,               // * BadAss G2 variant, proposed, reserved\r
113         CRD_BLUE_ENVY,                  // Mini Din \r
114         CRD_BLUE_PRIDE,                 //Mini Din Output \r
115         CRD_BLUE_GREED,\r
116         CRD_BLUE_INGEST,\r
117         CRD_BLUE_SD_DUALLINK,\r
118         CRD_BLUE_CATALYST,\r
119         CRD_BLUE_SD_DUALLINK_PRO,\r
120         CRD_BLUE_SD_INGEST_PRO,\r
121         CRD_BLUE_SD_DEEPBLUE_LITE_PRO,\r
122         CRD_BLUE_SD_SINGLELINK_PRO,\r
123         CRD_BLUE_SD_IRIDIUM_AV_PRO,\r
124         CRD_BLUE_SD_FIDELITY,\r
125         CRD_BLUE_SD_FOCUS,\r
126         CRD_BLUE_SD_PRIME,\r
127         CRD_BLUE_EPOCH_2K_CORE,\r
128         CRD_BLUE_EPOCH_2K_ULTRA,\r
129         CRD_BLUE_EPOCH_HORIZON,\r
130         CRD_BLUE_EPOCH_CORE,\r
131         CRD_BLUE_EPOCH_ULTRA,\r
132         CRD_BLUE_CREATE_HD,\r
133         CRD_BLUE_CREATE_2K,\r
134         CRD_BLUE_CREATE_2K_ULTRA,\r
135         CRD_INVALID\r
136 } ECardType;\r
137 \r
138 \r
139 typedef enum _EHDCardSubType\r
140 {       \r
141         CRD_HD_FURY=1,\r
142         CRD_HD_VENGENCE=2,\r
143         CRD_HD_IRIDIUM_XP=3,\r
144         CRD_HD_IRIDIUM = 4,\r
145         CRD_HD_LUST=5,\r
146         CRD_HD_INVALID\r
147 }EHDCardSubType;\r
148 \r
149 /* To be used by the new audio interface only */\r
150 typedef enum _BlueAudioChannelDesc\r
151 {\r
152         MONO_FLAG               = 0xC0000000,\r
153         MONO_CHANNEL_1  = 0x00000001,\r
154         MONO_CHANNEL_2  = 0x00000002,\r
155         MONO_CHANNEL_3  = 0x00000004,\r
156         MONO_CHANNEL_4  = 0x00000008,\r
157         MONO_CHANNEL_5  = 0x00000010,\r
158         MONO_CHANNEL_6  = 0x00000020,\r
159         MONO_CHANNEL_7  = 0x00000040,\r
160         MONO_CHANNEL_8  = 0x00000080,\r
161         MONO_CHANNEL_9  = 0x00000100,// to be used by analog audio output channels \r
162         MONO_CHANNEL_10 = 0x00000200,// to be used by analog audio output channels \r
163         MONO_CHANNEL_11 = 0x00000400,//actual channel 9\r
164         MONO_CHANNEL_12 = 0x00000800,//actual channel 10\r
165         MONO_CHANNEL_13 = 0x00001000,//actual channel 11\r
166         MONO_CHANNEL_14 = 0x00002000,//actual channel 12\r
167         MONO_CHANNEL_15 = 0x00004000,//actual channel 13\r
168         MONO_CHANNEL_16 = 0x00008000,//actual channel 14\r
169         MONO_CHANNEL_17 = 0x00010000,//actual channel 15\r
170         MONO_CHANNEL_18 = 0x00020000 //actual channel 16\r
171 }BlueAudioChannelDesc;\r
172 \r
173 \r
174 //----------------------------------------------------------------------------\r
175 typedef enum\r
176 {\r
177         AUDIO_CHANNEL_LOOPING_OFF               = 0x00000000,\r
178         AUDIO_CHANNEL_LOOPING                   = 0x00000001,\r
179         AUDIO_CHANNEL_LITTLEENDIAN              = 0x00000000,\r
180         AUDIO_CHANNEL_BIGENDIAN                 = 0x00000002,\r
181         AUDIO_CHANNEL_OFFSET_IN_BYTES   = 0x00000004,\r
182         AUDIO_CHANNEL_16BIT                             = 0x00000008,\r
183         AUDIO_CHANNEL_BLIP_PENDING              = 0x00000010,\r
184         AUDIO_CHANNEL_BLIP_COMPLETE             = 0x00000020,\r
185         AUDIO_CHANNEL_SELECT_CHANNEL    = 0x00000040,\r
186         AUDIO_CHANNEL_24BIT                             = 0x00000080\r
187 } EAudioFlags;\r
188 \r
189 /**\r
190 @desc Used to select Audio input source on new generation SD cards \r
191 @remarks\r
192 This enumerator works only when used with ReadAudioSample function.\r
193 */\r
194 typedef enum\r
195 {\r
196         BLUE_AUDIO_AES=0, /**< Used to select All 8 channels of Digital Audio using AES/AES3id  connector*/\r
197         BLUE_AUDIO_ANALOG=1,/**< Used to select Analog audio*/\r
198         BLUE_AUDIO_SDIA=2, /**< Used to select Emb audio from SDI A */\r
199         BLUE_AUDIO_EMBEDDED=BLUE_AUDIO_SDIA,\r
200         BLUE_AUDIO_SDIB=3, /**< Used to select Emb audio from SDI B */\r
201         BLUE_AUDIO_AES_PAIR0=4,\r
202         BLUE_AUDIO_AES_PAIR1=5,\r
203         BLUE_AUDIO_AES_PAIR2=6,\r
204         BLUE_AUDIO_AES_PAIR3=7,\r
205         BLUE_AUDIO_INVALID=8\r
206 } Blue_Audio_Connector_Type;\r
207 \r
208 typedef enum _EAudioRate\r
209 {\r
210         AUDIO_SAMPLE_RATE_48K=48000,\r
211         AUDIO_SAMPLE_RATE_96K=96000,\r
212         AUDIO_SAMPLE_RATE_UNKNOWN=-1\r
213 } EAudioRate;\r
214 \r
215 typedef enum _EConnectorSignalColorSpace\r
216 {\r
217         RGB_ON_CONNECTOR=0x00400000,\r
218         YUV_ON_CONNECTOR=0\r
219 }EConnectorSignalColorSpace;\r
220 \r
221 typedef enum _EDualLinkSignalFormatType\r
222 {\r
223         Signal_FormatType_4224=0,\r
224         Signal_FormatType_4444=1,\r
225         Signal_FormatType_Independent_422=10,\r
226         Signal_FormatType_Dependent_422=11,\r
227         Signal_FormatType_Key_Key=0x8000\r
228 }EDualLinkSignalFormatType;\r
229 \r
230 typedef enum _EPreDefinedColorSpaceMatrix\r
231 {\r
232         UNITY_MATRIX=0,\r
233         MATRIX_709_CGR=1,\r
234         MATRIX_RGB_TO_YUV_709_CGR=MATRIX_709_CGR,\r
235         MATRIX_709=2,\r
236         MATRIX_RGB_TO_YUV_709=MATRIX_709,\r
237         RGB_FULL_RGB_SMPTE=3,\r
238         MATRIX_601_CGR=4,\r
239         MATRIX_RGB_TO_YUV_601_CGR=MATRIX_601_CGR,\r
240         MATRIX_601=5,\r
241         MATRIX_RGB_TO_YUV_601=MATRIX_601,\r
242         MATRIX_SMPTE_274_CGR=6,\r
243         MATRIX_SMPTE_274=7,\r
244         MATRIX_VUYA=8,\r
245         UNITY_MATRIX_INPUT=9,\r
246         MATRIX_YUV_TO_RGB_709_CGR=10,\r
247         MATRIX_YUV_TO_RGB_709=11,\r
248         RGB_SMPTE_RGB_FULL=12,\r
249         MATRIX_YUV_TO_RGB_601_CGR=13,\r
250         MATRIX_YUV_TO_RGB_601=14,\r
251         MATRIX_USER_DEFINED=15,\r
252 }EPreDefinedColorSpaceMatrix;\r
253 \r
254 #ifndef BLUE_LINUX_CODE\r
255 typedef enum\r
256 {\r
257         BLUE_FIFO_CLOSED=0,\r
258         BLUE_FIFO_STARTING=1,\r
259         BLUE_FIFO_RUNNING=2,\r
260         BLUE_FIFO_STOPPING=3,\r
261         BLUE_FIFO_PASSIVE=5,\r
262 }BlueVideoFifoStatus;\r
263 #endif\r
264 typedef enum _ERGBDataRange\r
265 {\r
266         CGR_RANGE=0, //0-255\r
267         SMPTE_RANGE=1 //16-235\r
268 }ERGBDataRange;\r
269 \r
270 typedef enum _EHD_XCONNECTOR_MODE\r
271 {\r
272         SD_SDI=1,\r
273         HD_SDI=2\r
274 }EHD_XCONNECTOR_MODE;\r
275 \r
276 typedef enum _EImageOrientation\r
277 {\r
278         ImageOrientation_Normal=0,      \r
279         ImageOrientation_VerticalFlip=1,\r
280         ImageOrientation_Invalid=2,\r
281 }EImageOrientation;\r
282 \r
283 typedef enum _EBlueGenlockSource\r
284 {\r
285         BlueGenlockBNC=0,\r
286         BlueSDIBNC=0x10000,\r
287         BlueSDI_B_BNC=BlueSDIBNC,\r
288         BlueSDI_A_BNC=0x20000,\r
289         BlueAnalog_BNC=0x40000,\r
290         BlueSoftware=0x80000,\r
291 }EBlueGenlockSource;\r
292 \r
293 typedef enum _EBlueVideoChannel\r
294 {\r
295         BLUE_VIDEOCHANNEL_A=0,\r
296         BLUE_VIDEO_OUTPUT_CHANNEL_A=BLUE_VIDEOCHANNEL_A,\r
297         \r
298         BLUE_VIDEOCHANNEL_B=1,\r
299         BLUE_VIDEO_OUTPUT_CHANNEL_B=BLUE_VIDEOCHANNEL_B,\r
300         \r
301         BLUE_VIDEOCHANNEL_C=2,\r
302         BLUE_VIDEO_INPUT_CHANNEL_A=BLUE_VIDEOCHANNEL_C,\r
303 \r
304         BLUE_VIDEOCHANNEL_D=3,\r
305         BLUE_VIDEO_INPUT_CHANNEL_B=BLUE_VIDEOCHANNEL_D,\r
306         \r
307         BLUE_OUTPUT_MEM_MODULE_A=BLUE_VIDEO_OUTPUT_CHANNEL_A,\r
308         BLUE_OUTPUT_MEM_MODULE_B=BLUE_VIDEO_OUTPUT_CHANNEL_B,\r
309         BLUE_INPUT_MEM_MODULE_A=BLUE_VIDEO_INPUT_CHANNEL_A,\r
310         BLUE_INPUT_MEM_MODULE_B=BLUE_VIDEO_INPUT_CHANNEL_B,\r
311         BLUE_JETSTREAM_SCALER_MODULE_0=0x10,\r
312         BLUE_JETSTREAM_SCALER_MODULE_1=0x11,\r
313         BLUE_JETSTREAM_SCALER_MODULE_2=0x12,\r
314         BLUE_JETSTREAM_SCALER_MODULE_3=0x13,\r
315 \r
316         BLUE_VIDEOCHANNEL_INVALID=30\r
317 }EBlueVideoChannel;\r
318 \r
319 typedef enum _EBlueVideoRouting\r
320 {\r
321         BLUE_VIDEO_LINK_INVALID=0,\r
322         BLUE_SDI_A_LINK1=4,\r
323         BLUE_SDI_A_LINK2=5,\r
324         BLUE_SDI_B_LINK1=6,\r
325         BLUE_SDI_B_LINK2=7,\r
326         BLUE_ANALOG_LINK1=8,\r
327         BLUE_ANALOG_LINK2=9,\r
328         BLUE_SDI_A_SINGLE_LINK=BLUE_SDI_A_LINK1,\r
329         BLUE_SDI_B_SINGLE_LINK=BLUE_SDI_B_LINK1,\r
330         BLUE_ANALOG_SINGLE_LINK=BLUE_ANALOG_LINK1\r
331 \r
332 }EBlueVideoRouting;\r
333 \r
334 typedef enum\r
335 {\r
336         BLUE_FIFO_NULL_ATTRIBUTE=0x0,\r
337         BLUE_FIFO_ECHOPORT_ENABLED=0x1,\r
338         BLUE_FIFO_STEPMODE = 0x2,\r
339         BLUE_FIFO_LOOPMODE = 0x4\r
340 }BlueVideoFifo_Attributes;\r
341 \r
342 typedef enum _BlueAudioOutputDest\r
343 {\r
344         Blue_AnalogAudio_Output=0x0,\r
345         Blue_AES_Output=0x80000000,\r
346         Blue_Emb_Output=0x40000000,\r
347 }BlueAudioOutputDest;\r
348 \r
349 \r
350 typedef enum _BlueAudioInputSource\r
351 {\r
352         Blue_AES=0x10,\r
353         Blue_AnalogAudio=0x20,\r
354         Blue_SDIA_Embed=0x40,\r
355         Blue_SDIB_Embed=0x80,\r
356 }BlueAudioInputSource;\r
357 \r
358 typedef enum _EBlueConnectorIdentifier\r
359 {\r
360         BLUE_CONNECTOR_INVALID = -1,\r
361         \r
362         // BNC connectors in order from top to bottom of shield\r
363         BLUE_CONNECTOR_BNC_A = 0,    // BNC closest to top of shield\r
364         BLUE_CONNECTOR_BNC_B,\r
365         BLUE_CONNECTOR_BNC_C,\r
366         BLUE_CONNECTOR_BNC_D,\r
367         BLUE_CONNECTOR_BNC_E,\r
368         BLUE_CONNECTOR_BNC_F,\r
369         BLUE_CONNECTOR_GENLOCK,\r
370         \r
371         BLUE_CONNECTOR_ANALOG_VIDEO_1 = 100,\r
372         BLUE_CONNECTOR_ANALOG_VIDEO_2,\r
373         BLUE_CONNECTOR_ANALOG_VIDEO_3,\r
374         BLUE_CONNECTOR_ANALOG_VIDEO_4,\r
375         BLUE_CONNECTOR_ANALOG_VIDEO_5,\r
376         BLUE_CONNECTOR_ANALOG_VIDEO_6,\r
377 \r
378         BLUE_CONNECTOR_DVID_1 = 200,\r
379         BLUE_CONNECTOR_SDI_OUTPUT_A= BLUE_CONNECTOR_DVID_1,\r
380         BLUE_CONNECTOR_DVID_2,\r
381         BLUE_CONNECTOR_SDI_OUTPUT_B= BLUE_CONNECTOR_DVID_2,\r
382         BLUE_CONNECTOR_DVID_3,\r
383         BLUE_CONNECTOR_SDI_INPUT_A= BLUE_CONNECTOR_DVID_3,\r
384         BLUE_CONNECTOR_DVID_4,\r
385         BLUE_CONNECTOR_SDI_INPUT_B= BLUE_CONNECTOR_DVID_4,\r
386         BLUE_CONNECTOR_DVID_5,\r
387 \r
388         BLUE_CONNECTOR_AES = 300,\r
389         BLUE_CONNECTOR_ANALOG_AUDIO_1,\r
390         BLUE_CONNECTOR_ANALOG_AUDIO_2,\r
391 \r
392         BLUE_CONNECTOR_RESOURCE_BLOCK=0x400,\r
393         BLUE_CONNECTOR_JETSTREAM_SCALER_0=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_0),\r
394         BLUE_CONNECTOR_JETSTREAM_SCALER_1=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_1),\r
395         BLUE_CONNECTOR_JETSTREAM_SCALER_2=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_2),\r
396         BLUE_CONNECTOR_JETSTREAM_SCALER_3=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_3),\r
397 \r
398         BLUE_CONNECTOR_OUTPUT_MEM_MODULE_A=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_OUTPUT_MEM_MODULE_A),\r
399         BLUE_CONNECTOR_OUTPUT_MEM_MODULE_B=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_OUTPUT_MEM_MODULE_B),\r
400         BLUE_CONNECTOR_INPUT_MEM_MODULE_A=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_INPUT_MEM_MODULE_A),\r
401         BLUE_CONNECTOR_INPUT_MEM_MODULE_B=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_INPUT_MEM_MODULE_B),\r
402         \r
403 }EBlueConnectorIdentifier;\r
404 \r
405 typedef enum _EBlueConnectorSignalDirection\r
406 {\r
407         BLUE_CONNECTOR_SIGNAL_INVALID=-1,\r
408         BLUE_CONNECTOR_SIGNAL_INPUT=0,\r
409         BLUE_CONNECTOR_SIGNAL_OUTPUT=1,\r
410 }EBlueConnectorSignalDirection;\r
411 \r
412 typedef enum _EBlueConnectorProperty\r
413 {\r
414         BLUE_INVALID_CONNECTOR_PROPERTY = -1,\r
415 \r
416         //signal property\r
417         BLUE_CONNECTOR_PROP_INPUT_SIGNAL=0,\r
418         BLUE_CONNECTOR_PROP_OUTPUT_SIGNAL=1,\r
419 \r
420         // Video output\r
421         BLUE_CONNECTOR_PROP_SDI = 0,\r
422         BLUE_CONNECTOR_PROP_YUV_Y,\r
423         BLUE_CONNECTOR_PROP_YUV_U,\r
424         BLUE_CONNECTOR_PROP_YUV_V,\r
425         BLUE_CONNECTOR_PROP_RGB_R,\r
426         BLUE_CONNECTOR_PROP_RGB_G,\r
427         BLUE_CONNECTOR_PROP_RGB_B,\r
428         BLUE_CONNECTOR_PROP_CVBS,\r
429         BLUE_CONNECTOR_PROP_SVIDEO_Y,\r
430         BLUE_CONNECTOR_PROP_SVIDEO_C,\r
431         \r
432         // Audio output\r
433         BLUE_CONNECTOR_PROP_AUDIO_AES = 0x2000,\r
434         BLUE_CONNECTOR_PROP_AUDIO_EMBEDDED,\r
435         BLUE_CONNECTOR_PROP_AUDIO_ANALOG,\r
436 \r
437         \r
438         BLUE_CONNECTOR_PROP_SINGLE_LINK=0x3000,\r
439         BLUE_CONNECTOR_PROP_DUALLINK_LINK_1,\r
440         BLUE_CONNECTOR_PROP_DUALLINK_LINK_2,\r
441         BLUE_CONNECTOR_PROP_DUALLINK_LINK,\r
442 }EBlueConnectorProperty;\r
443 \r
444 /*\r
445 typedef enum _BLUE_AUDIOINPUT_SOURCE\r
446 {\r
447         BLUE_AES_AUDIO_INPUT=0x10000,\r
448         BLUE_ANALOG_AUDIO_INPUT=0x20000,\r
449         BLUE_SDIA_AUDIO_INPUT=0x30000,\r
450         BLUE_SDIB_AUDIO_INPUT=0x40000\r
451 }BLUE_AUDIOINPUT_SOURCE;\r
452 */\r
453 \r
454 typedef enum _EBlueCardProperty\r
455 {\r
456         VIDEO_DUAL_LINK_OUTPUT=0,\r
457         VIDEO_DUAL_LINK_INPUT=1,\r
458         VIDEO_DUAL_LINK_OUTPUT_SIGNAL_FORMAT_TYPE=2,    //EDualLinkSignalFormatType\r
459         VIDEO_DUAL_LINK_INPUT_SIGNAL_FORMAT_TYPE=3,     //EDualLinkSignalFormatType\r
460         VIDEO_OUTPUT_SIGNAL_COLOR_SPACE=4,                      //EConnectorSignalColorSpace\r
461         VIDEO_INPUT_SIGNAL_COLOR_SPACE=5,                               //EConnectorSignalColorSpace\r
462         VIDEO_MEMORY_FORMAT=6,                                          //EMemoryFormat\r
463         VIDEO_MODE=7,                                                                   //EVideoMode\r
464         VIDEO_UPDATE_TYPE=8,                                                    //EUpdateMethod\r
465         VIDEO_ENGINE=9,\r
466         VIDEO_IMAGE_ORIENTATION=10,\r
467         VIDEO_USER_DEFINED_COLOR_MATRIX=11,\r
468         VIDEO_PREDEFINED_COLOR_MATRIX=12,                               //EPreDefinedColorSpaceMatrix\r
469         VIDEO_RGB_DATA_RANGE=13,                                                //ERGBDataRange\r
470         VIDEO_KEY_OVER_BLACK=14,\r
471         VIDEO_KEY_OVER_INPUT_SIGNAL=15,\r
472         VIDEO_SET_DOWN_CONVERTER_VIDEO_MODE=16,         //EHD_XCONNECTOR_MODE\r
473         VIDEO_LETTER_BOX=17,\r
474         VIDEO_PILLOR_BOX_LEFT=18,\r
475         VIDEO_PILLOR_BOX_RIGHT=19,\r
476         VIDEO_PILLOR_BOX_TOP=20,\r
477         VIDEO_PILLOR_BOX_BOTTOM=21,\r
478         VIDEO_SAFE_PICTURE=22,\r
479         VIDEO_SAFE_TITLE=23,\r
480         VIDEO_INPUT_SIGNAL_VIDEO_MODE=24,\r
481         VIDEO_COLOR_MATRIX_MODE=25,\r
482         VIDEO_OUTPUT_MAIN_LUT=26,\r
483         VIDEO_OUTPUT_AUX_LUT=27,\r
484         VIDEO_LTC=28,\r
485         VIDEO_GPIO=29,  \r
486         VIDEO_PLAYBACK_FIFO_STATUS=30,\r
487         RS422_RX_BUFFER_LENGTH=31,\r
488         RS422_RX_BUFFER_FLUSH=32,\r
489         VIDEO_INPUT_UPDATE_TYPE=33,\r
490         VIDEO_INPUT_MEMORY_FORMAT=34,\r
491         VIDEO_GENLOCK_SIGNAL=35,\r
492         AUDIO_OUTPUT_PROP=36,\r
493         AUDIO_CHANNEL_ROUTING=AUDIO_OUTPUT_PROP,\r
494         AUDIO_INPUT_PROP=37,\r
495         VIDEO_ENABLE_LETTERBOX=38,\r
496         VIDEO_DUALLINK_OUTPUT_INVERT_KEY_COLOR=39,\r
497         VIDEO_DUALLINK_OUTPUT_DEFAULT_KEY_COLOR=40,\r
498         VIDEO_BLACKGENERATOR=41,\r
499         VIDEO_INPUTFRAMESTORE_IMAGE_ORIENTATION=42,\r
500         VIDEO_INPUT_SOURCE_SELECTION=43,\r
501         DEFAULT_VIDEO_OUTPUT_CHANNEL=44,\r
502         DEFAULT_VIDEO_INPUT_CHANNEL=45,\r
503         VIDEO_REFERENCE_SIGNAL_TIMING=46,\r
504         EMBEDEDDED_AUDIO_OUTPUT=47,\r
505         EMBEDDED_AUDIO_OUTPUT=EMBEDEDDED_AUDIO_OUTPUT,\r
506         VIDEO_PLAYBACK_FIFO_FREE_STATUS=48,\r
507         VIDEO_IMAGE_WIDTH=49,\r
508         VIDEO_IMAGE_HEIGHT=50,\r
509         VIDEO_SCALER_MODE=51,\r
510         AVAIL_AUDIO_INPUT_SAMPLE_COUNT=52,\r
511         VIDEO_PLAYBACK_FIFO_ENGINE_STATUS=53,\r
512         VIDEO_CAPTURE_FIFO_ENGINE_STATUS=54,\r
513         VIDEO_2K_1556_PANSCAN=55,\r
514         VIDEO_OUTPUT_ENGINE=56,\r
515         VIDEO_INPUT_ENGINE=57,\r
516         BYPASS_RELAY_A_ENABLE=58,\r
517         BYPASS_RELAY_B_ENABLE=59,\r
518         VIDEO_PREMULTIPLIER=60,\r
519         VIDEO_PLAYBACK_START_TRIGGER_POINT=61,\r
520         GENLOCK_TIMING=62,\r
521         VIDEO_IMAGE_PITCH=63,\r
522         VIDEO_IMAGE_OFFSET=64,\r
523         VIDEO_INPUT_IMAGE_WIDTH=65,\r
524         VIDEO_INPUT_IMAGE_HEIGHT=66,\r
525         VIDEO_INPUT_IMAGE_PITCH=67,\r
526         VIDEO_INPUT_IMAGE_OFFSET=68,\r
527         TIMECODE_RP188=69,\r
528         BOARD_TEMPERATURE=70,\r
529         MR2_ROUTING=71,\r
530         SAVEAS_POWERUP_SETTINGS=72,\r
531         VIDEO_CARDPROPERTY_INVALID=100\r
532 }EBlueCardProperty;\r
533 \r
534 \r
535 typedef enum _EAnalogConnectorSignalType\r
536 {\r
537         ANALOG_OUTPUTSIGNAL_CVBS_Y_C=1,\r
538         ANALOG_OUTPUTSIGNAL_COMPONENT=2,\r
539         ANALOG_OUTPUTSIGNAL_RGB=4\r
540 }EAnalogConnectorSignalType;\r
541 \r
542 \r
543 typedef enum _EAnalogInputConnectorType \r
544 {\r
545 /* Composite input */\r
546         ANALOG_VIDEO_INPUT_CVBS_AIN1=0x00, //only available on Mini COAX \r
547         ANALOG_VIDEO_INPUT_CVBS_AIN2=0x01, //available on both Mini COAX and Mini DIN\r
548         ANALOG_VIDEO_INPUT_CVBS_AIN3=0x02, //available on both Mini COAX and Mini DIN\r
549         ANALOG_VIDEO_INPUT_CVBS_AIN4=0x03, //only available on Mini COAX \r
550         ANALOG_VIDEO_INPUT_CVBS_AIN5=0x04, //only available on Mini COAX \r
551         ANALOG_VIDEO_INPUT_CVBS_AIN6=0x05, //available on both Mini COAX and Mini DIN \r
552 \r
553 /*svideo input*/\r
554 //Y_C is a synonym for svideo\r
555         ANALOG_VIDEO_INPUT_Y_C_AIN1_AIN4=0x06, //only available on Mini COAX\r
556         ANALOG_VIDEO_INPUT_Y_C_AIN2_AIN5=0x07, //only available on Mini COAX\r
557         ANALOG_VIDEO_INPUT_Y_C_AIN3_AIN6=0x08, //available on both Mini COAX and Mini DIN\r
558 \r
559 /*YUV input*/\r
560         ANALOG_VIDEO_INPUT_YUV_AIN1_AIN4_AIN5=0x09, //only available on Mini COAX\r
561         ANALOG_VIDEO_INPUT_YUV_AIN2_AIN3_AIN6=0x0a, //available on both Mini COAX and Mini DIN\r
562         ANALOG_VIDEO_INPUT_USE_SDI_A=0x6F,      \r
563         ANALOG_VIDEO_INPUT_USE_SDI=0x7F,\r
564         GENERIC_ANALOG_VIDEO_SOURCE=0x8F,\r
565         ANALOG_VIDEO_INPUT_USE_SDI_B=ANALOG_VIDEO_INPUT_USE_SDI\r
566 }EAnalogInputConnectorType;\r
567 \r
568 \r
569 typedef enum {\r
570         ANALOG_VIDEO_INPUT_CONNECTOR,//EAnalogInputConnectorType\r
571         ANALOG_VIDEO_INPUT_PED,\r
572         ANALOG_VIDEO_INPUT_BRIGHTNESS,\r
573         ANALOG_VIDEO_INPUT_HUE,\r
574         ANALOG_VIDEO_INPUT_LUMA_GAIN,\r
575         ANALOG_VIDEO_INPUT_CHROMA_GAIN,\r
576         ANALOG_VIDEO_INPUT_AUTO_GAIN,\r
577         ANALOG_VIDEO_INPUT_LOAD_DEFAULT_SETTING,        \r
578         ANALOG_VIDEO_OUTPUT_PED,\r
579         ANALOG_VIDEO_OUTPUT_BRIGHTNESS,\r
580         ANALOG_VIDEO_OUTPUT_HUE,\r
581         ANALOG_VIDEO_OUTPUT_LUMA_GAIN,\r
582         ANALOG_VIDEO_OUTPUT_CHROMA_GAIN,        \r
583         ANALOG_VIDEO_OUTPUT_SHARPNESS,\r
584         ANALOG_VIDEO_OUTPUT_AUTO_GAIN,\r
585         ANALOG_VIDEO_OUTPUT_LOAD_DEFAULT_SETTING,\r
586         ANALOG_VIDEO_OUTPUT_SIGNAL_TYPE,//_EAnalogConnectorSignalType\r
587         ANALOG_LOAD_BLUEFISH_DEFAULT_SETTING,\r
588         ANALOG_SET_AS_POWERUP_SETTINGS,\r
589         ANALOG_LOAD_POWERUP_SETTINGS,\r
590         ANALOG_CONNECTOR_STATUS\r
591 } AnalogCard_Property;\r
592 \r
593 typedef struct {\r
594         BLUE_INT32 inputConnector;                      //ANALOG_VIDEO_INPUT_CONNECTOR, EAnalogInputConnectorType\r
595         BLUE_INT32 inputPed;                            //ANALOG_VIDEO_INPUT_PED,\r
596         BLUE_INT32 inputBrightness;             //ANALOG_VIDEO_INPUT_BRIGHTNESS,\r
597         BLUE_INT32 inputHue;                            //ANALOG_VIDEO_INPUT_HUE,\r
598         BLUE_INT32 inputLumaGain;                       //ANALOG_VIDEO_INPUT_LUMA_GAIN,\r
599         BLUE_INT32 inputChromaGain;             //ANALOG_VIDEO_INPUT_CHROMA_GAIN,\r
600         BLUE_INT32 inputAutoGain;                       //ANALOG_VIDEO_INPUT_AUTO_GAIN,\r
601         BLUE_INT32 outputPed;                           //ANALOG_VIDEO_OUTPUT_PED,\r
602         BLUE_INT32 outputBrightness;            //ANALOG_VIDEO_OUTPUT_BRIGHTNESS,\r
603         BLUE_INT32 outputHue;                           //ANALOG_VIDEO_OUTPUT_HUE,\r
604         BLUE_INT32 outputYGain;                 //ANALOG_VIDEO_OUTPUT_Y_GAIN,\r
605         BLUE_INT32 outputUGain;                 //ANALOG_VIDEO_OUTPUT_U_GAIN,\r
606         BLUE_INT32 outputVGain;                 //ANALOG_VIDEO_OUTPUT_V_GAIN,\r
607         BLUE_INT32 outputSharpness;             //ANALOG_VIDEO_OUTPUT_SHARPNESS,\r
608         BLUE_INT32 outputAutoGain;                      //ANALOG_VIDEO_OUTPUT_AUTO_GAIN,\r
609         BLUE_INT32 outputSignalTypes;           //EAnalogConnectorSignalType\r
610 }AnalogCardState;\r
611 \r
612 //----------------------------------------------------------------------------------------------------\r
613 // Used to determine how video interrupts are handled, used in IOCTL_REDDEVIL_VIDEO_ENGINE\r
614 typedef enum _EEngineMode\r
615 {\r
616         VIDEO_ENGINE_FRAMESTORE=0,      // framestore engine\r
617         VIDEO_ENGINE_PLAYBACK=1,        // Playback engine\r
618         VIDEO_ENGINE_CAPTURE=2,         // Capture engine\r
619         VIDEO_ENGINE_PAGEFLIP=3,        // page flipper a mod of CHU viewport \r
620         VIDEO_ENGINE_DUPLEX=4,          // Full Duplex video\r
621         VIDEO_ENGINE_INVALID\r
622 } EEngineMode;\r
623 \r
624 \r
625 typedef enum _EBlueEmbAudioOutput\r
626 {\r
627         blue_emb_audio_enable=0x1,      // Switches off/on  the whole HANC output from connecotrs associated with the channel\r
628         blue_auto_aes_to_emb_audio_encoder=0x2, //control whether the auto aes to emb thread should be running or not.\r
629         blue_emb_audio_group1_enable=0x4,\r
630         blue_emb_audio_group2_enable=0x8,\r
631         blue_emb_audio_group3_enable=0x10,\r
632         blue_emb_audio_group4_enable=0x20,\r
633         blue_enable_hanc_timestamp_pkt = 0x40\r
634 }EBlueEmbAudioOutput;\r
635 \r
636 \r
637 // Buffer Target enumerations\r
638 typedef enum _EBufferTarget\r
639 {\r
640         BUFFER_TARGET_VIDEO=0,          // Generic R/W DMA\r
641         BUFFER_TARGET_AUDIO,            // Special processing required for audio\r
642         BUFFER_TARGET_VIDEO_8BIT,       // Special R/W DMA utilising 8 bit aperture\r
643         BUFFER_TARGET_VIDEO_HALF,       // Special R/W DMA every second line (currently unused)\r
644         BUFFER_TARGET_VIDEO_OUT,        // Updates video out register on DMA completion for write \r
645         BUFFER_TARGET_INVALID\r
646 } EBufferTarget;\r
647 \r
648 #define BUFFER_TYPE_VIDEO               (0)\r
649 #define BUFFER_TYPE_AUDIO               (1)\r
650 #define BUFFER_TYPE_VIDEO_8BIT  (2)     // use this when assigning a buffer to indicate DMA from aperture!\r
651 #define BUFFER_TYPE_VIDEO_OUT   (3)     // On DMA start set video output address to DMA target\r
652 #define BUFFER_TYPE_VIDEO_HALF  (4)     // DMA every second line...\r
653 \r
654 // Buffer identifiers\r
655 #define BUFFER_ID_AUDIO_IN              (0)\r
656 #define BUFFER_ID_AUDIO_OUT             (1)\r
657 #define BUFFER_ID_VIDEO0                (2)\r
658 #define BUFFER_ID_VIDEO1                (3)\r
659 #define BUFFER_ID_VIDEO2                (4)\r
660 #define BUFFER_ID_VIDEO3                (5)\r
661 \r
662 //#define       BUFFER_ID_USER_BASE             (6)\r
663 \r
664 \r
665 \r
666 #define VIDEO_BORDER_TOP                (0x10000000)\r
667 #define VIDEO_BORDER_BOTTOM             (0x20000000)\r
668 #define VIDEO_BORDER_LEFT               (0x40000000)\r
669 #define VIDEO_BORDER_RIGHT              (0x80000000)\r
670 \r
671 typedef struct _AnalogCardPropStruct\r
672 {\r
673         BLUE_UINT32 VideoChannel;\r
674         BLUE_INT32  prop;\r
675         BLUE_INT32  value;\r
676         BLUE_INT32  minValue;\r
677         BLUE_INT32  maxValue;\r
678         BLUE_INT32  bReadFlag;\r
679 }AnalogCardPropStruct;\r
680 \r
681 typedef enum _EConnectorSignalFormatType\r
682 {\r
683         Signal_Type_4444 =1,\r
684         Signal_Type_4224 =0,\r
685         Signal_Type_422=2\r
686 }EConnectorSignalFormatType;\r
687 \r
688 typedef enum _EDMADirection\r
689 {\r
690         DMA_WRITE=0,\r
691         DMA_READ=1,\r
692         DMA_INVALID=2\r
693 }EDMADirection;                 \r
694 \r
695 \r
696 typedef enum _MatrixColType\r
697 {\r
698         COL_BLUE_PB=0,\r
699         COL_RED_PR=1,\r
700         COL_GREEN_Y=2\r
701 }MatrixColType;\r
702 \r
703 \r
704 struct VideoFeature_struct \r
705 {\r
706         BLUE_UINT32  Type;                   // Bluefish card type\r
707         BLUE_UINT32  CardSubType;               \r
708         BLUE_UINT32  Bus;                    // Which PIC bus (bridge) it is on\r
709         BLUE_UINT32  Slot;                   // Which slot card is plugged into\r
710         BLUE_UINT32  Feature;                //  Look at  the _EBlueFishCardFeatures  definition to know what each bit mean\r
711 };\r
712 \r
713 // Bits defining supported features that can be used with VideoFeature_struct\r
714 #define VIDEO_CAPS_INPUT_SDI                                    (0x00000001)    // Capable of input of SDI Video\r
715 #define VIDEO_CAPS_OUTPUT_SDI                                   (0x00000002)    // Capable of output of SDI Video\r
716 #define VIDEO_CAPS_INPUT_COMP                                   (0x00000004)    // Capable of capturing Composite Video input\r
717 #define VIDEO_CAPS_OUTPUT_COMP                                  (0x00000008)    // Capable of capturing Composite Video output\r
718 \r
719 #define VIDEO_CAPS_INPUT_YUV                                    (0x00000010)    // Capable of capturing Component Video input\r
720 #define VIDEO_CAPS_OUTPUT_YUV                                   (0x00000020)    // Capable of capturing Component Video output\r
721 #define VIDEO_CAPS_INPUT_SVIDEO                                 (0x00000040)    // Capable of capturing SVideo input\r
722 #define VIDEO_CAPS_OUTPUT_SVIDEO                                (0x00000080)    // Capable of capturing SVideo output\r
723 \r
724 #define VIDEO_CAPS_GENLOCK                                              (0x00000100)    // Able to adjust Vert & Horiz timing\r
725 #define VIDEO_CAPS_VERTICAL_FLIP                                (0x00000200)    // Able to flip rasterisation\r
726 #define VIDEO_CAPS_KEY_OUTPUT                                   (0x00000400)    // Video keying output capable\r
727 #define VIDEO_CAPS_4444_OUTPUT                                  (0x00000800)    // Capable of outputting 4444 (dual link)\r
728 \r
729 #define VIDEO_CAPS_DUALLINK_INPUT                               (0x00001000)    // Dual Link input  \r
730 #define VIDEO_CAPS_INTERNAL_KEYER                               (0x00002000)    // Has got an internal Keyer\r
731 #define VIDEO_CAPS_RGB_COLORSPACE_SDI_CONN              (0x00004000)    // Support RGB colorspace  in on an  SDI connector \r
732 #define VIDEO_CAPS_HAS_PILLOR_BOX                               (0x00008000)    // Has got support for pillor box\r
733 \r
734 #define VIDEO_CAPS_OUTPUT_RGB                                   (0x00010000)    // Has Analog RGB output connector \r
735 #define VIDEO_CAPS_SCALED_RGB                                   (0x00020000)    // Can scale RGB colour space\r
736 #define AUDIO_CAPS_PLAYBACK                                     (0x00040000)    // Has got audio output\r
737 #define AUDIO_CAPS_CAPTURE                                              (0x00080000)\r
738 \r
739 #define VIDEO_CAPS_DOWNCONVERTER                                (0x00100000)\r
740 #define VIDEO_CAPS_DUALOUTPUT_422_IND_STREAM                    (0x00200000)    // Specifies whether the card supports Dual Indepenedent 422 output streams\r
741 #define VIDEO_CAPS_DUALINPUT_422_IND_STREAM                     (0x00400000)    // Specifies whether the card supports Dual Indepenedent 422 input streams\r
742 \r
743 #define VIDEO_CAPS_VBI_OUTPUT                                   (0x00800000)\r
744 #define VIDEO_CAPS_VBI_INPUT                                    (0x01000000)\r
745 \r
746 #define VIDEO_CAPS_HANC_OUTPUT                                  (0x02000000)\r
747 #define VIDEO_CAPS_HANC_INPUT                                   (0x04000000)\r
748 /*\r
749 #define VIDEO_CAPS_DUALOUTPUT_422_IND_STREAM    (0x00100000)    // Specifies whether the card supports Dual Indepenedent 422 output streams\r
750 #define VIDEO_CAPS_DUALINPUT_422_IND_STREAM             (0x00200000)    // Specifies whether the card supports Dual Indepenedent 422 input streams\r
751 \r
752 #define VIDEO_CAPS_VBI_OUTPUT                                   (0x00400000)\r
753 #define VIDEO_CAPS_VBI_INPUT                                    (0x00800000)\r
754 \r
755 #define VIDEO_CAPS_HANC_OUTPUT                                  (0x01000000)\r
756 #define VIDEO_CAPS_HANC_INPUT                                   (0x02000000)\r
757 */\r
758 \r
759 #define BLUE_CARD_BUFFER_TYPE_OFFSET            (12)\r
760 #define BLUE_DMA_DATA_TYPE_OFFSET                       (16)\r
761 #define BLUE_DMA_FLAGS_OFFSET                           (20)\r
762 #define GetDMACardBufferId(value)                       (value & 0xFFF)\r
763 #define GetCardBufferType(value)                        ((value & 0xF000) >> BLUE_CARD_BUFFER_TYPE_OFFSET)\r
764 #define GetDMADataType(value)                           ((value & 0xF0000) >> BLUE_DMA_DATA_TYPE_OFFSET)\r
765 #define GetDMAFlags(value)                                      ((value & 0xF00000) >> (BLUE_DMA_FLAGS_OFFSET))\r
766 \r
767 #define BlueImage_VBI_DMABuffer(BufferId,DataType)                              ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
768                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE_VBI<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
769                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
770 \r
771 #define BlueImage_DMABuffer(BufferId,DataType)                                  ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
772                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
773                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
774 \r
775 #define BlueImage_VBI_HANC_DMABuffer(BufferId,DataType)                 ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
776                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE_VBI_HANC<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
777                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
778 \r
779 #define BlueImage_HANC_DMABuffer(BufferId,DataType)                             ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
780                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE_HANC<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
781                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
782 \r
783 \r
784 #define BlueBuffer_Image_VBI(BufferId)                          (((BLUE_CARDBUFFER_IMAGE_VBI)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
785 #define BlueBuffer_Image(BufferId)                                      (((BLUE_CARDBUFFER_IMAGE)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
786 #define BlueBuffer_Image_VBI_HANC(BufferId)                     (((BLUE_CARDBUFFER_IMAGE_VBI_HANC)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
787 #define BlueBuffer_Image_HANC(BufferId)                         (((BLUE_CARDBUFFER_IMAGE_HANC)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
788 #define BlueBuffer_HANC(BufferId)                                       (((BLUE_CARDBUFFER_HANC)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
789 \r
790 #define BYPASS_RELAY_A                                                          (0x00000001) // enable bypass relay channel a when loading driver , only used in linux \r
791 #define BYPASS_RELAY_B                                                          (0x00000002) // enable bypass relay channel a when loading driver , only used in linux \r
792 typedef enum _EDMACardBufferType\r
793 {\r
794         BLUE_CARDBUFFER_IMAGE=0,\r
795         BLUE_CARDBUFFER_IMAGE_VBI_HANC=1,\r
796         BLUE_CARDBUFFER_IMAGE_VBI=2,\r
797         BLUE_CARDBUFFER_AUDIO_OUT=3,\r
798         BLUE_CARDBUFFER_AUDIO_IN=4,\r
799         BLUE_CARDBUFFER_HANC=5,\r
800         BLUE_CARDBUFFER_IMAGE_HANC=6,\r
801         BLUE_CARDBUFFER_INVALID=6\r
802 }EDMACardBufferType;\r
803 \r
804 typedef enum _EDMADataType\r
805 {\r
806         BLUE_DATA_FRAME=0,\r
807         BLUE_DATA_IMAGE=0,\r
808         BLUE_DATA_FIELD1=1,\r
809         BLUE_DATA_FIELD2=2,\r
810         BLUE_DATA_VBI=3,\r
811         BLUE_DATA_HANC=4,\r
812         BLUE_DATA_AUDIO_IN=5,\r
813         BLUE_DATA_AUDIO_OUT=6,\r
814         BLUE_DATA_FRAME_RDOM=7,\r
815         BLUE_DMADATA_INVALID=8\r
816 }EDMADataType;\r
817 \r
818 typedef struct _AUXILLARY_VIDEO_INFO\r
819 {\r
820         BLUE_UINT32  video_channel_id;\r
821         BLUE_UINT32  lUniqueId;\r
822         BLUE_UINT32  lInfoType;\r
823         BLUE_UINT32  lMemFmt;\r
824         BLUE_UINT32  lGpio;\r
825         BLUE_UINT64  lLTC;\r
826 }Auxillary_Video_Info;\r
827 \r
828 \r
829 typedef enum _EBlueVideoAuxInfoType\r
830 {\r
831         BLUE_VIDEO_AUX_MEMFMT_CHANGE=1,\r
832         BLUE_VIDEO_AUX_UPDATE_LTC=2,\r
833         BLUE_VIDEO_AUX_UPDATE_GPIO=4,\r
834 }EBlueVideoAuxInfoType;\r
835 // Max of 4 bits \r
836 \r
837 #define GET_ANALOG_AUDIO_LEFT_ROUTINGCHANNEL(value)                             (value&0xFF)\r
838 #define GET_ANALOG_AUDIO_RIGHT_ROUTINGCHANNEL(value)                    ((value&0xFF00)>>8)\r
839 #define SET_ANALOG_AUDIO_ROUTINGCHANNEL(left,right)                             (((right & 0xFF)<<8)|(left & 0xFF))\r
840 #define SET_AUDIO_OUTPUT_ROUTINGCHANNEL(output_type,src_channel_id,_output_channel_id) ((1<<31)|((output_type&3)<<29)|((src_channel_id & 0x7F)<<16)|((_output_channel_id &0x3f)<<23))\r
841 #define GET_AUDIO_OUTPUT_SRC_CHANNEL_ROUTING(value)                             ((value>>16) & 0x7F)\r
842 #define GET_AUDIO_OUTPUT_CHANNEL_ROUTING(value)                                 ((value>>23) & 0x3F)\r
843 #define GET_AUDIO_OUTPUT_TYPE_ROUTING(value)                                    ((value & 0x60000000)>>29)\r
844 \r
845 #define AUDIO_INPUT_SOURCE_SELECT_FLAG                                                  (1<<16) \r
846 #define AUDIO_INPUT_SOURCE_SELECT(SynchCount,AudioInputSource)  (AUDIO_INPUT_SOURCE_SELECT_FLAG|(SynchCount)|(AudioInputSource<<17))\r
847 \r
848 struct blue_video_connection_routing_struct\r
849 {\r
850         BLUE_UINT32 video_channel;\r
851         BLUE_UINT32 duallink_flag;\r
852         BLUE_UINT32 link1_connector;\r
853         BLUE_UINT32 link2_connector;\r
854 };\r
855 \r
856 #pragma pack(push, video_sync_struct, 1)\r
857 typedef struct _blue_video_sync_struct\r
858 {\r
859         BLUE_UINT32     sync_wait_type;// field or frame\r
860         BLUE_UINT32     video_channel; // which video channel interrupt should the interrupt wait for \r
861         BLUE_UINT32     timeout_video_msc;      //if the current video msc is equal to this one insert it into the queue.\r
862         BLUE_UINT32     video_msc;              //current video msc\r
863         BLUE_UINT8  pad[32];\r
864 }blue_video_sync_struct;\r
865 #pragma pack(pop,video_sync_struct)\r
866 \r
867 \r
868 typedef enum _EBlueLUTType\r
869 {\r
870         BLUE_MAIN_LUT_B_Pb=0,\r
871         BLUE_MAIN_LUT_G_Y=1,\r
872         BLUE_MAIN_LUT_R_Pr=2,\r
873         BLUE_AUX_LUT_B_Pb=3,\r
874         BLUE_AUX_LUT_G_Y=4,\r
875         BLUE_AUX_LUT_R_Pr=5,\r
876 }EBlueLUTType;\r
877 \r
878 #pragma pack(push, video_frame, 1)\r
879 struct blue_videoframe_info\r
880 {\r
881         BLUE_UINT64 ltcTimeCode;\r
882         unsigned long videochannel;\r
883         unsigned long BufferId;\r
884         unsigned long Count;\r
885         unsigned long DroppedFrameCount;\r
886 };\r
887 \r
888 struct blue_videoframe_info_ex\r
889 {\r
890         BLUE_UINT64 ltcTimeCode;\r
891         unsigned long videochannel;\r
892         long BufferId;\r
893         unsigned long Count;\r
894         unsigned long DroppedFrameCount;\r
895         unsigned long nFrameTimeStamp;\r
896         unsigned long nVideoSignalType;\r
897         unsigned char pad[32];\r
898 };\r
899 \r
900 struct blue_1d_lookup_table_struct\r
901 {\r
902         BLUE_UINT32 nVideoChannel;\r
903         BLUE_UINT32  nLUTId;\r
904         BLUE_UINT16 * pLUTData;\r
905         BLUE_UINT32  nLUTElementCount;  \r
906         BLUE_UINT8      pad[256];\r
907 };\r
908 #pragma pack(pop, video_frame)\r
909 \r
910 #pragma pack(push, blue_dma_request, 1)\r
911 struct blue_dma_request_struct\r
912 {\r
913         unsigned char * pBuffer;\r
914         BLUE_UINT32 video_channel;\r
915         BLUE_UINT32     BufferId;\r
916         unsigned int BufferDataType;\r
917         unsigned int FrameType;\r
918         unsigned int BufferSize;\r
919         unsigned int Offset;\r
920         unsigned long   BytesTransferred;\r
921         unsigned char pad[64];\r
922 };\r
923 typedef struct _SerialPort_struct\r
924 {\r
925         unsigned char   Buffer[64];\r
926         unsigned int    nBufLength;\r
927         unsigned int    nSerialPortId;\r
928         unsigned int    bFlag; // SerialPort_struct_flags \r
929         unsigned short  sTimeOut; \r
930 }SerialPort_struct;\r
931 \r
932 #pragma pack(pop, blue_dma_request)\r
933 \r
934 typedef enum _blue_output_hanc_ioctl_enum\r
935 {\r
936         blue_get_output_hanc_buffer=0,\r
937         blue_put_output_hanc_buffer=1,\r
938         blue_get_valid_silent_hanc_data_status=3,\r
939         blue_set_valid_silent_hanc_data_status=4,\r
940         blue_start_output_fifo=5,\r
941         blue_stop_output_fifo=6,\r
942         blue_init_output_fifo=7,\r
943         blue_get_queues_info=8,\r
944         blue_get_output_fifo_info=blue_get_queues_info,\r
945         blue_get_output_fifo_status=9,\r
946 \r
947 }blue_output_hanc_ioctl_enum;\r
948 \r
949 typedef enum _blue_input_hanc_ioctl_enum\r
950 {\r
951         blue_get_input_hanc_buffer=0,\r
952         blue_start_input_fifo=3,\r
953         blue_stop_input_fifo=4,\r
954         blue_init_input_fifo=5,\r
955         blue_playthru_input_fifo=6,\r
956         blue_release_input_hanc_buffer=7,\r
957         blue_map_input_hanc_buffer=8,\r
958         blue_unmap_input_hanc_buffer=9,\r
959         blue_get_info_input_hanc_fifo=10,\r
960         blue_get_input_rp188=11,\r
961         blue_get_input_fifo_status=12,\r
962 }blue_input_hanc_ioctl_enum;\r
963 \r
964 \r
965 #define HANC_PLAYBACK_INIT                              (0x00000001)\r
966 #define HANC_PLAYBACK_START                             (0x00000002)\r
967 #define HANC_PLAYBACK_STOP                              (0x00000004)\r
968 \r
969 #define HANC_CAPTURE_INIT                               (0x00000010)\r
970 #define HANC_CAPTURE_START                              (0x00000020)\r
971 #define HANC_CAPTURE_STOP                               (0x00000040)\r
972 #define HANC_CAPTURE_PLAYTHRU                   (0x00000080)\r
973 \r
974 \r
975 typedef enum _EOracFPGAConfigCMD\r
976 {\r
977         ORAC_FPGA_CONFIG_CMD_ERASE_SECTOR=0,\r
978         ORAC_FPGA_CONFIG_CMD_UNLOCK_SECTOR=1,\r
979         ORAC_FPGA_CONFIG_CMD_WRITE_DATA=2,\r
980         ORAC_FPGA_CONFIG_CMD_STATUS=3,\r
981         ORAC_FPGA_CONFIG_CMD_READMODE=4,\r
982         ORAC_FPGA_CONFIG_RAW_WRITE=5,\r
983         ORAC_FPGA_CONFIG_RAW_READ=6,\r
984         ORAC_FPGA_CONFIG_CMD_READ_DATA=7\r
985 }EOracFPGAConfigCMD;\r
986 \r
987 \r
988 #define ANALOG_CHANNEL_0 MONO_CHANNEL_9\r
989 #define ANALOG_CHANNEL_1 MONO_CHANNEL_10\r
990 \r
991 /*Assumes that the data is in stereo pairs not individual samples*/\r
992 #define STEREO_PAIR_1   (MONO_CHANNEL_1|MONO_CHANNEL_2) /* Mono Channel 1 & Mono channel 2* together*/\r
993 #define STEREO_PAIR_2   (MONO_CHANNEL_3|MONO_CHANNEL_4) /* Mono Channel 3 & Mono Channel 4* together*/\r
994 #define STEREO_PAIR_3   (MONO_CHANNEL_5|MONO_CHANNEL_6) /* Mono Channel 5 & Mono Channel 6* together*/\r
995 #define STEREO_PAIR_4   (MONO_CHANNEL_7|MONO_CHANNEL_8) /* Mono Channel 7 & Mono Channel 8* together*/\r
996 \r
997 #define ANALOG_AUDIO_PAIR (ANALOG_CHANNEL_0|ANALOG_CHANNEL_1)\r
998 \r
999 #define BLUE_LITTLE_ENDIAN      0\r
1000 #define BLUE_BIG_ENDIAN         1\r
1001 \r
1002 #define GREED_SILENT_HANC_BUFFER1       250\r
1003 #define GREED_SILENT_HANC_BUFFER2       251\r
1004 \r
1005 \r
1006 \r
1007 typedef enum _EEpochRoutingElements\r
1008 {\r
1009         EPOCH_SRC_DEST_SCALER_0=0x1,\r
1010         EPOCH_SRC_DEST_SCALER_1,\r
1011         EPOCH_SRC_DEST_SCALER_2,\r
1012         EPOCH_SRC_DEST_SCALER_3,\r
1013 \r
1014         EPOCH_SRC_SDI_INPUT_A,\r
1015         EPOCH_SRC_SDI_INPUT_B,\r
1016         EPOCH_SRC_SDI_INPUT_C,\r
1017         EPOCH_SRC_SDI_INPUT_D,\r
1018 \r
1019         EPOCH_DEST_SDI_OUTPUT_A,\r
1020         EPOCH_DEST_SDI_OUTPUT_B,\r
1021         EPOCH_DEST_SDI_OUTPUT_C,\r
1022         EPOCH_DEST_SDI_OUTPUT_D,\r
1023 \r
1024         EPOCH_SRC_OUTPUT_MEM_INTERFACE_CHA,\r
1025         EPOCH_SRC_OUTPUT_MEM_INTERFACE_CHB,\r
1026 \r
1027         EPOCH_DEST_INPUT_MEM_INTERFACE_CHA,\r
1028         EPOCH_DEST_INPUT_MEM_INTERFACE_CHB,\r
1029 \r
1030 }EEpochRoutingElements;\r
1031 \r
1032 \r
1033 \r
1034 #define VPEnableFieldCountTrigger               ((BLUE_UINT64)1<<63)\r
1035 #define VPTriggerGetFieldCount(value)   ((BLUE_UINT64)value & 0xFFFFFFFF)\r
1036 \r
1037 typedef enum _EBlueScalerFilterType\r
1038 {\r
1039         BlueScalerHorizontalYFilter=1,\r
1040         BlueScalerHorizontalCFilter=2,\r
1041         BlueScalerVerticalYFilter=3,\r
1042         BlueScalerVerticalCFilter=4,\r
1043 }EBlueScalerFilterType;\r
1044 \r
1045 \r
1046 \r
1047 #define SET_EPOCH_SCALER_MODE(scaler_id,video_mode) ((scaler_id <<16)|video_mode)\r
1048 #define GET_EPOCH_SCALER_MODE(value)                            (value&0xFFFF)\r
1049 #define GET_EPOCH_SCALER_ID(value)                                      ((value&0xFFFF0000)>>16)\r
1050 \r
1051 // use these macros for retreiving the temp and fan speed.\r
1052 // on epoch range of cards.\r
1053 #define EPOCH_CORE_TEMP(value)                                  (value & 0xFFFF)\r
1054 #define EPOCH_BOARD_TEMP(value)                                 ((value>>16) & 0xFF)\r
1055 #define EPOCH_FAN_SPEED(value)                                  ((value>>24) & 0xFF)\r
1056 \r
1057 // use these macro for doing the MR2 routing \r
1058 // on epoch range of cards.\r
1059 #define EPOCH_SET_ROUTING(routing_src,routing_dest,data_link_type) ((routing_src & 0xFF) | ((routing_dest & 0xFF)<<8) | ((data_link_type&0xFF)<<16))\r
1060 #define EPOCH_ROUTING_GET_SRC_DATA(value)               (value & 0xFF)\r
1061 #define EPOCH_ROUTING_GET_DEST_DATA(value)              ((value>>8) & 0xFF)\r
1062 #define EPOCH_ROUTING_GET_LINK_TYPE_DATA(value) ((value>>16) & 0xFF)