]> git.sesse.net Git - casparcg/blob - BluefishSDK_V5_10_0_42/Inc/BlueDriver_p.h
ntsc-audio-exp: Better synchronization of audio-cadence.
[casparcg] / BluefishSDK_V5_10_0_42 / Inc / BlueDriver_p.h
1 /*\r
2  $Id: BlueDriver_p.h,v 1.62.2.16 2011/10/26 05:33:18 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 //#define ORAC_FILMPOST_FIRMWARE_PRODUCTID      (0x1)\r
21 //#define ORAC_BROADCAST_FIRMWARE_PRODUCTID     (0x2)\r
22 //#define ORAC_ASI_FIRMWARE_PRODUCTID                   (0x3)\r
23 //#define ORAC_4SDIINPUT_FIRMWARE_PRODUCTID     (0x4)\r
24 //#define ORAC_4SDIOUTPUT_FIRMWARE_PRODUCTID    (0x5)\r
25 \r
26 \r
27 \r
28 /**\r
29  * This contains the enumerators that can be used to set the cards \n\r
30  * video output and also to determine the video mode of the incoming \n\r
31  * video signal.\r
32  */ \r
33 typedef enum _EVideoMode\r
34 {\r
35         VID_FMT_PAL=0,\r
36         VID_FMT_NTSC=1,\r
37         VID_FMT_576I_5000=0,    /**< 720  x 576  50       Interlaced */\r
38         VID_FMT_486I_5994=1,    /**< 720  x 486  60/1.001 Interlaced */\r
39         VID_FMT_720P_5994,              /**< 1280 x 720  60/1.001 Progressive */\r
40         VID_FMT_720P_6000,              /**< 1280 x 720  60       Progressive */\r
41         VID_FMT_1080PSF_2397,   /**< 1920 x 1080 24/1.001 Segment Frame */\r
42         VID_FMT_1080PSF_2400,   /**< 1920 x 1080 24       Segment Frame */\r
43         VID_FMT_1080P_2397,             /**< 1920 x 1080 24/1.001 Progressive */\r
44         VID_FMT_1080P_2400,             /**< 1920 x 1080 24       Progressive */\r
45         VID_FMT_1080I_5000,             /**< 1920 x 1080 50       Interlaced */\r
46         VID_FMT_1080I_5994,             /**< 1920 x 1080 60/1.001 Interlaced */\r
47         VID_FMT_1080I_6000,             /**< 1920 x 1080 60       Interlaced */\r
48         VID_FMT_1080P_2500,             /**< 1920 x 1080 25       Progressive */\r
49         VID_FMT_1080P_2997,             /**< 1920 x 1080 30/1.001 Progressive */\r
50         VID_FMT_1080P_3000,             /**< 1920 x 1080 30       Progressive */\r
51         VID_FMT_HSDL_1498,              /**< 2048 x 1556 15/1.0   Segment Frame */\r
52         VID_FMT_HSDL_1500,              /**< 2048 x 1556 15                     Segment Frame */\r
53         VID_FMT_720P_5000,              /**< 1280 x 720  50                     Progressive */\r
54         VID_FMT_720P_2398,              /**< 1280 x 720  24/1.001       Progressive */\r
55         VID_FMT_720P_2400,              /**< 1280 x 720  24     Progressive */\r
56         VID_FMT_2048_1080PSF_2397=19,   /**< 2048 x 1080 24/1.001       Segment Frame */\r
57         VID_FMT_2048_1080PSF_2400=20,   /**< 2048 x 1080 24     Segment Frame */\r
58         VID_FMT_2048_1080P_2397=21,     /**< 2048 x 1080 24/1.001       progressive */ \r
59         VID_FMT_2048_1080P_2400=22,     /**< 2048 x 1080 24     progressive  */\r
60         VID_FMT_1080PSF_2500=23,\r
61         VID_FMT_1080PSF_2997=24,\r
62         VID_FMT_1080PSF_3000=25,\r
63         VID_FMT_1080P_5000=26,\r
64         VID_FMT_1080P_5994=27,\r
65         VID_FMT_1080P_6000=28,\r
66         VID_FMT_720P_2500=29,\r
67         VID_FMT_720P_2997=30,\r
68         VID_FMT_720P_3000=31,\r
69         VID_FMT_DVB_ASI=32,\r
70         VID_FMT_2048_1080PSF_2500=33,\r
71         VID_FMT_2048_1080PSF_2997=34,\r
72         VID_FMT_2048_1080PSF_3000=35,\r
73         VID_FMT_2048_1080P_2500=36,\r
74         VID_FMT_2048_1080P_2997=37,\r
75         VID_FMT_2048_1080P_3000=38,\r
76         VID_FMT_2048_1080P_5000=39,\r
77         VID_FMT_2048_1080P_5994=40,\r
78         VID_FMT_2048_1080P_6000=41,\r
79         VID_FMT_INVALID=42\r
80 } EVideoMode;\r
81 \r
82 /**\r
83 @brief Use these enumerators to set the pixel format \r
84                 that should be used by the video input and output \r
85                 framestores.\r
86 */\r
87 typedef enum _EMemoryFormat\r
88 {\r
89         MEM_FMT_ARGB=0, /**< ARGB 4:4:4:4 */\r
90         MEM_FMT_BV10=1,\r
91         MEM_FMT_BV8=2,\r
92         MEM_FMT_YUVS=MEM_FMT_BV8,\r
93         MEM_FMT_V210=3, // Iridium HD (BAG1)\r
94         MEM_FMT_RGBA=4,\r
95         MEM_FMT_CINEON_LITTLE_ENDIAN=5,\r
96         MEM_FMT_ARGB_PC=6,\r
97         MEM_FMT_BGRA=MEM_FMT_ARGB_PC,\r
98         MEM_FMT_CINEON=7,\r
99         MEM_FMT_2VUY=8,\r
100         MEM_FMT_BGR=9,\r
101         MEM_FMT_BGR_16_16_16=10,\r
102         MEM_FMT_BGRA_16_16_16_16=11,\r
103         MEM_FMT_VUYA_4444=12,\r
104         MEM_FMT_V216=13,\r
105         MEM_FMT_Y210=14,\r
106         MEM_FMT_Y216=15,\r
107         MEM_FMT_INVALID=16\r
108 } EMemoryFormat;\r
109 \r
110 /**\r
111 @brief Used to control the video update type, \r
112                 whether the card should capture/playback a\r
113                 video frame or field.\r
114 */\r
115 typedef enum _EUpdateMethod\r
116 {\r
117         UPD_FMT_FIELD=0,\r
118         UPD_FMT_FRAME,\r
119         UPD_FMT_FRAME_DISPLAY_FIELD1,\r
120         UPD_FMT_FRAME_DISPLAY_FIELD2,\r
121         UPD_FMT_INVALID,\r
122         UPD_FMT_FLAG_RETURN_CURRENT_UNIQUEID=0x80000000,/**< if this flag is used on epoch cards, function would \r
123                                                                                                         return the unique id of the current frame as the return value.*/\r
124 } EUpdateMethod;\r
125 \r
126 typedef enum _EResoFormat\r
127 {\r
128         RES_FMT_NORMAL=0,\r
129         RES_FMT_HALF,\r
130         RES_FMT_INVALID\r
131 } EResoFormat;\r
132 \r
133 typedef enum _ECardType\r
134 {\r
135         CRD_BLUEDEEP_LT=0,              // D64 Lite\r
136         CRD_BLUEDEEP_SD,                // Iridium SD\r
137         CRD_BLUEDEEP_AV,                // Iridium AV\r
138         CRD_BLUEDEEP_IO,                // D64 Full\r
139         CRD_BLUEWILD_AV,                // D64 AV\r
140         CRD_IRIDIUM_HD,                 // * Iridium HD\r
141         CRD_BLUEWILD_RT,                // D64 RT\r
142         CRD_BLUEWILD_HD,                // * BadAss G2\r
143         CRD_REDDEVIL,                   // Iridium Full\r
144         CRD_BLUEDEEP_HD,                // * BadAss G2 variant, proposed, reserved\r
145         CRD_BLUE_EPOCH_2K = CRD_BLUEDEEP_HD,\r
146         CRD_BLUE_EPOCH_2K_HORIZON=CRD_BLUE_EPOCH_2K,\r
147         CRD_BLUEDEEP_HDS,               // * BadAss G2 variant, proposed, reserved\r
148         CRD_BLUE_ENVY,                  // Mini Din \r
149         CRD_BLUE_PRIDE,                 //Mini Din Output \r
150         CRD_BLUE_GREED,\r
151         CRD_BLUE_INGEST,\r
152         CRD_BLUE_SD_DUALLINK,\r
153         CRD_BLUE_CATALYST,\r
154         CRD_BLUE_SD_DUALLINK_PRO,\r
155         CRD_BLUE_SD_INGEST_PRO,\r
156         CRD_BLUE_SD_DEEPBLUE_LITE_PRO,\r
157         CRD_BLUE_SD_SINGLELINK_PRO,\r
158         CRD_BLUE_SD_IRIDIUM_AV_PRO,\r
159         CRD_BLUE_SD_FIDELITY,\r
160         CRD_BLUE_SD_FOCUS,\r
161         CRD_BLUE_SD_PRIME,\r
162         CRD_BLUE_EPOCH_2K_CORE,\r
163         CRD_BLUE_EPOCH_2K_ULTRA,\r
164         CRD_BLUE_EPOCH_HORIZON,\r
165         CRD_BLUE_EPOCH_CORE,\r
166         CRD_BLUE_EPOCH_ULTRA,\r
167         CRD_BLUE_CREATE_HD,\r
168         CRD_BLUE_CREATE_2K,\r
169         CRD_BLUE_CREATE_2K_ULTRA,\r
170         CRD_BLUE_CREATE_3D = CRD_BLUE_CREATE_2K,\r
171         CRD_BLUE_CREATE_3D_ULTRA = CRD_BLUE_CREATE_2K_ULTRA,\r
172         CRD_BLUE_SUPER_NOVA,\r
173         CRD_INVALID\r
174 } ECardType;\r
175 \r
176 \r
177 typedef enum _EHDCardSubType\r
178 {       \r
179         CRD_HD_FURY=1,\r
180         CRD_HD_VENGENCE=2,\r
181         CRD_HD_IRIDIUM_XP=3,\r
182         CRD_HD_IRIDIUM = 4,\r
183         CRD_HD_LUST=5,\r
184         CRD_HD_INVALID\r
185 }EHDCardSubType;\r
186 \r
187 enum EEpochFirmwareProductID\r
188 {\r
189         ORAC_FILMPOST_FIRMWARE_PRODUCTID=(0x1),                         //Epoch/Create, standard firmware\r
190         ORAC_BROADCAST_FIRMWARE_PRODUCTID=(0x2),                        //Epoch\r
191         ORAC_ASI_FIRMWARE_PRODUCTID=(0x3),                                      //Epoch\r
192         ORAC_4SDIINPUT_FIRMWARE_PRODUCTID=(0x4),                        //SuperNova\r
193         ORAC_4SDIOUTPUT_FIRMWARE_PRODUCTID=(0x5),                       //SuperNova\r
194         ORAC_2SDIINPUT_2SDIOUTPUT_FIRMWARE_PRODUCTID=(0x6),     //SuperNova\r
195 };\r
196 \r
197 /**< @brief Use this enumerator to select the audio channels that should be captured  or played back.\r
198 */\r
199 typedef enum _BlueAudioChannelDesc\r
200 {\r
201         MONO_FLAG               = 0xC0000000,\r
202         MONO_CHANNEL_1  = 0x00000001,\r
203         MONO_CHANNEL_2  = 0x00000002,\r
204         MONO_CHANNEL_3  = 0x00000004,\r
205         MONO_CHANNEL_4  = 0x00000008,\r
206         MONO_CHANNEL_5  = 0x00000010,\r
207         MONO_CHANNEL_6  = 0x00000020,\r
208         MONO_CHANNEL_7  = 0x00000040,\r
209         MONO_CHANNEL_8  = 0x00000080,\r
210         MONO_CHANNEL_9  = 0x00000100,// to be used by analog audio output channels \r
211         MONO_CHANNEL_10 = 0x00000200,// to be used by analog audio output channels \r
212         MONO_CHANNEL_11 = 0x00000400,//actual channel 9\r
213         MONO_CHANNEL_12 = 0x00000800,//actual channel 10\r
214         MONO_CHANNEL_13 = 0x00001000,//actual channel 11\r
215         MONO_CHANNEL_14 = 0x00002000,//actual channel 12\r
216         MONO_CHANNEL_15 = 0x00004000,//actual channel 13\r
217         MONO_CHANNEL_16 = 0x00008000,//actual channel 14\r
218         MONO_CHANNEL_17 = 0x00010000,//actual channel 15\r
219         MONO_CHANNEL_18 = 0x00020000 //actual channel 16\r
220 }BlueAudioChannelDesc;\r
221 \r
222 \r
223 //----------------------------------------------------------------------------\r
224 /**<\r
225 Use this enumeraotor to set the type of pcm audio data.\r
226 */\r
227 typedef enum\r
228 {\r
229         AUDIO_CHANNEL_LOOPING_OFF               = 0x00000000, /**< deprecated not used any more */\r
230         AUDIO_CHANNEL_LOOPING                   = 0x00000001,/**< deprecated not used any more */\r
231         AUDIO_CHANNEL_LITTLEENDIAN              = 0x00000000, /**< if the audio data is little endian this flag must be set*/\r
232         AUDIO_CHANNEL_BIGENDIAN                 = 0x00000002,/**< if the audio data is big  endian this flag must be set*/\r
233         AUDIO_CHANNEL_OFFSET_IN_BYTES   = 0x00000004,/**< deprecated not used any more */\r
234         AUDIO_CHANNEL_16BIT                             = 0x00000008, /**< if the audio channel bit depth is 16 bits this flag must be set*/\r
235         AUDIO_CHANNEL_BLIP_PENDING              = 0x00000010,/**< deprecated not used any more */\r
236         AUDIO_CHANNEL_BLIP_COMPLETE             = 0x00000020,/**< deprecated not used any more */\r
237         AUDIO_CHANNEL_SELECT_CHANNEL    = 0x00000040,/**< deprecated not used any more */\r
238         AUDIO_CHANNEL_24BIT                             = 0x00000080/**< if the audio channel bit depth is 24 bits this flag must be set*/\r
239 } EAudioFlags;\r
240 \r
241 /**\r
242 @desc Used to select Audio input source on new generation SD cards \r
243 @remarks\r
244 This enumerator works only when used with ReadAudioSample function.\r
245 */\r
246 typedef enum\r
247 {\r
248         BLUE_AUDIO_AES=0, /**< Used to select All 8 channels of Digital Audio using AES/AES3id  connector*/\r
249         BLUE_AUDIO_ANALOG=1,/**< Used to select Analog audio*/\r
250         BLUE_AUDIO_SDIA=2, /**< Used to select Emb audio from SDI A */\r
251         BLUE_AUDIO_EMBEDDED=BLUE_AUDIO_SDIA,\r
252         BLUE_AUDIO_SDIB=3, /**< Used to select Emb audio from SDI B */\r
253         BLUE_AUDIO_AES_PAIR0=4, /**< Used to select stereo pair 0 as audio input source. This is only supported on SD Greed Derivative cards.*/\r
254         BLUE_AUDIO_AES_PAIR1=5,/**< Used to select stereo pair 1 as audio input source. This is only supported on SD Greed Derivative cards.*/\r
255         BLUE_AUDIO_AES_PAIR2=6,/**< Used to select stereo pair 2 as audio input source. This is only supported on SD Greed Derivative cards.*/\r
256         BLUE_AUDIO_AES_PAIR3=7,/**< Used to select stereo pair 3 as audio input source. This is only supported on SD Greed Derivative cards.*/\r
257         BLUE_AUDIO_SDIC=8, /**< Used to select Emb audio from SDI C */\r
258         BLUE_AUDIO_SDID=9, /**< Used to select Emb audio from SDI D */\r
259         BLUE_AUDIO_INVALID=10\r
260 } Blue_Audio_Connector_Type;\r
261 \r
262 typedef enum _EAudioRate\r
263 {\r
264         AUDIO_SAMPLE_RATE_48K=48000,\r
265         AUDIO_SAMPLE_RATE_96K=96000,\r
266         AUDIO_SAMPLE_RATE_UNKNOWN=-1\r
267 } EAudioRate;\r
268 \r
269 /**<\r
270 @brief use this enumerator to define the color space of the video signal on the SDI cable\r
271 */\r
272 typedef enum _EConnectorSignalColorSpace\r
273 {\r
274         RGB_ON_CONNECTOR=0x00400000, /**< Use this enumerator if the colorspace of video data on the SDI cable is RGB <br/>\r
275                                                                                 When using dual link capture/playback , user can choose the \r
276                                                                                 color space of the data. <br>\r
277                                                                                 In single link SDI the color space of the signal is always YUB*/\r
278         YUV_ON_CONNECTOR=0 /**<Use this enumerator if color space of video data on the SDI cable  is RGB.*/\r
279 }EConnectorSignalColorSpace;\r
280 \r
281 \r
282 /**<\r
283 @brief use this enumerator for controlling the dual link functionality.\r
284 */\r
285 typedef enum _EDualLinkSignalFormatType\r
286 {\r
287         Signal_FormatType_4224=0, /**< sets the card to work in  4:2:2:4 mode*/\r
288         Signal_FormatType_4444=1,/**< sets the card to work in  4:4:4 10 bit dual link mode*/\r
289         Signal_FormatType_444_10BitSDI=Signal_FormatType_4444,/**< sets the card to work in  10 bit 4:4:4 dual link mode*/\r
290         Signal_FormatType_444_12BitSDI=0x4,/**< sets the card to work in  4:4:4 12 bit dual link mode*/\r
291         Signal_FormatType_Independent_422 = 0x2,\r
292         Signal_FormatType_Key_Key=0x8000/**< not used currently on epoch cards */\r
293         \r
294 }EDualLinkSignalFormatType;\r
295 \r
296 \r
297 enum ECardOperatingMode\r
298 {\r
299         CardOperatingMode_SingleLink=0x0,\r
300         CardOperatingMode_Independent_422=CardOperatingMode_SingleLink,\r
301         CardOperatingMode_DualLink=0x1, \r
302         CardOperatingMode_StereoScopic_422=0x3, \r
303         CardOperatingMode_Dependent_422=CardOperatingMode_StereoScopic_422,/**< not used currently on epoch cards */\r
304 };\r
305 \r
306 \r
307 typedef enum _EPreDefinedColorSpaceMatrix\r
308 {\r
309         UNITY_MATRIX=0,\r
310         MATRIX_709_CGR=1,\r
311         MATRIX_RGB_TO_YUV_709_CGR=MATRIX_709_CGR,\r
312         MATRIX_709=2,\r
313         MATRIX_RGB_TO_YUV_709=MATRIX_709,\r
314         RGB_FULL_RGB_SMPTE=3,\r
315         MATRIX_601_CGR=4,\r
316         MATRIX_RGB_TO_YUV_601_CGR=MATRIX_601_CGR,\r
317         MATRIX_601=5,\r
318         MATRIX_RGB_TO_YUV_601=MATRIX_601,\r
319         MATRIX_SMPTE_274_CGR=6,\r
320         MATRIX_SMPTE_274=7,\r
321         MATRIX_VUYA=8,\r
322         UNITY_MATRIX_INPUT=9,\r
323         MATRIX_YUV_TO_RGB_709_CGR=10,\r
324         MATRIX_YUV_TO_RGB_709=11,\r
325         RGB_SMPTE_RGB_FULL=12,\r
326         MATRIX_YUV_TO_RGB_601_CGR=13,\r
327         MATRIX_YUV_TO_RGB_601=14,\r
328         MATRIX_USER_DEFINED=15,\r
329 }EPreDefinedColorSpaceMatrix;\r
330 \r
331 #ifndef BLUE_LINUX_CODE\r
332 /**< \r
333 @brief this enumerator contains the status of the driver video/hanc fifo \r
334 */\r
335 typedef enum\r
336 {\r
337         BLUE_FIFO_CLOSED=0, /**< Fifo has not been initialized*/\r
338         BLUE_FIFO_STARTING=1,/**< Fifo is starting */\r
339         BLUE_FIFO_RUNNING=2,/**< Fifo is running */\r
340         BLUE_FIFO_STOPPING=3,/**< Fifo is in the process of stopping */\r
341         BLUE_FIFO_PASSIVE=5,/**< Fifo is currently stopped or not active*/\r
342 }BlueVideoFifoStatus;\r
343 #endif\r
344 \r
345 /**<\r
346 @brief use this enumerator to define the data range of the RGB video frame data.\r
347 */\r
348 typedef enum _ERGBDataRange\r
349 {\r
350         CGR_RANGE=0, /**<       In this mode RGB data expected by the user (capture) or provided by the user(playback) is \r
351                                                 in the range of 0-255(8 bit) or 0-1023(10 bit0).<br/>\r
352                                                 driver uses this information to choose the appropriate YUV conversion matrices.*/\r
353         SMPTE_RANGE=1  /**<     In this mode RGB data expected by the user (capture) or provided by the user(playback) is \r
354                                                 in the range of 16-235(8 bit) or 64-940(10 bit0).<br/>\r
355                                                 driver uses this information to choose the appropriate YUV conversion matrices.*/\r
356 }ERGBDataRange;\r
357 \r
358 typedef enum _EHD_XCONNECTOR_MODE\r
359 {\r
360         SD_SDI=1,\r
361         HD_SDI=2\r
362 }EHD_XCONNECTOR_MODE;\r
363 \r
364 /**< @brief  this enumerator can be used to set the image orienatation of the frame.                                                    \r
365 */\r
366 typedef enum _EImageOrientation\r
367 {\r
368         ImageOrientation_Normal=0,      /**< in this configuration , frame is top to bottom and left to right */\r
369         ImageOrientation_VerticalFlip=1, /**< in this configuration frame is bottom to top and left to right*/\r
370         ImageOrientation_Invalid=2,     \r
371 }EImageOrientation;\r
372 \r
373 /**< @brief this enumerator defines the reference signal source that can be used with bluefish cards\r
374 */\r
375 typedef enum _EBlueGenlockSource\r
376 {\r
377         BlueGenlockBNC=0, /**< Genlock is used as reference signal source */\r
378         BlueSDIBNC=0x10000, /**< SDI input B  is used as reference signal source */\r
379         BlueSDI_B_BNC=BlueSDIBNC,\r
380         BlueSDI_A_BNC=0x20000,/**< SDI input A  is used as reference signal source */\r
381         BlueAnalog_BNC=0x40000, /**< Analog input is used as reference signal source */\r
382         BlueSoftware=0x80000,\r
383 }EBlueGenlockSource;\r
384 \r
385 \r
386 typedef enum _EBlueVideoChannel\r
387 {\r
388         BLUE_VIDEOCHANNEL_A=0,\r
389         BLUE_VIDEO_OUTPUT_CHANNEL_A=BLUE_VIDEOCHANNEL_A,\r
390         \r
391         BLUE_VIDEOCHANNEL_B=1,\r
392         BLUE_VIDEO_OUTPUT_CHANNEL_B=BLUE_VIDEOCHANNEL_B,\r
393         \r
394         BLUE_VIDEOCHANNEL_C=2,\r
395         BLUE_VIDEO_INPUT_CHANNEL_A=BLUE_VIDEOCHANNEL_C,\r
396 \r
397         BLUE_VIDEOCHANNEL_D=3,\r
398         BLUE_VIDEO_INPUT_CHANNEL_B=BLUE_VIDEOCHANNEL_D,\r
399 \r
400         BLUE_VIDEOCHANNEL_E=4,\r
401         BLUE_VIDEO_INPUT_CHANNEL_C=BLUE_VIDEOCHANNEL_E,\r
402 \r
403         BLUE_VIDEOCHANNEL_F=5,\r
404         BLUE_VIDEO_INPUT_CHANNEL_D=BLUE_VIDEOCHANNEL_F,\r
405 \r
406         BLUE_VIDEOCHANNEL_G=6,\r
407         BLUE_VIDEO_OUTPUT_CHANNEL_C=BLUE_VIDEOCHANNEL_G,\r
408 \r
409         BLUE_VIDEOCHANNEL_H=7,\r
410         BLUE_VIDEO_OUTPUT_CHANNEL_D=BLUE_VIDEOCHANNEL_H,\r
411         \r
412         BLUE_OUTPUT_MEM_MODULE_A=BLUE_VIDEO_OUTPUT_CHANNEL_A,\r
413         BLUE_OUTPUT_MEM_MODULE_B=BLUE_VIDEO_OUTPUT_CHANNEL_B,\r
414         BLUE_INPUT_MEM_MODULE_A=BLUE_VIDEO_INPUT_CHANNEL_A,\r
415         BLUE_INPUT_MEM_MODULE_B=BLUE_VIDEO_INPUT_CHANNEL_B,\r
416         //BLUE_JETSTREAM_SCALER_MODULE_0=0x10,\r
417         //BLUE_JETSTREAM_SCALER_MODULE_1=0x11,\r
418         //BLUE_JETSTREAM_SCALER_MODULE_2=0x12,\r
419         //BLUE_JETSTREAM_SCALER_MODULE_3=0x13,\r
420 \r
421         BLUE_VIDEOCHANNEL_INVALID=30\r
422 }EBlueVideoChannel;\r
423 \r
424 typedef enum _EBlueVideoRouting\r
425 {\r
426         BLUE_VIDEO_LINK_INVALID=0,\r
427         BLUE_SDI_A_LINK1=4,\r
428         BLUE_SDI_A_LINK2=5,\r
429         BLUE_SDI_B_LINK1=6,\r
430         BLUE_SDI_B_LINK2=7,\r
431         BLUE_ANALOG_LINK1=8,\r
432         BLUE_ANALOG_LINK2=9,\r
433         BLUE_SDI_A_SINGLE_LINK=BLUE_SDI_A_LINK1,\r
434         BLUE_SDI_B_SINGLE_LINK=BLUE_SDI_B_LINK1,\r
435         BLUE_ANALOG_SINGLE_LINK=BLUE_ANALOG_LINK1\r
436 \r
437 }EBlueVideoRouting;\r
438 \r
439 typedef enum\r
440 {\r
441         BLUE_FIFO_NULL_ATTRIBUTE=0x0,\r
442         BLUE_FIFO_ECHOPORT_ENABLED=0x1,\r
443         BLUE_FIFO_STEPMODE = 0x2,\r
444         BLUE_FIFO_LOOPMODE = 0x4\r
445 }BlueVideoFifo_Attributes;\r
446 \r
447 typedef enum _BlueAudioOutputDest\r
448 {\r
449         Blue_AnalogAudio_Output=0x0,\r
450         Blue_AES_Output=0x80000000,\r
451         Blue_Emb_Output=0x40000000,\r
452 }BlueAudioOutputDest;\r
453 \r
454 \r
455 /**<@brief this enumerator is not used need to be removed*/\r
456 typedef enum _BlueAudioInputSource\r
457 {\r
458         Blue_AES=0x10,\r
459         Blue_AnalogAudio=0x20,\r
460         Blue_SDIA_Embed=0x40,\r
461         Blue_SDIB_Embed=0x80,\r
462 }BlueAudioInputSource;\r
463 \r
464 typedef enum _EBlueConnectorIdentifier\r
465 {\r
466         BLUE_CONNECTOR_INVALID = -1,\r
467         \r
468         // BNC connectors in order from top to bottom of shield\r
469         BLUE_CONNECTOR_BNC_A = 0,    // BNC closest to top of shield\r
470         BLUE_CONNECTOR_BNC_B,\r
471         BLUE_CONNECTOR_BNC_C,\r
472         BLUE_CONNECTOR_BNC_D,\r
473         BLUE_CONNECTOR_BNC_E,\r
474         BLUE_CONNECTOR_BNC_F,\r
475         BLUE_CONNECTOR_GENLOCK,\r
476         \r
477         BLUE_CONNECTOR_ANALOG_VIDEO_1 = 100,\r
478         BLUE_CONNECTOR_ANALOG_VIDEO_2,\r
479         BLUE_CONNECTOR_ANALOG_VIDEO_3,\r
480         BLUE_CONNECTOR_ANALOG_VIDEO_4,\r
481         BLUE_CONNECTOR_ANALOG_VIDEO_5,\r
482         BLUE_CONNECTOR_ANALOG_VIDEO_6,\r
483 \r
484         BLUE_CONNECTOR_DVID_1 = 200,\r
485         BLUE_CONNECTOR_SDI_OUTPUT_A= BLUE_CONNECTOR_DVID_1,\r
486         BLUE_CONNECTOR_DVID_2,\r
487         BLUE_CONNECTOR_SDI_OUTPUT_B= BLUE_CONNECTOR_DVID_2,\r
488         BLUE_CONNECTOR_DVID_3,\r
489         BLUE_CONNECTOR_SDI_INPUT_A= BLUE_CONNECTOR_DVID_3,\r
490         BLUE_CONNECTOR_DVID_4,\r
491         BLUE_CONNECTOR_SDI_INPUT_B= BLUE_CONNECTOR_DVID_4,\r
492         BLUE_CONNECTOR_DVID_5,\r
493         BLUE_CONNECTOR_SDI_OUTPUT_C,\r
494         BLUE_CONNECTOR_SDI_OUTPUT_D,\r
495 \r
496         BLUE_CONNECTOR_AES = 300,\r
497         BLUE_CONNECTOR_ANALOG_AUDIO_1,\r
498         BLUE_CONNECTOR_ANALOG_AUDIO_2,\r
499 \r
500         BLUE_CONNECTOR_DVID_6,\r
501         BLUE_CONNECTOR_SDI_INPUT_C= BLUE_CONNECTOR_DVID_6,\r
502         BLUE_CONNECTOR_DVID_7,\r
503         BLUE_CONNECTOR_SDI_INPUT_D= BLUE_CONNECTOR_DVID_7,\r
504 \r
505         //BLUE_CONNECTOR_RESOURCE_BLOCK=0x400,\r
506         //BLUE_CONNECTOR_JETSTREAM_SCALER_0=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_0),\r
507         //BLUE_CONNECTOR_JETSTREAM_SCALER_1=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_1),\r
508         //BLUE_CONNECTOR_JETSTREAM_SCALER_2=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_2),\r
509         //BLUE_CONNECTOR_JETSTREAM_SCALER_3=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_JETSTREAM_SCALER_MODULE_3),\r
510 \r
511         //BLUE_CONNECTOR_OUTPUT_MEM_MODULE_A=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_OUTPUT_MEM_MODULE_A),\r
512         //BLUE_CONNECTOR_OUTPUT_MEM_MODULE_B=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_OUTPUT_MEM_MODULE_B),\r
513         //BLUE_CONNECTOR_INPUT_MEM_MODULE_A=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_INPUT_MEM_MODULE_A),\r
514         //BLUE_CONNECTOR_INPUT_MEM_MODULE_B=(BLUE_CONNECTOR_RESOURCE_BLOCK|BLUE_INPUT_MEM_MODULE_B),\r
515         //\r
516 }EBlueConnectorIdentifier;\r
517 \r
518 typedef enum _EBlueConnectorSignalDirection\r
519 {\r
520         BLUE_CONNECTOR_SIGNAL_INVALID=-1,\r
521         BLUE_CONNECTOR_SIGNAL_INPUT=0,\r
522         BLUE_CONNECTOR_SIGNAL_OUTPUT=1,\r
523 }EBlueConnectorSignalDirection;\r
524 \r
525 typedef enum _EBlueConnectorProperty\r
526 {\r
527         BLUE_INVALID_CONNECTOR_PROPERTY = -1,\r
528 \r
529         //signal property\r
530         BLUE_CONNECTOR_PROP_INPUT_SIGNAL=0,\r
531         BLUE_CONNECTOR_PROP_OUTPUT_SIGNAL=1,\r
532 \r
533         // Video output\r
534         BLUE_CONNECTOR_PROP_SDI = 0,\r
535         BLUE_CONNECTOR_PROP_YUV_Y,\r
536         BLUE_CONNECTOR_PROP_YUV_U,\r
537         BLUE_CONNECTOR_PROP_YUV_V,\r
538         BLUE_CONNECTOR_PROP_RGB_R,\r
539         BLUE_CONNECTOR_PROP_RGB_G,\r
540         BLUE_CONNECTOR_PROP_RGB_B,\r
541         BLUE_CONNECTOR_PROP_CVBS,\r
542         BLUE_CONNECTOR_PROP_SVIDEO_Y,\r
543         BLUE_CONNECTOR_PROP_SVIDEO_C,\r
544         \r
545         // Audio output\r
546         BLUE_CONNECTOR_PROP_AUDIO_AES = 0x2000,\r
547         BLUE_CONNECTOR_PROP_AUDIO_EMBEDDED,\r
548         BLUE_CONNECTOR_PROP_AUDIO_ANALOG,\r
549 \r
550         \r
551         BLUE_CONNECTOR_PROP_SINGLE_LINK=0x3000,\r
552         BLUE_CONNECTOR_PROP_DUALLINK_LINK_1,\r
553         BLUE_CONNECTOR_PROP_DUALLINK_LINK_2,\r
554         BLUE_CONNECTOR_PROP_DUALLINK_LINK,\r
555 \r
556         BLUE_CONNECTOR_PROP_STEREO_MODE_SIDE_BY_SIDE,\r
557         BLUE_CONNECTOR_PROP_STEREO_MODE_TOP_DOWN,\r
558         BLUE_CONNECTOR_PROP_STEREO_MODE_LINE_BY_LINE,\r
559 \r
560 }EBlueConnectorProperty;\r
561 \r
562 /*\r
563 typedef enum _BLUE_AUDIOINPUT_SOURCE\r
564 {\r
565         BLUE_AES_AUDIO_INPUT=0x10000,\r
566         BLUE_ANALOG_AUDIO_INPUT=0x20000,\r
567         BLUE_SDIA_AUDIO_INPUT=0x30000,\r
568         BLUE_SDIB_AUDIO_INPUT=0x40000\r
569 }BLUE_AUDIOINPUT_SOURCE;\r
570 */\r
571 /**\r
572 @desc use the values in this enumerator for controlling card property\r
573 */\r
574 typedef enum _EBlueCardProperty\r
575 {\r
576         VIDEO_DUAL_LINK_OUTPUT=0,/**<  Use this property to enable/diable cards dual link output property*/\r
577         VIDEO_DUAL_LINK_INPUT=1,/**<  Use this property to enable/diable cards dual link input property*/\r
578         VIDEO_DUAL_LINK_OUTPUT_SIGNAL_FORMAT_TYPE=2, /**<Use this property to select signal format type that should be used \r
579                                                         when dual link output is enabled. Possible values this property can\r
580                                                         accept is defined in the enumerator EDualLinkSignalFormatType\r
581                                                                                                 */\r
582         VIDEO_DUAL_LINK_INPUT_SIGNAL_FORMAT_TYPE=3,/**< Use this property to select signal format type that should be used \r
583                                                 when dual link input is enabled. Possible values this property can\r
584                                                 accept is defined in the enumerator EDualLinkSignalFormatType\r
585                                                 */\r
586         VIDEO_OUTPUT_SIGNAL_COLOR_SPACE=4,/**<  Use this property to select color space of the signal when dual link output is set to \r
587                                         use 4:4:4/4:4:4:4 signal format type. Possible values this property can\r
588                                         accept is defined in the enumerator EConnectorSignalColorSpace\r
589                                         */\r
590         VIDEO_INPUT_SIGNAL_COLOR_SPACE=5,/**<   Use this property to select color space of the signal when dual link input is set to \r
591                                         use 4:4:4/4:4:4:4 signal format type. Possible values this property can\r
592                                         accept is defined in the enumerator EConnectorSignalColorSpace\r
593                                         */\r
594         VIDEO_MEMORY_FORMAT=6, /**<Use this property to ser the pixel format that should be used by \r
595                         video output channels.  Possible values this property can\r
596                         accept is defined in the enumerator EMemoryFormat\r
597                         */      \r
598         VIDEO_MODE=7,/**<Use this property to set the video mode that should be used by \r
599                         video output channels.  Possible values this property can\r
600                         accept is defined in the enumerator EVideoMode\r
601                         */      //\r
602         VIDEO_UPDATE_TYPE=8,/**<Use this property to set the framestore update type that should be used by \r
603                         video output channels.  Card can update video framestore at field/frame rate.\r
604                         Possible values this property can accept is defined in the enumerator EUpdateMethod\r
605                         */      \r
606         VIDEO_ENGINE=9,\r
607         VIDEO_IMAGE_ORIENTATION=10,/**< Use this property to set the image orientation of the video output framestore.\r
608                                 This property must be set before frame is transferred to on card memory using \r
609                                 DMA transfer functions(system_buffer_write_async). It is recommended to use \r
610                                 vertical flipped image orientation only on RGB pixel formats.\r
611                                 Possible values this property can accept is defined in the enumerator EImageOrientation\r
612                                 */\r
613         VIDEO_USER_DEFINED_COLOR_MATRIX=11,\r
614         VIDEO_PREDEFINED_COLOR_MATRIX=12,//EPreDefinedColorSpaceMatrix\r
615         VIDEO_RGB_DATA_RANGE=13,                /**<    Use this property to set the data range of RGB pixel format, user can specify \r
616                                                                                         whether the RGB data is in either SMPTE or CGR range. Based on this information \r
617                                                                                         driver is decide which color matrix should be used.\r
618                                                                                         Possible values this property can accept is defined in the enumerator ERGBDataRange\r
619                                                                                         For SD cards this property will set the input and the output to the specified value.\r
620                                                                                         For Epoch/Create/SuperNova cards this property will only set the output to the specified value.\r
621                                                                                         For setting the input on Epoch/Create/SuperNova cards see EPOCH_VIDEO_INPUT_RGB_DATA_RANGE*/\r
622         VIDEO_KEY_OVER_BLACK=14,/**< this property is deprecated and no longer supported on epoch/create range of cards.*/      \r
623         VIDEO_KEY_OVER_INPUT_SIGNAL=15,\r
624         VIDEO_SET_DOWN_CONVERTER_VIDEO_MODE=16,/**< this property is deprecated and no longer supported on epoch/create range of cards.\r
625                                                 EHD_XCONNECTOR_MODE\r
626                                                 */\r
627         VIDEO_LETTER_BOX=17,\r
628         VIDEO_PILLOR_BOX_LEFT=18,\r
629         VIDEO_PILLOR_BOX_RIGHT=19,\r
630         VIDEO_PILLOR_BOX_TOP=20,\r
631         VIDEO_PILLOR_BOX_BOTTOM=21,\r
632         VIDEO_SAFE_PICTURE=22,\r
633         VIDEO_SAFE_TITLE=23,\r
634         VIDEO_INPUT_SIGNAL_VIDEO_MODE=24,/**< Use this property to retreive the video input signal information on the \r
635                                         default video input channel used by that  SDK object.\r
636                                         */\r
637         VIDEO_COLOR_MATRIX_MODE=25,\r
638         VIDEO_OUTPUT_MAIN_LUT=26,/**< this property is deprecated and no longer supported on epoch/create range of cards.*/\r
639         VIDEO_OUTPUT_AUX_LUT=27,/**< this property is deprecated and no longer supported on epoch/create range of cards.*/\r
640         VIDEO_LTC=28,           /**< this property is deprecated and no longer supported on epoch/create range of cards. To retreive/ outputting \r
641                                 LTC information you can use the HANC decoding and encoding functions.*/\r
642         VIDEO_GPIO=29,  \r
643         VIDEO_PLAYBACK_FIFO_STATUS=30, /**< This property can be used to retreive how many frames are bufferd in the video playback fifo.*/\r
644         RS422_RX_BUFFER_LENGTH=31,\r
645         RS422_RX_BUFFER_FLUSH=32,\r
646         VIDEO_INPUT_UPDATE_TYPE=33,/**< Use this property to set the framestore update type that should be used by \r
647                                 video input  channels.  Card can update video framestore at field/frame rate.\r
648                                 Possible values this property can accept is defined in the enumerator EUpdateMethod\r
649                                                                         */      \r
650         VIDEO_INPUT_MEMORY_FORMAT=34,/**<Use this property to set the pixel format that should be used by \r
651                                         video input channels when it is capturing a frame from video input source.  \r
652                                         Possible values this property can accept is defined in the enumerator EMemoryFormat\r
653                                                                         */      \r
654         VIDEO_GENLOCK_SIGNAL=35,/**< Use this property to retrieve video signal of the reference source that is used by the card.\r
655                                 This can also be used to select the reference signal source that should be used.        \r
656                                 */\r
657 \r
658         AUDIO_OUTPUT_PROP=36,   /**< this can be used to route PCM audio data onto respective audio output connectors. */\r
659         AUDIO_CHANNEL_ROUTING=AUDIO_OUTPUT_PROP,\r
660         AUDIO_INPUT_PROP=37,/**< Use this property to select audio input source that should be used when doing \r
661                         an audio capture.\r
662                         Possible values this property can accept is defined in the enumerator Blue_Audio_Connector_Type.\r
663                         */\r
664         VIDEO_ENABLE_LETTERBOX=38,\r
665         VIDEO_DUALLINK_OUTPUT_INVERT_KEY_COLOR=39,/**< this property is deprecated and no longer supported on epoch/create range of cards.*/\r
666         VIDEO_DUALLINK_OUTPUT_DEFAULT_KEY_COLOR=40,/**< this property is deprecated and no longer supported on epoch/create range of cards.*/\r
667         VIDEO_BLACKGENERATOR=41, /**< Use this property to control the black generator on the video output channel.\r
668                                                          */\r
669         VIDEO_INPUTFRAMESTORE_IMAGE_ORIENTATION=42,\r
670         VIDEO_INPUT_SOURCE_SELECTION=43, /**<   The video input source that should be used by the SDK default video input channel \r
671                                         can be configured using this property.  \r
672                                         Possible values this property can accept is defined in the enumerator EBlueConnectorIdentifier.\r
673                                         */\r
674         DEFAULT_VIDEO_OUTPUT_CHANNEL=44,\r
675         DEFAULT_VIDEO_INPUT_CHANNEL=45,\r
676         VIDEO_REFERENCE_SIGNAL_TIMING=46,\r
677         EMBEDEDDED_AUDIO_OUTPUT=47, /**< the embedded audio output property can be configured using this property.\r
678                                         Possible values this property can accept is defined in the enumerator EBlueEmbAudioOutput.\r
679                                         */\r
680         EMBEDDED_AUDIO_OUTPUT=EMBEDEDDED_AUDIO_OUTPUT,\r
681         VIDEO_PLAYBACK_FIFO_FREE_STATUS=48, /**< this will return the number of free buffer in the fifo. \r
682                                         If the video engine  is framestore this will give you the number of buffers that the framestore mode \r
683                                         can you use with that video output channel.*/\r
684         VIDEO_IMAGE_WIDTH=49,           /**< only for selective DMA of a smaller image onto video output raster; size in bytes (not pixels) */\r
685         VIDEO_IMAGE_HEIGHT=50,          /**< only for selective DMA of a smaller image onto video output raster; number of lines */\r
686         VIDEO_SCALER_MODE=51,\r
687         AVAIL_AUDIO_INPUT_SAMPLE_COUNT=52,\r
688         VIDEO_PLAYBACK_FIFO_ENGINE_STATUS=53,   /**< this will return the playback fifo status. The values returned by this property \r
689                                                 are defined in the enumerator BlueVideoFifoStatus.\r
690                                                 */      \r
691         VIDEO_CAPTURE_FIFO_ENGINE_STATUS=54,    /**< this will return the capture  fifo status. \r
692                                                 The values returned by this property are defined in the enumerator BlueVideoFifoStatus.\r
693                                                 */\r
694         VIDEO_2K_1556_PANSCAN=55,/**< this property is deprecated and no longer supported on epoch/create range of cards.*/\r
695         VIDEO_OUTPUT_ENGINE=56, /**< Use this property to set the video engine of the video output channels.\r
696                                 Possible values this property can accept is defined in the enumerator EEngineMode \r
697                                 */\r
698         VIDEO_INPUT_ENGINE=57, /**< Use this property to set the video engine of the video input channels.\r
699                                 Possible values this property can accept is defined in the enumerator EEngineMode \r
700                                 */\r
701         BYPASS_RELAY_A_ENABLE=58, /**< use this property to control the bypass relay on SDI A output.*/\r
702         BYPASS_RELAY_B_ENABLE=59, /**< use this property to control the bypass relay on SDI B output.*/\r
703         VIDEO_PREMULTIPLIER=60,\r
704         VIDEO_PLAYBACK_START_TRIGGER_POINT=61, /**< Using this property you can instruct the driver to start the \r
705                                                 video playback fifo on a particular video output field count.\r
706                                                 Normally video playback fifo is started on the next video interrupt after \r
707                                                 the video_playback_start call.*/\r
708         GENLOCK_TIMING=62,\r
709         VIDEO_IMAGE_PITCH=63,\r
710         VIDEO_IMAGE_OFFSET=64,\r
711         VIDEO_INPUT_IMAGE_WIDTH=65,\r
712         VIDEO_INPUT_IMAGE_HEIGHT=66,\r
713         VIDEO_INPUT_IMAGE_PITCH=67,\r
714         VIDEO_INPUT_IMAGE_OFFSET=68,\r
715         TIMECODE_RP188=69,      /**< this property is deprecated and no longer supported on epoch/create range of cards.*/\r
716         BOARD_TEMPERATURE=70,/**<This property can be used to retreive the Board temperature, core temperature and \r
717                                 RPM of the Fan on epoch/create range of cards.<br/>\r
718                                 Use the macro's EPOCH_CORE_TEMP ,EPOCH_BOARD_TEMP and EPOCH_FAN_SPEED\r
719                                 to retireive the respective values from the property.<br/>                                                      \r
720                                                 */      \r
721         MR2_ROUTING=71, /**< Use this property to control the MR2 functionlity on epoch range of cards.\r
722                         Use the following macro with this property.<br/>\r
723                         1) EPOCH_SET_ROUTING --> for setting the source, destination and link type of the routing connection,<br/>\r
724                         2) EPOCH_ROUTING_GET_SRC_DATA --> for getting the routing source.<br/>\r
725                                                         The possible source and destination elements supported by the routing matrix are defined in the \r
726                                                         enumerator EEpochRoutingElements.<br/>\r
727                         */\r
728         SAVEAS_POWERUP_SETTINGS=72,\r
729         VIDEO_CAPTURE_AVAIL_BUFFER_COUNT=73, /**< This property will return the number of captured frame avail in the fifo at present.\r
730                                                 If the video engine  is framestore this will give you the number of buffers that the framestore mode \r
731                                                 can you use with that video input channel */\r
732         EPOCH_APP_WATCHDOG_TIMER=74,/**< Use this property to control the application  watchdog timer functionality. \r
733                                         Possible values this property can accept is defined in the enumerator enum_blue_app_watchdog_timer_prop.\r
734                                 */      \r
735         EPOCH_RESET_VIDEO_INPUT_FIELDCOUNT=75, /**< Use this property to reset the field count on both the \r
736                                                 video channels of the card. You can pass the value that \r
737                                                 should be used as starting fieldcount after the reset.\r
738                                                 This property can be used to keep track  sync between left and right signal \r
739                                                 when you are capturing in stereoscopic mode.\r
740                                         */\r
741         EPOCH_RS422_PORT_FLAGS=76,/**<  Use this property to set the master/slave property of the RS422 ports.\r
742                                 Possible values this property can accept is defined in the enumerator enum_blue_rs422_port_flags.\r
743                                 */\r
744         EPOCH_DVB_ASI_INPUT_TIMEOUT=77, /**< Current DVB ASI input firmware does not support this property in hardware,\r
745                                         this is a future addition.\r
746                                         Use this property to set the timeout  of the DVB ASI input stream. \r
747                                         timeout is specified in  milliseconds.If hardware did not get the required no of                \r
748                                         packets( specified using EPOCH_DVB_ASI_INPUT_LATENCY_PACKET_COUNT)\r
749                                         within the period specified in the timeout, hardware would generate a video input interrupt\r
750                                         and it would be safe to read the dvb asi packet from the card.\r
751                                         */\r
752         EPOCH_DVB_ASI_INPUT_PACKING_FORMAT=78, /**< Use this property to specify the packing method that should be used \r
753                                                 when capturing DVB ASI packets.\r
754                                                 The possible packing methods are defined in the enumerator enum_blue_dvb_asi_packing_format.*/\r
755         EPOCH_DVB_ASI_INPUT_LATENCY_PACKET_COUNT=79, /**< Use this property to set  how many asi packets should be captured by the card , before it \r
756                                                         notifies the driver of available data using video input interrupt.<br/>\r
757                                                         */\r
758         VIDEO_PLAYBACK_FIFO_CURRENT_FRAME_UNIQUEID=80, /**< This property can be used to query the current unique id of \r
759                                                         the frame that is being displayed currently by the video output channel. This \r
760                                                         property is only usefull in the context of video fifo.<br/>\r
761                                                         You get a uniqueid when you present a frame using video_playback_present function.\r
762                                                         Alternative ways to get this information are <br/>\r
763                                                         1) using blue_wait_video_sync_async , the member current_display_frame_uniqueid contains the same information<br/>\r
764                                                         2) using wait_video_output_sync function on epoch cards, if \r
765                                                         the flag UPD_FMT_FLAG_RETURN_CURRENT_UNIQUEID is appended with \r
766                                                         either UPD_FMT_FRAME or UPD_FMT_FIELD , the return value of \r
767                                                         the function wait_video_output_sync woukd contain the current display\r
768                                                         frames uniqueid.<br/>*/\r
769 \r
770         EPOCH_DVB_ASI_INPUT_GET_PACKET_SIZE = 81,/**< use this property to get the size of each asi transport stream packet\r
771                                                         (whether it is 188 or 204.*/\r
772         EPOCH_DVB_ASI_INPUT_PACKET_COUNT = 82,/**< this property would give you the number of packets captured during the last \r
773                                                 interrupt time frame. For ASI interrupt is generated if \r
774                                                 hardware captured the requested number of packets or it hit the \r
775                                                 timeout value\r
776                                                 */\r
777         EPOCH_DVB_ASI_INPUT_LIVE_PACKET_COUNT = 83,/**< this property would give you the number of packets that\r
778                                                 is being captured during the current interrupt time frame. \r
779                                                 For ASI interrupt is generated when has hardware captured the \r
780                                                 requested number of packets specified using  \r
781                                                 EPOCH_DVB_ASI_INPUT_LATENCY_PACKET_COUNT property.\r
782                                                 */\r
783         EPOCH_DVB_ASI_INPUT_AVAIL_PACKETS_IN_FIFO = 84,/**< This property would return the number of ASI packets \r
784                                                         that has been captured into card memory , that\r
785                                                         can be retreived.\r
786                                                         This property is only valid when the video input \r
787                                                         channel is being used in FIFO modes.\r
788                                                 */\r
789         EPOCH_ROUTING_SOURCE_VIDEO_MODE=VIDEO_SCALER_MODE,/**< Use this property to change the video mode that scaler should be set to.\r
790                                                         USe the macro SET_EPOCH_SCALER_MODE when using this property, as this macro \r
791                                                         would allow you to select which one of the scaler blocks video mode should be updated.\r
792                                                         */\r
793         EPOCH_AVAIL_VIDEO_SCALER_COUNT=85,/**< This property would return available scaler processing block available on the card.*/\r
794         EPOCH_ENUM_AVAIL_VIDEO_SCALERS_ID=86,/**< You can enumerate the available scaler processing block available on the card using this property.\r
795                                         You pass in the index value as input parameter to get the scaler id that should be used.\r
796                                         Applications are recommended to use this property to query the available scaler id's \r
797                                         rather than hardcoding a scaler id. As the scaler id's that you can use would vary based on\r
798                                         whether you have VPS0 or VPS1 boards loaded on the base board.\r
799                                         */\r
800         EPOCH_ALLOCATE_VIDEO_SCALER=87, /**< This is just a helper property for applications who need to use more than one scaler\r
801                                         and just wants to query the next available scaler from the driver pool, rather than hardcoding \r
802                                         each thread to use a particular scaler.\r
803                                         Allocate a free scaler from the available scaler pool.\r
804                                         User has got the option to specify whether they want to use the scaler for \r
805                                         use with a single link or dual link stream */\r
806         EPOCH_RELEASE_VIDEO_SCALER=88, /**< Release the previously allocated scaler processing block back to the free pool.\r
807                                         If the user passes in a value of 0, all the allocated scaler blocks in the driver are released.\r
808                                         So effectively\r
809                                         */\r
810         EPOCH_DMA_CARDMEMORY_PITCH=89,\r
811         EPOCH_OUTPUT_CHANNEL_AV_OFFSET=90,\r
812         EPOCH_SCALER_CHANNEL_MUX_MODE=91,\r
813         EPOCH_INPUT_CHANNEL_AV_OFFSET=92,\r
814         EPOCH_AUDIOOUTPUT_MANUAL_UCZV_GENERATION=93,/* ASI firmware only */\r
815         EPOCH_SAMPLE_RATE_CONVERTER_BYPASS=94,\r
816         EPOCH_GET_PRODUCT_ID=95,                                        /* returns the enum for the firmware type EEpochFirmwareProductID */\r
817         EPOCH_GENLOCK_IS_LOCKED=96,\r
818         EPOCH_DVB_ASI_OUTPUT_PACKET_COUNT=97,           /* ASI firmware only */\r
819         EPOCH_DVB_ASI_OUTPUT_BIT_RATE=98,                       /* ASI firmware only */\r
820         EPOCH_DVB_ASI_DUPLICATE_OUTPUT_A=99,            /* ASI firmware only */\r
821         EPOCH_DVB_ASI_DUPLICATE_OUTPUT_B=100,           /* ASI firmware only */\r
822         EPOCH_SCALER_HORIZONTAL_FLIP=101,                       /* see SideBySide_3D sample application */\r
823         EPOCH_CONNECTOR_DIRECTION=102,                          /* see application notes */\r
824         EPOCH_AUDIOOUTPUT_VALIDITY_BITS=103,            /* ASI firmware only */\r
825         EPOCH_SIZEOF_DRIVER_ALLOCATED_MEMORY=104,       /* video buffer allocated in Kernel space; accessible in userland via system_buffer_map() */\r
826         INVALID_VIDEO_MODE_FLAG=105,                            /* returns the enum for VID_FMT_INVALID that this SDK/Driver was compiled with;\r
827                                                                                                 it changed between 5.9.x.x and 5.10.x.x driver branch and has to be handled differently for\r
828                                                                                                 each driver if the application wants to use the VID_FMT_INVALID flag and support both driver branches */\r
829         EPOCH_VIDEO_INPUT_VPID=106,                                     /* returns the VPID for the current video input signal */\r
830         EPOCH_LOW_LATENCY_DMA=107,                                      /* not fully supported yet */\r
831         EPOCH_VIDEO_INPUT_RGB_DATA_RANGE=108,\r
832 \r
833         VIDEO_CARDPROPERTY_INVALID=1000\r
834 }EBlueCardProperty;\r
835 \r
836 \r
837 typedef enum _EAnalogConnectorSignalType\r
838 {\r
839         ANALOG_OUTPUTSIGNAL_CVBS_Y_C=1,\r
840         ANALOG_OUTPUTSIGNAL_COMPONENT=2,\r
841         ANALOG_OUTPUTSIGNAL_RGB=4\r
842 }EAnalogConnectorSignalType;\r
843 \r
844 /**<\r
845 @brief Use this enumerator to set the analog video signal types and connectors.\r
846 */\r
847 typedef enum _EAnalogInputConnectorType \r
848 {\r
849 /* Composite input */\r
850         ANALOG_VIDEO_INPUT_CVBS_AIN1=0x00, /**<only available on Mini COAX */\r
851         ANALOG_VIDEO_INPUT_CVBS_AIN2=0x01, /**<available on both Mini COAX and Mini DIN*/\r
852         ANALOG_VIDEO_INPUT_CVBS_AIN3=0x02, /**<available on both Mini COAX and Mini DIN*/\r
853         ANALOG_VIDEO_INPUT_CVBS_AIN4=0x03, /**<only available on Mini COAX */\r
854         ANALOG_VIDEO_INPUT_CVBS_AIN5=0x04, /**<only available on Mini COAX */\r
855         ANALOG_VIDEO_INPUT_CVBS_AIN6=0x05, /**<available on both Mini COAX and Mini DIN */\r
856 \r
857 /*svideo input*/\r
858 //Y_C is a synonym for svideo\r
859         ANALOG_VIDEO_INPUT_Y_C_AIN1_AIN4=0x06, /**<only available on Mini COAX*/\r
860         ANALOG_VIDEO_INPUT_Y_C_AIN2_AIN5=0x07, /**<only available on Mini COAX*/\r
861         ANALOG_VIDEO_INPUT_Y_C_AIN3_AIN6=0x08, /**<available on both Mini COAX and Mini DIN*/\r
862 \r
863 /*YUV input*/\r
864         ANALOG_VIDEO_INPUT_YUV_AIN1_AIN4_AIN5=0x09, /**<only available on Mini COAX*/\r
865         ANALOG_VIDEO_INPUT_YUV_AIN2_AIN3_AIN6=0x0a, /**<available on both Mini COAX and Mini DIN*/\r
866         ANALOG_VIDEO_INPUT_USE_SDI_A=0x6F,      \r
867         ANALOG_VIDEO_INPUT_USE_SDI=0x7F,\r
868         GENERIC_ANALOG_VIDEO_SOURCE=0x8F,\r
869         ANALOG_VIDEO_INPUT_USE_SDI_B=ANALOG_VIDEO_INPUT_USE_SDI\r
870 }EAnalogInputConnectorType;\r
871 \r
872 \r
873 typedef enum {\r
874         ANALOG_VIDEO_INPUT_CONNECTOR,//EAnalogInputConnectorType\r
875         ANALOG_VIDEO_INPUT_PED,\r
876         ANALOG_VIDEO_INPUT_BRIGHTNESS,\r
877         ANALOG_VIDEO_INPUT_HUE,\r
878         ANALOG_VIDEO_INPUT_LUMA_GAIN,\r
879         ANALOG_VIDEO_INPUT_CHROMA_GAIN,\r
880         ANALOG_VIDEO_INPUT_AUTO_GAIN,\r
881         ANALOG_VIDEO_INPUT_LOAD_DEFAULT_SETTING,        \r
882         ANALOG_VIDEO_OUTPUT_PED,\r
883         ANALOG_VIDEO_OUTPUT_BRIGHTNESS,\r
884         ANALOG_VIDEO_OUTPUT_HUE,\r
885         ANALOG_VIDEO_OUTPUT_LUMA_GAIN,\r
886         ANALOG_VIDEO_OUTPUT_CHROMA_GAIN,        \r
887         ANALOG_VIDEO_OUTPUT_SHARPNESS,\r
888         ANALOG_VIDEO_OUTPUT_AUTO_GAIN,\r
889         ANALOG_VIDEO_OUTPUT_LOAD_DEFAULT_SETTING,\r
890         ANALOG_VIDEO_OUTPUT_SIGNAL_TYPE,//_EAnalogConnectorSignalType\r
891         ANALOG_LOAD_BLUEFISH_DEFAULT_SETTING,\r
892         ANALOG_SET_AS_POWERUP_SETTINGS,\r
893         ANALOG_LOAD_POWERUP_SETTINGS,\r
894         ANALOG_CONNECTOR_STATUS\r
895 } AnalogCard_Property;\r
896 \r
897 typedef struct {\r
898         BLUE_INT32 inputConnector;                      //ANALOG_VIDEO_INPUT_CONNECTOR, EAnalogInputConnectorType\r
899         BLUE_INT32 inputPed;                            //ANALOG_VIDEO_INPUT_PED,\r
900         BLUE_INT32 inputBrightness;             //ANALOG_VIDEO_INPUT_BRIGHTNESS,\r
901         BLUE_INT32 inputHue;                            //ANALOG_VIDEO_INPUT_HUE,\r
902         BLUE_INT32 inputLumaGain;                       //ANALOG_VIDEO_INPUT_LUMA_GAIN,\r
903         BLUE_INT32 inputChromaGain;             //ANALOG_VIDEO_INPUT_CHROMA_GAIN,\r
904         BLUE_INT32 inputAutoGain;                       //ANALOG_VIDEO_INPUT_AUTO_GAIN,\r
905         BLUE_INT32 outputPed;                           //ANALOG_VIDEO_OUTPUT_PED,\r
906         BLUE_INT32 outputBrightness;            //ANALOG_VIDEO_OUTPUT_BRIGHTNESS,\r
907         BLUE_INT32 outputHue;                           //ANALOG_VIDEO_OUTPUT_HUE,\r
908         BLUE_INT32 outputYGain;                 //ANALOG_VIDEO_OUTPUT_Y_GAIN,\r
909         BLUE_INT32 outputUGain;                 //ANALOG_VIDEO_OUTPUT_U_GAIN,\r
910         BLUE_INT32 outputVGain;                 //ANALOG_VIDEO_OUTPUT_V_GAIN,\r
911         BLUE_INT32 outputSharpness;             //ANALOG_VIDEO_OUTPUT_SHARPNESS,\r
912         BLUE_INT32 outputAutoGain;                      //ANALOG_VIDEO_OUTPUT_AUTO_GAIN,\r
913         BLUE_INT32 outputSignalTypes;           //EAnalogConnectorSignalType\r
914 }AnalogCardState;\r
915 \r
916 //----------------------------------------------------------------------------------------------------\r
917 /**< brief Used to determine how video interrupts are handled*/\r
918 typedef enum _EEngineMode\r
919 {\r
920         VIDEO_ENGINE_FRAMESTORE=0,      /**< framestore engine. In this mode user is responsible for \r
921                                                                          schduling a capture or playback after waiting for the \r
922                                                                          respective video sync;s*/\r
923         VIDEO_ENGINE_PLAYBACK=1,        /**< Playback engine. In this mode there is a driver FIFO, which \r
924                                                                         is reponisble for scheudling a frame for  playback.\r
925                                                                         User just adds video frames into the fifo.*/\r
926         VIDEO_ENGINE_CAPTURE=2,         /**< Capture engine  In this mode there is a driver FIFO, which \r
927                                                                         is reponisble for scheudling a frame for capture.\r
928                                                                         User just retreives video frames from the FIFO.*/\r
929         VIDEO_ENGINE_PAGEFLIP=3,        /**< not supported any more */\r
930         VIDEO_ENGINE_DUPLEX=4,          /**< Full Duplex video. This is a FIFO mode. Use this mode if you want \r
931                                                                 to capture and playback at the same time.*/\r
932         VIDEO_ENGINE_INVALID\r
933 } EEngineMode;\r
934 \r
935 /**< use this enumerator for controlling emb audio output properties using the \r
936          property EMBEDDED_AUDIO_OUTPUT.        \r
937 */\r
938 typedef enum _EBlueEmbAudioOutput\r
939 {\r
940         blue_emb_audio_enable=0x1,      // Switches off/on  the whole HANC output from connecotrs associated with the channel\r
941         blue_auto_aes_to_emb_audio_encoder=0x2, //control whether the auto aes to emb thread should be running or not.\r
942         blue_emb_audio_group1_enable=0x4, /**< enables group1(ch 0-  3) emb audio */\r
943         blue_emb_audio_group2_enable=0x8, /**< enables group2(ch 4-  7) emb audio */\r
944         blue_emb_audio_group3_enable=0x10, /**< enables group3(ch 8-  11) emb audio */\r
945         blue_emb_audio_group4_enable=0x20, /**< enables group4(ch 12-  16) emb audio */\r
946         blue_enable_hanc_timestamp_pkt = 0x40\r
947 }EBlueEmbAudioOutput;\r
948 \r
949 \r
950 /**< Not used any more */\r
951 typedef enum _EBufferTarget\r
952 {\r
953         BUFFER_TARGET_VIDEO=0,          // Generic R/W DMA\r
954         BUFFER_TARGET_AUDIO,            // Special processing required for audio\r
955         BUFFER_TARGET_VIDEO_8BIT,       // Special R/W DMA utilising 8 bit aperture\r
956         BUFFER_TARGET_VIDEO_HALF,       // Special R/W DMA every second line (currently unused)\r
957         BUFFER_TARGET_VIDEO_OUT,        // Updates video out register on DMA completion for write \r
958         BUFFER_TARGET_INVALID\r
959 } EBufferTarget;\r
960 \r
961 #define BUFFER_TYPE_VIDEO               (0)\r
962 #define BUFFER_TYPE_AUDIO               (1)\r
963 #define BUFFER_TYPE_VIDEO_8BIT  (2)     // use this when assigning a buffer to indicate DMA from aperture!\r
964 #define BUFFER_TYPE_VIDEO_OUT   (3)     // On DMA start set video output address to DMA target\r
965 #define BUFFER_TYPE_VIDEO_HALF  (4)     // DMA every second line...\r
966 \r
967 // Buffer identifiers\r
968 #define BUFFER_ID_AUDIO_IN              (0)\r
969 #define BUFFER_ID_AUDIO_OUT             (1)\r
970 #define BUFFER_ID_VIDEO0                (2)\r
971 #define BUFFER_ID_VIDEO1                (3)\r
972 #define BUFFER_ID_VIDEO2                (4)\r
973 #define BUFFER_ID_VIDEO3                (5)\r
974 \r
975 //#define       BUFFER_ID_USER_BASE             (6)\r
976 \r
977 \r
978 \r
979 #define VIDEO_BORDER_TOP                (0x10000000)\r
980 #define VIDEO_BORDER_BOTTOM             (0x20000000)\r
981 #define VIDEO_BORDER_LEFT               (0x40000000)\r
982 #define VIDEO_BORDER_RIGHT              (0x80000000)\r
983 \r
984 typedef struct _AnalogCardPropStruct\r
985 {\r
986         BLUE_UINT32 VideoChannel;\r
987         BLUE_INT32  prop;\r
988         BLUE_INT32  value;\r
989         BLUE_INT32  minValue;\r
990         BLUE_INT32  maxValue;\r
991         BLUE_INT32  bReadFlag;\r
992 }AnalogCardPropStruct;\r
993 \r
994 typedef enum _EConnectorSignalFormatType\r
995 {\r
996         Signal_Type_4444 =1,\r
997         Signal_Type_4224 =0,\r
998         Signal_Type_422=2\r
999 }EConnectorSignalFormatType;\r
1000 \r
1001 typedef enum _EDMADirection\r
1002 {\r
1003         DMA_WRITE=0,\r
1004         DMA_READ=1,\r
1005         DMA_INVALID=2\r
1006 }EDMADirection;                 \r
1007 \r
1008 \r
1009 typedef enum _MatrixColType\r
1010 {\r
1011         COL_BLUE_PB=0,\r
1012         COL_RED_PR=1,\r
1013         COL_GREEN_Y=2,\r
1014         COL_KEY=3\r
1015 }MatrixColType;\r
1016 \r
1017 \r
1018 \r
1019 \r
1020 /**< Bits defining supported features that can be used with VideoFeature_struct*/\r
1021 #define VIDEO_CAPS_INPUT_SDI                                    (0x00000001)    /**<  Capable of input of SDI Video */\r
1022 #define VIDEO_CAPS_OUTPUT_SDI                                   (0x00000002)    /**<  Capable of output of SDI Video */\r
1023 #define VIDEO_CAPS_INPUT_COMP                                   (0x00000004)    /**<  Capable of capturing Composite Video input */\r
1024 #define VIDEO_CAPS_OUTPUT_COMP                                  (0x00000008)    /**<  Capable of capturing Composite Video output */\r
1025 \r
1026 #define VIDEO_CAPS_INPUT_YUV                                    (0x00000010)    /**<  Capable of capturing Component Video input */\r
1027 #define VIDEO_CAPS_OUTPUT_YUV                                   (0x00000020)    /**<  Capable of capturing Component Video output */\r
1028 #define VIDEO_CAPS_INPUT_SVIDEO                                 (0x00000040)    /**<  Capable of capturing SVideo input */\r
1029 #define VIDEO_CAPS_OUTPUT_SVIDEO                                (0x00000080)    /**<  Capable of capturing SVideo output */\r
1030 \r
1031 #define VIDEO_CAPS_GENLOCK                                              (0x00000100)    /**<  Able to adjust Vert & Horiz timing */\r
1032 #define VIDEO_CAPS_VERTICAL_FLIP                                (0x00000200)    /**<  Able to flip rasterisation */\r
1033 #define VIDEO_CAPS_KEY_OUTPUT                                   (0x00000400)    /**<  Video keying output capable */\r
1034 #define VIDEO_CAPS_4444_OUTPUT                                  (0x00000800)    /**<  Capable of outputting 4444 (dual link) */\r
1035 \r
1036 #define VIDEO_CAPS_DUALLINK_INPUT                               (0x00001000)    /**<  Dual Link input   */\r
1037 #define VIDEO_CAPS_INTERNAL_KEYER                               (0x00002000)    /**<  Has got an internal Keyer */\r
1038 #define VIDEO_CAPS_RGB_COLORSPACE_SDI_CONN              (0x00004000)    /**<  Support RGB colorspace  in on an  SDI connector  */\r
1039 #define VIDEO_CAPS_HAS_PILLOR_BOX                               (0x00008000)    /**<  Has got support for pillor box */\r
1040 \r
1041 #define VIDEO_CAPS_OUTPUT_RGB                                   (0x00010000)    /**<  Has Analog RGB output connector  */\r
1042 #define VIDEO_CAPS_SCALED_RGB                                   (0x00020000)    /**<  Can scale RGB colour space */\r
1043 #define AUDIO_CAPS_PLAYBACK                                     (0x00040000)    /**<  Has got audio output */\r
1044 #define AUDIO_CAPS_CAPTURE                                              (0x00080000)\r
1045 \r
1046 #define VIDEO_CAPS_DOWNCONVERTER                                (0x00100000)\r
1047 #define VIDEO_CAPS_DUALOUTPUT_422_IND_STREAM    (0x00200000)    /**<  Specifies whether the card supports Dual Indepenedent 422 output streams */\r
1048 #define VIDEO_CAPS_DUALINPUT_422_IND_STREAM             (0x00400000)    /**<  Specifies whether the card supports Dual Indepenedent 422 input streams */\r
1049 \r
1050 #define VIDEO_CAPS_VBI_OUTPUT                                   (0x00800000)    /**<  Specifies whether the card supports VBI output */\r
1051 #define VIDEO_CAPS_VBI_INPUT                                    (0x04000000)    /**<  Specifies whether the card supports VBI input */  \r
1052 \r
1053 #define VIDEO_CAPS_HANC_OUTPUT                                  (0x02000000)\r
1054 #define VIDEO_CAPS_HANC_INPUT                                   (0x04000000)\r
1055 \r
1056 #define VIDEO_CAPS_FOUND_VPS0                                   VIDEO_CAPS_DOWNCONVERTER        /**< specifies whether the VPS0 scaler board was found on the card */\r
1057 #define VIDEO_CAPS_FOUND_VPS1                                   (0x10000000)                            /**< specifies whether the VPS1 scaler board was found on the card */\r
1058 #define VIDEO_CAPS_FOUND_VPIO                                   (0x20000000)                            /**< specifies whether the VPIO(DVI daughter board)board was found on the card */\r
1059 \r
1060 /*\r
1061 #define VIDEO_CAPS_DUALOUTPUT_422_IND_STREAM    (0x00100000)    // Specifies whether the card supports Dual Indepenedent 422 output streams\r
1062 #define VIDEO_CAPS_DUALINPUT_422_IND_STREAM             (0x00200000)    // Specifies whether the card supports Dual Indepenedent 422 input streams\r
1063 \r
1064 #define VIDEO_CAPS_VBI_OUTPUT                                   (0x00400000)\r
1065 #define VIDEO_CAPS_VBI_INPUT                                    (0x00800000)\r
1066 \r
1067 #define VIDEO_CAPS_HANC_OUTPUT                                  (0x01000000)\r
1068 #define VIDEO_CAPS_HANC_INPUT                                   (0x02000000)\r
1069 */\r
1070 \r
1071 #define BLUE_CARD_BUFFER_TYPE_OFFSET            (12)\r
1072 #define BLUE_DMA_DATA_TYPE_OFFSET                       (16)\r
1073 #define BLUE_DMA_FLAGS_OFFSET                           (20)\r
1074 #define GetDMACardBufferId(value)                       (value & 0xFFF)\r
1075 #define GetCardBufferType(value)                        ((value & 0xF000) >> BLUE_CARD_BUFFER_TYPE_OFFSET)\r
1076 #define GetDMADataType(value)                           ((value & 0xF0000) >> BLUE_DMA_DATA_TYPE_OFFSET)\r
1077 #define GetDMAFlags(value)                                      ((value & 0xF00000) >> (BLUE_DMA_FLAGS_OFFSET))\r
1078 \r
1079 \r
1080 #define Blue_DMABuffer(CardBufferType,BufferId,DataType)                ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
1081                                                                                                                                 ( CardBufferType<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
1082                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
1083 \r
1084 #define BlueImage_VBI_DMABuffer(BufferId,DataType)                              ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
1085                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE_VBI<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
1086                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
1087 \r
1088 #define BlueImage_DMABuffer(BufferId,DataType)                                  ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
1089                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
1090                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
1091 \r
1092 #define BlueImage_VBI_HANC_DMABuffer(BufferId,DataType)                 ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
1093                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE_VBI_HANC<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
1094                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
1095 \r
1096 #define BlueImage_HANC_DMABuffer(BufferId,DataType)                             ( (((ULONG)DataType&0xF)<<(ULONG)BLUE_DMA_DATA_TYPE_OFFSET)| \\r
1097                                                                                                                                 ( BLUE_CARDBUFFER_IMAGE_HANC<<(ULONG)BLUE_CARD_BUFFER_TYPE_OFFSET) | \\r
1098                                                                                                                                 ( ((ULONG)BufferId&0xFFF)) |0)\r
1099 \r
1100 \r
1101 #define BlueBuffer(CardBufferType,BufferId)                     (((CardBufferType)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
1102 #define BlueBuffer_Image_VBI(BufferId)                          (((BLUE_CARDBUFFER_IMAGE_VBI)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
1103 #define BlueBuffer_Image(BufferId)                                      (((BLUE_CARDBUFFER_IMAGE)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
1104 #define BlueBuffer_Image_VBI_HANC(BufferId)                     (((BLUE_CARDBUFFER_IMAGE_VBI_HANC)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
1105 #define BlueBuffer_Image_HANC(BufferId)                         (((BLUE_CARDBUFFER_IMAGE_HANC)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
1106 #define BlueBuffer_HANC(BufferId)                                       (((BLUE_CARDBUFFER_HANC)<<BLUE_CARD_BUFFER_TYPE_OFFSET)|((BufferId&0xFFF))|0)\r
1107 \r
1108 #define BYPASS_RELAY_A                                                          (0x00000001) // enable bypass relay channel a when loading driver , only used in linux \r
1109 #define BYPASS_RELAY_B                                                          (0x00000002) // enable bypass relay channel a when loading driver , only used in linux \r
1110 typedef enum _EDMACardBufferType\r
1111 {\r
1112         BLUE_CARDBUFFER_IMAGE=0,\r
1113         BLUE_CARDBUFFER_IMAGE_VBI_HANC=1,\r
1114         BLUE_CARDBUFFER_IMAGE_VBI=2,\r
1115         BLUE_CARDBUFFER_AUDIO_OUT=3,\r
1116         BLUE_CARDBUFFER_AUDIO_IN=4,\r
1117         BLUE_CARDBUFFER_HANC=5,\r
1118         BLUE_CARDBUFFER_IMAGE_HANC=6,\r
1119         BLUE_CARDBUFFER_INVALID=6\r
1120 }EDMACardBufferType;\r
1121 \r
1122 typedef enum _EDMADataType\r
1123 {\r
1124         BLUE_DATA_FRAME=0,\r
1125         BLUE_DATA_IMAGE=0,\r
1126         BLUE_DATA_FIELD1=1,\r
1127         BLUE_DATA_FIELD2=2,\r
1128         BLUE_DATA_VBI=3,\r
1129         BLUE_DATA_HANC=4,\r
1130         BLUE_DATA_AUDIO_IN=5,\r
1131         BLUE_DATA_AUDIO_OUT=6,\r
1132         BLUE_DATA_FRAME_RDOM=7,\r
1133         BLUE_DATA_FRAME_STEREO_LEFT=BLUE_DATA_FRAME,\r
1134         BLUE_DATA_FRAME_STEREO_RIGHT=8,\r
1135         BLUE_DMADATA_INVALID=9\r
1136 }EDMADataType;\r
1137 \r
1138 typedef struct _AUXILLARY_VIDEO_INFO\r
1139 {\r
1140         BLUE_UINT32  video_channel_id;\r
1141         BLUE_UINT32  lVideoMode;\r
1142         BLUE_UINT32  lUniqueId;\r
1143         BLUE_UINT32  lInfoType;\r
1144         BLUE_UINT32  lMemFmt;\r
1145         BLUE_UINT32  lGpio;\r
1146         BLUE_UINT64  lLTC;\r
1147 }Auxillary_Video_Info;\r
1148 \r
1149 \r
1150 typedef enum _EBlueVideoAuxInfoType\r
1151 {\r
1152         BLUE_VIDEO_AUX_MEMFMT_CHANGE=1,\r
1153         BLUE_VIDEO_AUX_UPDATE_LTC=2,\r
1154         BLUE_VIDEO_AUX_UPDATE_GPIO=4,\r
1155         BLUE_VIDEO_AUX_VIDFMT_CHANGE=8,\r
1156 \r
1157 }EBlueVideoAuxInfoType;\r
1158 // Max of 4 bits \r
1159 \r
1160 #define GET_ANALOG_AUDIO_LEFT_ROUTINGCHANNEL(value)                             (value&0xFF)\r
1161 #define GET_ANALOG_AUDIO_RIGHT_ROUTINGCHANNEL(value)                    ((value&0xFF00)>>8)\r
1162 #define SET_ANALOG_AUDIO_ROUTINGCHANNEL(left,right)                             (((right & 0xFF)<<8)|(left & 0xFF))\r
1163 #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
1164 #define GET_AUDIO_OUTPUT_SRC_CHANNEL_ROUTING(value)                             ((value>>16) & 0x7F)\r
1165 #define GET_AUDIO_OUTPUT_CHANNEL_ROUTING(value)                                 ((value>>23) & 0x3F)\r
1166 #define GET_AUDIO_OUTPUT_TYPE_ROUTING(value)                                    ((value & 0x60000000)>>29)\r
1167 \r
1168 #define AUDIO_INPUT_SOURCE_SELECT_FLAG                                                  (1<<16) \r
1169 #define AUDIO_INPUT_SOURCE_SELECT(SynchCount,AudioInputSource)  (AUDIO_INPUT_SOURCE_SELECT_FLAG|(SynchCount)|(AudioInputSource<<17))\r
1170 \r
1171 struct blue_video_connection_routing_struct\r
1172 {\r
1173         BLUE_UINT32 video_channel;\r
1174         BLUE_UINT32 duallink_flag;\r
1175         BLUE_UINT32 link1_connector;\r
1176         BLUE_UINT32 link2_connector;\r
1177 };\r
1178 \r
1179 #pragma pack(push, video_sync_struct, 1)\r
1180 typedef struct _blue_video_sync_struct\r
1181 {\r
1182         BLUE_UINT32     sync_wait_type;// field or frame\r
1183         BLUE_UINT32     video_channel; // which video channel interrupt should the interrupt wait for \r
1184         BLUE_UINT32     timeout_video_msc;      //if the current video msc is equal to this one insert it into the queue.\r
1185         BLUE_UINT32     video_msc;              //current video msc\r
1186         BLUE_UINT32 current_display_frame_id; // would give you the current frame id which is being displayed\r
1187         BLUE_UINT32 current_display_frame_uniqueid; // would give you the unique id associated with current frame id which is being displayed\r
1188                                                                                                 // this is only valid when using fifo modes.\r
1189         BLUE_UINT8  pad[24];\r
1190 }blue_video_sync_struct;\r
1191 #pragma pack(pop,video_sync_struct)\r
1192 \r
1193 \r
1194 typedef enum _EBlueLUTType\r
1195 {\r
1196         BLUE_MAIN_LUT_B_Pb=0,\r
1197         BLUE_MAIN_LUT_G_Y=1,\r
1198         BLUE_MAIN_LUT_R_Pr=2,\r
1199         BLUE_AUX_LUT_B_Pb=3,\r
1200         BLUE_AUX_LUT_G_Y=4,\r
1201         BLUE_AUX_LUT_R_Pr=5,\r
1202 }EBlueLUTType;\r
1203 \r
1204 #pragma pack(push, video_frame, 1)\r
1205 struct VideoFeature_struct \r
1206 {\r
1207         BLUE_UINT32  Type;                   // Bluefish card type\r
1208         BLUE_UINT32  CardSubType;               \r
1209         BLUE_UINT32  Bus;                    // Which PIC bus (bridge) it is on\r
1210         BLUE_UINT32  Slot;                   // Which slot card is plugged into\r
1211         BLUE_UINT32  Feature;                //  Look at  the _EBlueFishCardFeatures  definition to know what each bit mean\r
1212         BLUE_UINT32  FirmwareVersion;\r
1213 };\r
1214 \r
1215 struct blue_videoframe_info\r
1216 {\r
1217         BLUE_UINT64 ltcTimeCode;\r
1218         unsigned long videochannel;\r
1219         unsigned long BufferId;\r
1220         unsigned long Count;\r
1221         unsigned long DroppedFrameCount;\r
1222 };\r
1223 \r
1224 struct blue_videoframe_info_ex\r
1225 {\r
1226         BLUE_UINT64 ltcTimeCode;                        //LTC timecode\r
1227         unsigned long videochannel;                     //the channel this frame was captured from\r
1228         long BufferId;                                          //this buffer contains the captured frame\r
1229         unsigned long Count;                            //total captured frames\r
1230         unsigned long DroppedFrameCount;        //dropped frame count\r
1231         unsigned long nFrameTimeStamp;          //field count the frame was captured at\r
1232         unsigned long nVideoSignalType;         //video mode of this frame\r
1233         unsigned int  nASIPktCount;                     //only for DVB-ASI; how many ASI packets are in this frame\r
1234         unsigned int  nASIPktSize;                      //only for DVB-ASI; how many bytes per packet\r
1235         unsigned int  nAudioValidityBits;       //part of the channels status block for audio\r
1236         unsigned char pad[20];                          //not used\r
1237 };\r
1238 \r
1239 struct blue_1d_lookup_table_struct\r
1240 {\r
1241         BLUE_UINT32 nVideoChannel;\r
1242         BLUE_UINT32  nLUTId;\r
1243         BLUE_UINT16 * pLUTData;\r
1244         BLUE_UINT32  nLUTElementCount;  \r
1245         BLUE_UINT8      pad[256];\r
1246 };\r
1247 #pragma pack(pop, video_frame)\r
1248 \r
1249 #pragma pack(push, blue_dma_request, 1)\r
1250 struct blue_dma_request_struct\r
1251 {\r
1252         unsigned char * pBuffer;\r
1253         BLUE_UINT32 video_channel;\r
1254         BLUE_UINT32     BufferId;\r
1255         unsigned int BufferDataType;\r
1256         unsigned int FrameType;\r
1257         unsigned int BufferSize;\r
1258         unsigned int Offset;\r
1259         unsigned long   BytesTransferred;\r
1260         unsigned char pad[64];\r
1261 };\r
1262 \r
1263 enum SerialPort_struct_flags\r
1264 {\r
1265         SerialPort_Read=1,\r
1266         SerialPort_Write=2,\r
1267         SerialPort_TX_Queue_Status=4,           \r
1268         SerialPort_RX_Queue_Status=8,\r
1269         SerialPort_RX_FlushBuffer=16,\r
1270         SerialPort_RX_IntWait_Return_On_Data=32,\r
1271         \r
1272 };\r
1273 \r
1274 struct SerialPort_struct\r
1275 {\r
1276         unsigned char   Buffer[64];\r
1277         unsigned int    nBufLength;\r
1278         unsigned int    nSerialPortId;\r
1279         unsigned int    bFlag; // SerialPort_struct_flags \r
1280         unsigned short  sTimeOut; \r
1281 };\r
1282 \r
1283 \r
1284 struct blue_video_scaler_ceofficent\r
1285 {\r
1286         BLUE_UINT32 ioctl_read_only_flag;\r
1287         BLUE_UINT32 nScalerId;\r
1288         BLUE_UINT32 nScalerFilterType;\r
1289         BLUE_UINT32 nScalerCoefficentWeight[15];\r
1290 };\r
1291 \r
1292 enum blue_video_scaler_param_flags\r
1293 {\r
1294         scaler_flags_set_destrect_as_framesize = 0x1,\r
1295 };\r
1296 \r
1297 struct blue_video_scaler_param_struct\r
1298 {\r
1299         BLUE_UINT32 ioctl_read_only_flag;\r
1300         BLUE_UINT32 nScalerId;\r
1301         BLUE_UINT32 nSrcVideoHeight;\r
1302         BLUE_UINT32 nSrcVideoWidth;\r
1303         BLUE_UINT32 nSrcVideoYPos;\r
1304         BLUE_UINT32 nSrcVideoXPos;\r
1305         BLUE_UINT32 nDestVideoHeight;\r
1306         BLUE_UINT32 nDestVideoWidth;\r
1307         BLUE_UINT32 nDestVideoYPos;\r
1308         BLUE_UINT32 nDestVideoXPos;\r
1309         BLUE_UINT32 nHScaleFactor;\r
1310         BLUE_UINT32 nVScaleFactor;\r
1311         BLUE_UINT32 nScalerOutputVideoMode;\r
1312         BLUE_UINT32 nScalerParamFlags;\r
1313         BLUE_UINT32 pad[128];\r
1314 };\r
1315 #ifndef EXCLUDE_USERLAND_STRUCT\r
1316 struct blue_color_matrix_struct{\r
1317         BLUE_UINT32  VideoChannel;\r
1318         BLUE_UINT32 MatrixColumn; //MatrixColType enumerator defines this \r
1319         double  Coeff_B;\r
1320         double  Coeff_R;\r
1321         double  Coeff_G;\r
1322         double  Coeff_K;\r
1323         double  const_value;\r
1324 };\r
1325 #endif\r
1326 #pragma pack(pop, blue_dma_request)\r
1327 \r
1328 typedef enum _blue_output_hanc_ioctl_enum\r
1329 {\r
1330         blue_get_output_hanc_buffer=0,\r
1331         blue_put_output_hanc_buffer=1,\r
1332         blue_get_valid_silent_hanc_data_status=3,\r
1333         blue_set_valid_silent_hanc_data_status=4,\r
1334         blue_start_output_fifo=5,\r
1335         blue_stop_output_fifo=6,\r
1336         blue_init_output_fifo=7,\r
1337         blue_get_queues_info=8,\r
1338         blue_get_output_fifo_info=blue_get_queues_info,\r
1339         blue_get_output_fifo_status=9,\r
1340 \r
1341 }blue_output_hanc_ioctl_enum;\r
1342 \r
1343 typedef enum _blue_input_hanc_ioctl_enum\r
1344 {\r
1345         blue_get_input_hanc_buffer=0,\r
1346         blue_start_input_fifo=3,\r
1347         blue_stop_input_fifo=4,\r
1348         blue_init_input_fifo=5,\r
1349         blue_playthru_input_fifo=6,\r
1350         blue_release_input_hanc_buffer=7,\r
1351         blue_map_input_hanc_buffer=8,\r
1352         blue_unmap_input_hanc_buffer=9,\r
1353         blue_get_info_input_hanc_fifo=10,\r
1354         blue_get_input_rp188=11,\r
1355         blue_get_input_fifo_status=12,\r
1356 }blue_input_hanc_ioctl_enum;\r
1357 \r
1358 \r
1359 #define HANC_PLAYBACK_INIT                              (0x00000001)\r
1360 #define HANC_PLAYBACK_START                             (0x00000002)\r
1361 #define HANC_PLAYBACK_STOP                              (0x00000004)\r
1362 \r
1363 #define HANC_CAPTURE_INIT                               (0x00000010)\r
1364 #define HANC_CAPTURE_START                              (0x00000020)\r
1365 #define HANC_CAPTURE_STOP                               (0x00000040)\r
1366 #define HANC_CAPTURE_PLAYTHRU                   (0x00000080)\r
1367 \r
1368 \r
1369 typedef enum _EOracFPGAConfigCMD\r
1370 {\r
1371         ORAC_FPGA_CONFIG_CMD_ERASE_SECTOR=0,\r
1372         ORAC_FPGA_CONFIG_CMD_UNLOCK_SECTOR=1,\r
1373         ORAC_FPGA_CONFIG_CMD_WRITE_DATA=2,\r
1374         ORAC_FPGA_CONFIG_CMD_STATUS=3,\r
1375         ORAC_FPGA_CONFIG_CMD_READMODE=4,\r
1376         ORAC_FPGA_CONFIG_RAW_WRITE=5,\r
1377         ORAC_FPGA_CONFIG_RAW_READ=6,\r
1378         ORAC_FPGA_CONFIG_CMD_READ_DATA=7,\r
1379         ORAC_FPGA_CONFIG_INIT=8,\r
1380         ORAC_FPGA_CONFIG_EXIT=9\r
1381 }EOracFPGAConfigCMD;\r
1382 \r
1383 \r
1384 #define ANALOG_CHANNEL_0 MONO_CHANNEL_9\r
1385 #define ANALOG_CHANNEL_1 MONO_CHANNEL_10\r
1386 \r
1387 /*Assumes that the data is in stereo pairs not individual samples*/\r
1388 #define STEREO_PAIR_1   (MONO_CHANNEL_1|MONO_CHANNEL_2) /* Mono Channel 1 & Mono channel 2* together*/\r
1389 #define STEREO_PAIR_2   (MONO_CHANNEL_3|MONO_CHANNEL_4) /* Mono Channel 3 & Mono Channel 4* together*/\r
1390 #define STEREO_PAIR_3   (MONO_CHANNEL_5|MONO_CHANNEL_6) /* Mono Channel 5 & Mono Channel 6* together*/\r
1391 #define STEREO_PAIR_4   (MONO_CHANNEL_7|MONO_CHANNEL_8) /* Mono Channel 7 & Mono Channel 8* together*/\r
1392 \r
1393 #define ANALOG_AUDIO_PAIR (ANALOG_CHANNEL_0|ANALOG_CHANNEL_1)\r
1394 \r
1395 #define BLUE_LITTLE_ENDIAN      0\r
1396 #define BLUE_BIG_ENDIAN         1\r
1397 \r
1398 #define GREED_SILENT_HANC_BUFFER1       250\r
1399 #define GREED_SILENT_HANC_BUFFER2       251\r
1400 \r
1401 #define AES_SRC_BYPASS_CHANNEL_1_2 0x1\r
1402 #define AES_SRC_BYPASS_CHANNEL_3_4 0x2\r
1403 #define AES_SRC_BYPASS_CHANNEL_5_6 0x4\r
1404 #define AES_SRC_BYPASS_CHANNEL_7_8 0x8\r
1405 \r
1406 typedef enum _EEpochRoutingElements\r
1407 {\r
1408         EPOCH_SRC_DEST_SCALER_0=0x1,\r
1409         EPOCH_SRC_DEST_SCALER_1,\r
1410         EPOCH_SRC_DEST_SCALER_2,\r
1411         EPOCH_SRC_DEST_SCALER_3,\r
1412 \r
1413         EPOCH_SRC_SDI_INPUT_A,\r
1414         EPOCH_SRC_SDI_INPUT_B,\r
1415         EPOCH_SRC_SDI_INPUT_C,\r
1416         EPOCH_SRC_SDI_INPUT_D,\r
1417 \r
1418         EPOCH_DEST_SDI_OUTPUT_A,\r
1419         EPOCH_DEST_SDI_OUTPUT_B,\r
1420         EPOCH_DEST_SDI_OUTPUT_C,\r
1421         EPOCH_DEST_SDI_OUTPUT_D,\r
1422 \r
1423         EPOCH_SRC_OUTPUT_MEM_INTERFACE_CHA,\r
1424         EPOCH_SRC_OUTPUT_MEM_INTERFACE_CHB,\r
1425 \r
1426         EPOCH_DEST_INPUT_MEM_INTERFACE_CHA,\r
1427         EPOCH_DEST_INPUT_MEM_INTERFACE_CHB,\r
1428 \r
1429         EPOCH_DEST_AES_ANALOG_AUDIO_OUTPUT,\r
1430 \r
1431         EPOCH_SRC_AV_SIGNAL_GEN,\r
1432         EPOCH_SRC_DEST_VPIO_SCALER_0,\r
1433         EPOCH_SRC_DEST_VPIO_SCALER_1,\r
1434 \r
1435         EPOCH_DEST_VARIVUE_HDMI,\r
1436 \r
1437         EPOCH_DEST_INPUT_MEM_INTERFACE_CHC,\r
1438         EPOCH_DEST_INPUT_MEM_INTERFACE_CHD,\r
1439 \r
1440         EPOCH_SRC_OUTPUT_MEM_INTERFACE_CHC,\r
1441         EPOCH_SRC_OUTPUT_MEM_INTERFACE_CHD,\r
1442 \r
1443 }EEpochRoutingElements;\r
1444 \r
1445 \r
1446 \r
1447 #define VPEnableFieldCountTrigger               ((BLUE_UINT64)1<<63)\r
1448 #define VPTriggerGetFieldCount(value)   ((BLUE_UINT64)value & 0xFFFFFFFF)\r
1449 \r
1450 typedef enum _EBlueScalerFilterType\r
1451 {\r
1452         BlueScalerHorizontalYFilter=1,\r
1453         BlueScalerHorizontalCFilter=2,\r
1454         BlueScalerVerticalYFilter=3,\r
1455         BlueScalerVerticalCFilter=4,\r
1456 }EBlueScalerFilterType;\r
1457 \r
1458 \r
1459 \r
1460 #define SET_EPOCH_SCALER_MODE(scaler_id,video_mode) ((scaler_id <<16)|video_mode)\r
1461 #define GET_EPOCH_SCALER_MODE(value)                            (value&0xFFFF)\r
1462 #define GET_EPOCH_SCALER_ID(value)                                      ((value&0xFFFF0000)>>16)\r
1463 \r
1464 \r
1465 // use these macros for retreiving the temp and fan speed.\r
1466 // on epoch range of cards.\r
1467 #define EPOCH_CORE_TEMP(value)                                  (value & 0xFFFF)\r
1468 #define EPOCH_BOARD_TEMP(value)                                 ((value>>16) & 0xFF)\r
1469 #define EPOCH_FAN_SPEED(value)                                  ((value>>24) & 0xFF)\r
1470 \r
1471 /** \r
1472         @desc   use these macro for doing the MR2 routing  on epoch range of cards.\r
1473                         MR2 routing can be controlled using the property MR_ROUTING.\r
1474 */\r
1475 #define EPOCH_SET_ROUTING(routing_src,routing_dest,data_link_type) ((routing_src & 0xFF) | ((routing_dest & 0xFF)<<8) | ((data_link_type&0xFFFF)<<16))\r
1476 #define EPOCH_ROUTING_GET_SRC_DATA(value)               (value & 0xFF)\r
1477 #define EPOCH_ROUTING_GET_DEST_DATA(value)              ((value>>8) & 0xFF)\r
1478 #define EPOCH_ROUTING_GET_LINK_TYPE_DATA(value) ((value>>16) & 0xFFFF)\r
1479 \r
1480 #define GPIO_TX_PORT_A  (1)\r
1481 #define GPIO_TX_PORT_B  (2)\r
1482 \r
1483 #define EPOCH_GPIO_TX(port,value)       (port<<16|value) // if want to set each of the GPO \r
1484                                                                                                         // ports individually you should use this macro.\r
1485                                                                                                         // without the macro it would set both the GPO\r
1486                                                                                                         // ports on the card\r
1487 \r
1488 /**\r
1489         @desc   use these macros for controlling epoch application watch dog settings.\r
1490                         The card property EPOCH_APP_WATCHDOG_TIMER can be used to control \r
1491                         the watchdog timer functionality.\r
1492 */\r
1493 enum enum_blue_app_watchdog_timer_prop\r
1494 {\r
1495         enum_blue_app_watchdog_timer_start_stop=(1<<31),                        // can be used to enable/disable timer \r
1496         enum_blue_app_watchdog_timer_keepalive=(1<<30),                         // can be used to reset the timer value\r
1497         enum_blue_app_watchdog_timer_get_present_time=(1<<29),          // can query to get the value of the timer\r
1498         enum_blue_app_watchdog_get_timer_activated_status=(1<<28),      // can query to get whether the timer has been activated\r
1499         enum_blue_app_watchdog_get_timer_start_stop_status=(1<<27),     // can query whether the timer has been set.\r
1500         enum_blue_app_watchdog_enable_gpo_on_active=(1<<26), // using this enumerator you can tell the system that when \r
1501                                                                                                                 // application watchdog timer has expired whether a GPO output should be triggered or not.\r
1502                                                                                                                 // you can use also use this  enumerator  to select\r
1503                                                                                                                 // which GPO output should be triggered with this. to use GPO port A pass a value of \r
1504                                                                                                                 // GPIO_TX_PORT_A when this enumerator is used.\r
1505         enum_blue_hardware_watchdog_enable_gpo=(1<<25) // can be used to enable/disable GPO trigger when hardware watchdog timer has been \r
1506                                                                                                         // triggered\r
1507 };\r
1508 \r
1509 #define EPOCH_WATCHDOG_TIMER_SET_MACRO(prop,value) (prop|(value &0xFFFF))\r
1510 #define EPOCH_WATCHDOG_TIMER_QUERY_MACRO(prop) (prop)\r
1511 #define EPOCH_WATCHDOG_TIMER_GET_VALUE_MACRO(value) (value&0xFFFF)\r
1512 \r
1513 enum enum_blue_rs422_port_flags\r
1514 {\r
1515         enum_blue_rs422_port_set_as_slave =(1<<0) // If this flag is set the RS422 port would be set to slave mode.\r
1516                                                                                           // by default port is setup to work in master mode , where it would be acting \r
1517                                                                                           // as master in the transactions.                                                                                       \r
1518 };\r
1519 #define EPOCH_RS422_PORT_FLAG_SET_MACRO(portid,value)   ((portid&0x3)|(value<<3))\r
1520 #define EPOCH_RS422_PORT_FLAG_GET_FLAG_MACRO(value)             ((value>>3)&0xFFFF)\r
1521 #define EPOCH_RS422_PORT_FLAG_GET_PORTID_MACRO(value)   (value&0x3)\r
1522 \r
1523 \r
1524 enum enum_blue_dvb_asi_packing_format\r
1525 {\r
1526         enum_blue_dvb_asi_packed_format=1,/**< In this packing method the asi packets are stored as 188 or 204 bytes*/\r
1527         enum_blue_dvb_asi_packed_format_with_timestamp=2,/**< In this packing method the asi packets are stored as (8+188) or (8+204) bytes\r
1528                                                                                                                         The timestamp is stored at the begininig of the packet , using 8 bytes*/\r
1529         enum_blue_dvb_asi_256byte_container_format=3,\r
1530         enum_blue_dvb_asi_256byte_container_format_with_timestamp=4\r
1531 };\r
1532 \r
1533 \r
1534 #define RS422_SERIALPORT_FLAG(timeout,port,RxFlushBuffer) (((unsigned long)(timeout)<<16)|(port & 0x3) | (RxFlushBuffer<<15))\r
1535 // use this macro with Wait_For_SerialPort_InputData,\r
1536 // if you you want the  function to return \r
1537 // immediatelty when it gets byte in the serial RX port.\r
1538 #define RS422_SERIALPORT_FLAG2(timeout,port,RxFlushBuffer,RXIntWaitReturnOnAvailData) (((unsigned long)(timeout)<<16)|(port & 0x3) | (RxFlushBuffer<<15)|(RXIntWaitReturnOnAvailData<<14))\r
1539 \r
1540 typedef enum _blue_blackgenerator_status\r
1541 {\r
1542         ENUM_BLACKGENERATOR_OFF =       0,      //producing normal video output\r
1543         ENUM_BLACKGENERATOR_ON =        1,      //producing black video output\r
1544         ENUM_BLACKGENERATOR_SDI_SYNC_OFF =      2       //no valid SDI signal is coming out of our SDI output connector; only available in Epoch ASI firmware\r
1545 }blue_blackgenerator_status;\r