Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 1 | /******************************************************************** |
| 2 | * Copyright(c) 2006-2009 Broadcom Corporation. |
| 3 | * |
| 4 | * Name: bc_dts_defs.h |
| 5 | * |
| 6 | * Description: Common definitions for all components. Only types |
| 7 | * is allowed to be included from this file. |
| 8 | * |
| 9 | * AU |
| 10 | * |
| 11 | * HISTORY: |
| 12 | * |
| 13 | ******************************************************************** |
| 14 | * This header is free software: you can redistribute it and/or modify |
| 15 | * it under the terms of the GNU Lesser General Public License as published |
| 16 | * by the Free Software Foundation, either version 2.1 of the License. |
| 17 | * |
| 18 | * This header is distributed in the hope that it will be useful, |
| 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 21 | * GNU Lesser General Public License for more details. |
| 22 | * You should have received a copy of the GNU Lesser General Public License |
| 23 | * along with this header. If not, see <http://www.gnu.org/licenses/>. |
| 24 | *******************************************************************/ |
| 25 | |
| 26 | #ifndef _BC_DTS_DEFS_H_ |
| 27 | #define _BC_DTS_DEFS_H_ |
| 28 | |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 29 | /* BIT Mask */ |
| 30 | #define BC_BIT(_x) (1 << (_x)) |
| 31 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 32 | enum BC_STATUS { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 33 | BC_STS_SUCCESS = 0, |
| 34 | BC_STS_INV_ARG = 1, |
| 35 | BC_STS_BUSY = 2, |
| 36 | BC_STS_NOT_IMPL = 3, |
| 37 | BC_STS_PGM_QUIT = 4, |
| 38 | BC_STS_NO_ACCESS = 5, |
| 39 | BC_STS_INSUFF_RES = 6, |
| 40 | BC_STS_IO_ERROR = 7, |
| 41 | BC_STS_NO_DATA = 8, |
| 42 | BC_STS_VER_MISMATCH = 9, |
| 43 | BC_STS_TIMEOUT = 10, |
| 44 | BC_STS_FW_CMD_ERR = 11, |
| 45 | BC_STS_DEC_NOT_OPEN = 12, |
| 46 | BC_STS_ERR_USAGE = 13, |
| 47 | BC_STS_IO_USER_ABORT = 14, |
| 48 | BC_STS_IO_XFR_ERROR = 15, |
| 49 | BC_STS_DEC_NOT_STARTED = 16, |
| 50 | BC_STS_FWHEX_NOT_FOUND = 17, |
| 51 | BC_STS_FMT_CHANGE = 18, |
| 52 | BC_STS_HIF_ACCESS = 19, |
| 53 | BC_STS_CMD_CANCELLED = 20, |
| 54 | BC_STS_FW_AUTH_FAILED = 21, |
| 55 | BC_STS_BOOTLOADER_FAILED = 22, |
| 56 | BC_STS_CERT_VERIFY_ERROR = 23, |
| 57 | BC_STS_DEC_EXIST_OPEN = 24, |
| 58 | BC_STS_PENDING = 25, |
| 59 | BC_STS_CLK_NOCHG = 26, |
| 60 | |
| 61 | /* Must be the last one.*/ |
| 62 | BC_STS_ERROR = -1 |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 63 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 64 | |
| 65 | /*------------------------------------------------------* |
| 66 | * Registry Key Definitions * |
| 67 | *------------------------------------------------------*/ |
| 68 | #define BC_REG_KEY_MAIN_PATH "Software\\Broadcom\\MediaPC\\70010" |
| 69 | #define BC_REG_KEY_FWPATH "FirmwareFilePath" |
| 70 | #define BC_REG_KEY_SEC_OPT "DbgOptions" |
| 71 | |
| 72 | /* |
| 73 | * Options: |
| 74 | * |
| 75 | * b[5] = Enable RSA KEY in EEPROM Support |
| 76 | * b[6] = Enable Old PIB scheme. (0 = Use PIB with video scheme) |
| 77 | * |
| 78 | * b[12] = Enable send message to NotifyIcon |
| 79 | * |
| 80 | */ |
| 81 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 82 | enum BC_SW_OPTIONS { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 83 | BC_OPT_DOSER_OUT_ENCRYPT = BC_BIT(3), |
| 84 | BC_OPT_LINK_OUT_ENCRYPT = BC_BIT(29), |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 85 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 86 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 87 | struct BC_REG_CONFIG{ |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 88 | uint32_t DbgOptions; |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 89 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 90 | |
| 91 | #if defined(__KERNEL__) || defined(__LINUX_USER__) |
| 92 | #else |
| 93 | /* Align data structures */ |
| 94 | #define ALIGN(x) __declspec(align(x)) |
| 95 | #endif |
| 96 | |
| 97 | /* mode |
| 98 | * b[0]..b[7] = _DtsDeviceOpenMode |
| 99 | * b[8] = Load new FW |
| 100 | * b[9] = Load file play back FW |
| 101 | * b[10] = Disk format (0 for HD DVD and 1 for BLU ray) |
| 102 | * b[11]-b[15] = default output resolution |
| 103 | * b[16] = Skip TX CPB Buffer Check |
| 104 | * b[17] = Adaptive Output Encrypt/Scramble Scheme |
| 105 | * b[18]-b[31] = reserved for future use |
| 106 | */ |
| 107 | |
| 108 | /* To allow multiple apps to open the device. */ |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 109 | enum DtsDeviceOpenMode { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 110 | DTS_PLAYBACK_MODE = 0, |
| 111 | DTS_DIAG_MODE, |
| 112 | DTS_MONITOR_MODE, |
| 113 | DTS_HWINIT_MODE |
| 114 | }; |
| 115 | |
| 116 | /* To enable the filter to selectively enable/disable fixes or erratas */ |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 117 | enum DtsDeviceFixMode { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 118 | DTS_LOAD_NEW_FW = BC_BIT(8), |
| 119 | DTS_LOAD_FILE_PLAY_FW = BC_BIT(9), |
| 120 | DTS_DISK_FMT_BD = BC_BIT(10), |
| 121 | /* b[11]-b[15] : Default output resolution */ |
| 122 | DTS_SKIP_TX_CHK_CPB = BC_BIT(16), |
| 123 | DTS_ADAPTIVE_OUTPUT_PER = BC_BIT(17), |
| 124 | DTS_INTELLIMAP = BC_BIT(18), |
| 125 | /* b[19]-b[21] : select clock frequency */ |
| 126 | DTS_PLAYBACK_DROP_RPT_MODE = BC_BIT(22) |
| 127 | }; |
| 128 | |
| 129 | #define DTS_DFLT_RESOLUTION(x) (x<<11) |
| 130 | |
| 131 | #define DTS_DFLT_CLOCK(x) (x<<19) |
| 132 | |
| 133 | /* F/W File Version corresponding to S/W Releases */ |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 134 | enum FW_FILE_VER { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 135 | /* S/W release: 02.04.02 F/W release 2.12.2.0 */ |
| 136 | BC_FW_VER_020402 = ((12<<16) | (2<<8) | (0)) |
| 137 | }; |
| 138 | |
| 139 | /*------------------------------------------------------* |
| 140 | * Stream Types for DtsOpenDecoder() * |
| 141 | *------------------------------------------------------*/ |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 142 | enum DtsOpenDecStreamTypes { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 143 | BC_STREAM_TYPE_ES = 0, |
| 144 | BC_STREAM_TYPE_PES = 1, |
| 145 | BC_STREAM_TYPE_TS = 2, |
| 146 | BC_STREAM_TYPE_ES_TSTAMP = 6, |
| 147 | }; |
| 148 | |
| 149 | /*------------------------------------------------------* |
| 150 | * Video Algorithms for DtsSetVideoParams() * |
| 151 | *------------------------------------------------------*/ |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 152 | enum DtsSetVideoParamsAlgo { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 153 | BC_VID_ALGO_H264 = 0, |
| 154 | BC_VID_ALGO_MPEG2 = 1, |
| 155 | BC_VID_ALGO_VC1 = 4, |
| 156 | BC_VID_ALGO_VC1MP = 7, |
| 157 | }; |
| 158 | |
| 159 | /*------------------------------------------------------* |
| 160 | * MPEG Extension to the PPB * |
| 161 | *------------------------------------------------------*/ |
| 162 | #define BC_MPEG_VALID_PANSCAN (1) |
| 163 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 164 | struct BC_PIB_EXT_MPEG { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 165 | uint32_t valid; |
| 166 | /* Always valid, defaults to picture size if no |
| 167 | * sequence display extension in the stream. */ |
| 168 | uint32_t display_horizontal_size; |
| 169 | uint32_t display_vertical_size; |
| 170 | |
| 171 | /* MPEG_VALID_PANSCAN |
| 172 | * Offsets are a copy values from the MPEG stream. */ |
| 173 | uint32_t offset_count; |
| 174 | int32_t horizontal_offset[3]; |
| 175 | int32_t vertical_offset[3]; |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 176 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 177 | |
| 178 | /*------------------------------------------------------* |
| 179 | * H.264 Extension to the PPB * |
| 180 | *------------------------------------------------------*/ |
| 181 | /* Bit definitions for 'other.h264.valid' field */ |
| 182 | #define H264_VALID_PANSCAN (1) |
| 183 | #define H264_VALID_SPS_CROP (2) |
| 184 | #define H264_VALID_VUI (4) |
| 185 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 186 | struct BC_PIB_EXT_H264 { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 187 | /* 'valid' specifies which fields (or sets of |
| 188 | * fields) below are valid. If the corresponding |
| 189 | * bit in 'valid' is NOT set then that field(s) |
| 190 | * is (are) not initialized. */ |
| 191 | uint32_t valid; |
| 192 | |
| 193 | /* H264_VALID_PANSCAN */ |
| 194 | uint32_t pan_scan_count; |
| 195 | int32_t pan_scan_left[3]; |
| 196 | int32_t pan_scan_right[3]; |
| 197 | int32_t pan_scan_top[3]; |
| 198 | int32_t pan_scan_bottom[3]; |
| 199 | |
| 200 | /* H264_VALID_SPS_CROP */ |
| 201 | int32_t sps_crop_left; |
| 202 | int32_t sps_crop_right; |
| 203 | int32_t sps_crop_top; |
| 204 | int32_t sps_crop_bottom; |
| 205 | |
| 206 | /* H264_VALID_VUI */ |
| 207 | uint32_t chroma_top; |
| 208 | uint32_t chroma_bottom; |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 209 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 210 | |
| 211 | /*------------------------------------------------------* |
| 212 | * VC1 Extension to the PPB * |
| 213 | *------------------------------------------------------*/ |
| 214 | #define VC1_VALID_PANSCAN (1) |
| 215 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 216 | struct BC_PIB_EXT_VC1 { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 217 | uint32_t valid; |
| 218 | |
| 219 | /* Always valid, defaults to picture size if no |
| 220 | * sequence display extension in the stream. */ |
| 221 | uint32_t display_horizontal_size; |
| 222 | uint32_t display_vertical_size; |
| 223 | |
| 224 | /* VC1 pan scan windows */ |
| 225 | uint32_t num_panscan_windows; |
| 226 | int32_t ps_horiz_offset[4]; |
| 227 | int32_t ps_vert_offset[4]; |
| 228 | int32_t ps_width[4]; |
| 229 | int32_t ps_height[4]; |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 230 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 231 | |
| 232 | /*------------------------------------------------------* |
| 233 | * Picture Information Block * |
| 234 | *------------------------------------------------------*/ |
Charles Clément | 4752e51 | 2010-05-02 18:29:57 -0700 | [diff] [blame] | 235 | #if defined(__LINUX_USER__) |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 236 | /* Values for 'pulldown' field. '0' means no pulldown information |
| 237 | * was present for this picture. */ |
| 238 | enum { |
| 239 | vdecNoPulldownInfo = 0, |
| 240 | vdecTop = 1, |
| 241 | vdecBottom = 2, |
| 242 | vdecTopBottom = 3, |
| 243 | vdecBottomTop = 4, |
| 244 | vdecTopBottomTop = 5, |
| 245 | vdecBottomTopBottom = 6, |
| 246 | vdecFrame_X2 = 7, |
| 247 | vdecFrame_X3 = 8, |
| 248 | vdecFrame_X1 = 9, |
| 249 | vdecFrame_X4 = 10, |
| 250 | }; |
| 251 | |
| 252 | /* Values for the 'frame_rate' field. */ |
| 253 | enum { |
| 254 | vdecFrameRateUnknown = 0, |
| 255 | vdecFrameRate23_97, |
| 256 | vdecFrameRate24, |
| 257 | vdecFrameRate25, |
| 258 | vdecFrameRate29_97, |
| 259 | vdecFrameRate30, |
| 260 | vdecFrameRate50, |
| 261 | vdecFrameRate59_94, |
| 262 | vdecFrameRate60, |
| 263 | }; |
| 264 | |
| 265 | /* Values for the 'aspect_ratio' field. */ |
| 266 | enum { |
| 267 | vdecAspectRatioUnknown = 0, |
| 268 | vdecAspectRatioSquare, |
| 269 | vdecAspectRatio12_11, |
| 270 | vdecAspectRatio10_11, |
| 271 | vdecAspectRatio16_11, |
| 272 | vdecAspectRatio40_33, |
| 273 | vdecAspectRatio24_11, |
| 274 | vdecAspectRatio20_11, |
| 275 | vdecAspectRatio32_11, |
| 276 | vdecAspectRatio80_33, |
| 277 | vdecAspectRatio18_11, |
| 278 | vdecAspectRatio15_11, |
| 279 | vdecAspectRatio64_33, |
| 280 | vdecAspectRatio160_99, |
| 281 | vdecAspectRatio4_3, |
| 282 | vdecAspectRatio16_9, |
| 283 | vdecAspectRatio221_1, |
| 284 | vdecAspectRatioOther = 255, |
| 285 | }; |
| 286 | |
| 287 | /* Values for the 'colour_primaries' field. */ |
| 288 | enum { |
| 289 | vdecColourPrimariesUnknown = 0, |
| 290 | vdecColourPrimariesBT709, |
| 291 | vdecColourPrimariesUnspecified, |
| 292 | vdecColourPrimariesReserved, |
| 293 | vdecColourPrimariesBT470_2M = 4, |
| 294 | vdecColourPrimariesBT470_2BG, |
| 295 | vdecColourPrimariesSMPTE170M, |
| 296 | vdecColourPrimariesSMPTE240M, |
| 297 | vdecColourPrimariesGenericFilm, |
| 298 | }; |
| 299 | |
| 300 | enum { |
| 301 | vdecRESOLUTION_CUSTOM = 0x00000000, /* custom */ |
| 302 | vdecRESOLUTION_480i = 0x00000001, /* 480i */ |
| 303 | vdecRESOLUTION_1080i = 0x00000002, /* 1080i (1920x1080, 60i) */ |
| 304 | vdecRESOLUTION_NTSC = 0x00000003, /* NTSC (720x483, 60i) */ |
| 305 | vdecRESOLUTION_480p = 0x00000004, /* 480p (720x480, 60p) */ |
| 306 | vdecRESOLUTION_720p = 0x00000005, /* 720p (1280x720, 60p) */ |
| 307 | vdecRESOLUTION_PAL1 = 0x00000006, /* PAL_1 (720x576, 50i) */ |
| 308 | vdecRESOLUTION_1080i25 = 0x00000007, /* 1080i25 (1920x1080, 50i) */ |
| 309 | vdecRESOLUTION_720p50 = 0x00000008, /* 720p50 (1280x720, 50p) */ |
| 310 | vdecRESOLUTION_576p = 0x00000009, /* 576p (720x576, 50p) */ |
| 311 | vdecRESOLUTION_1080i29_97 = 0x0000000A, /* 1080i (1920x1080, 59.94i) */ |
| 312 | vdecRESOLUTION_720p59_94 = 0x0000000B, /* 720p (1280x720, 59.94p) */ |
| 313 | vdecRESOLUTION_SD_DVD = 0x0000000C, /* SD DVD (720x483, 60i) */ |
| 314 | vdecRESOLUTION_480p656 = 0x0000000D, /* 480p (720x480, 60p), output bus width 8 bit, clock 74.25MHz */ |
| 315 | vdecRESOLUTION_1080p23_976 = 0x0000000E, /* 1080p23_976 (1920x1080, 23.976p) */ |
| 316 | vdecRESOLUTION_720p23_976 = 0x0000000F, /* 720p23_976 (1280x720p, 23.976p) */ |
| 317 | vdecRESOLUTION_240p29_97 = 0x00000010, /* 240p (1440x240, 29.97p ) */ |
| 318 | vdecRESOLUTION_240p30 = 0x00000011, /* 240p (1440x240, 30p) */ |
| 319 | vdecRESOLUTION_288p25 = 0x00000012, /* 288p (1440x288p, 25p) */ |
| 320 | vdecRESOLUTION_1080p29_97 = 0x00000013, /* 1080p29_97 (1920x1080, 29.97p) */ |
| 321 | vdecRESOLUTION_1080p30 = 0x00000014, /* 1080p30 (1920x1080, 30p) */ |
| 322 | vdecRESOLUTION_1080p24 = 0x00000015, /* 1080p24 (1920x1080, 24p) */ |
| 323 | vdecRESOLUTION_1080p25 = 0x00000016, /* 1080p25 (1920x1080, 25p) */ |
| 324 | vdecRESOLUTION_720p24 = 0x00000017, /* 720p24 (1280x720, 25p) */ |
| 325 | vdecRESOLUTION_720p29_97 = 0x00000018, /* 720p29.97 (1280x720, 29.97p) */ |
| 326 | vdecRESOLUTION_480p23_976 = 0x00000019, /* 480p23.976 (720*480, 23.976) */ |
| 327 | vdecRESOLUTION_480p29_97 = 0x0000001A, /* 480p29.976 (720*480, 29.97p) */ |
| 328 | vdecRESOLUTION_576p25 = 0x0000001B, /* 576p25 (720*576, 25p) */ |
| 329 | /* For Zero Frame Rate */ |
| 330 | vdecRESOLUTION_480p0 = 0x0000001C, /* 480p (720x480, 0p) */ |
| 331 | vdecRESOLUTION_480i0 = 0x0000001D, /* 480i (720x480, 0i) */ |
| 332 | vdecRESOLUTION_576p0 = 0x0000001E, /* 576p (720x576, 0p) */ |
| 333 | vdecRESOLUTION_720p0 = 0x0000001F, /* 720p (1280x720, 0p) */ |
| 334 | vdecRESOLUTION_1080p0 = 0x00000020, /* 1080p (1920x1080, 0p) */ |
| 335 | vdecRESOLUTION_1080i0 = 0x00000021, /* 1080i (1920x1080, 0i) */ |
| 336 | }; |
| 337 | |
| 338 | /* Bit definitions for 'flags' field */ |
| 339 | #define VDEC_FLAG_EOS (0x0004) |
| 340 | |
| 341 | #define VDEC_FLAG_FRAME (0x0000) |
| 342 | #define VDEC_FLAG_FIELDPAIR (0x0008) |
| 343 | #define VDEC_FLAG_TOPFIELD (0x0010) |
| 344 | #define VDEC_FLAG_BOTTOMFIELD (0x0018) |
| 345 | |
| 346 | #define VDEC_FLAG_PROGRESSIVE_SRC (0x0000) |
| 347 | #define VDEC_FLAG_INTERLACED_SRC (0x0020) |
| 348 | #define VDEC_FLAG_UNKNOWN_SRC (0x0040) |
| 349 | |
| 350 | #define VDEC_FLAG_BOTTOM_FIRST (0x0080) |
| 351 | #define VDEC_FLAG_LAST_PICTURE (0x0100) |
| 352 | |
| 353 | #define VDEC_FLAG_PICTURE_META_DATA_PRESENT (0x40000) |
| 354 | |
Charles Clément | 4752e51 | 2010-05-02 18:29:57 -0700 | [diff] [blame] | 355 | #endif /* __LINUX_USER__ */ |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 356 | |
| 357 | enum _BC_OUTPUT_FORMAT { |
| 358 | MODE420 = 0x0, |
| 359 | MODE422_YUY2 = 0x1, |
| 360 | MODE422_UYVY = 0x2, |
| 361 | }; |
| 362 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 363 | struct BC_PIC_INFO_BLOCK { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 364 | /* Common fields. */ |
| 365 | uint64_t timeStamp; /* Timestamp */ |
| 366 | uint32_t picture_number; /* Ordinal display number */ |
| 367 | uint32_t width; /* pixels */ |
| 368 | uint32_t height; /* pixels */ |
| 369 | uint32_t chroma_format; /* 0x420, 0x422 or 0x444 */ |
| 370 | uint32_t pulldown; |
| 371 | uint32_t flags; |
| 372 | uint32_t frame_rate; |
| 373 | uint32_t aspect_ratio; |
| 374 | uint32_t colour_primaries; |
| 375 | uint32_t picture_meta_payload; |
| 376 | uint32_t sess_num; |
| 377 | uint32_t ycom; |
| 378 | uint32_t custom_aspect_ratio_width_height; |
| 379 | uint32_t n_drop; /* number of non-reference frames remaining to be dropped */ |
| 380 | |
| 381 | /* Protocol-specific extensions. */ |
| 382 | union { |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 383 | struct BC_PIB_EXT_H264 h264; |
| 384 | struct BC_PIB_EXT_MPEG mpeg; |
| 385 | struct BC_PIB_EXT_VC1 vc1; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 386 | } other; |
| 387 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 388 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 389 | |
| 390 | /*------------------------------------------------------* |
| 391 | * ProcOut Info * |
| 392 | *------------------------------------------------------*/ |
| 393 | /* Optional flags for ProcOut Interface.*/ |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 394 | enum POUT_OPTIONAL_IN_FLAGS_{ |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 395 | /* Flags from App to Device */ |
| 396 | BC_POUT_FLAGS_YV12 = 0x01, /* Copy Data in YV12 format */ |
| 397 | BC_POUT_FLAGS_STRIDE = 0x02, /* Stride size is valid. */ |
| 398 | BC_POUT_FLAGS_SIZE = 0x04, /* Take size information from Application */ |
| 399 | BC_POUT_FLAGS_INTERLACED = 0x08, /* copy only half the bytes */ |
| 400 | BC_POUT_FLAGS_INTERLEAVED = 0x10, /* interleaved frame */ |
| 401 | |
| 402 | /* Flags from Device to APP */ |
| 403 | BC_POUT_FLAGS_FMT_CHANGE = 0x10000, /* Data is not VALID when this flag is set */ |
| 404 | BC_POUT_FLAGS_PIB_VALID = 0x20000, /* PIB Information valid */ |
| 405 | BC_POUT_FLAGS_ENCRYPTED = 0x40000, /* Data is encrypted. */ |
| 406 | BC_POUT_FLAGS_FLD_BOT = 0x80000, /* Bottom Field data */ |
| 407 | }; |
| 408 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 409 | typedef enum BC_STATUS(*dts_pout_callback)(void *shnd, uint32_t width, uint32_t height, uint32_t stride, void *pOut); |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 410 | |
| 411 | /* Line 21 Closed Caption */ |
| 412 | /* User Data */ |
| 413 | #define MAX_UD_SIZE 1792 /* 1920 - 128 */ |
| 414 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 415 | struct BC_DTS_PROC_OUT { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 416 | uint8_t *Ybuff; /* Caller Supplied buffer for Y data */ |
| 417 | uint32_t YbuffSz; /* Caller Supplied Y buffer size */ |
| 418 | uint32_t YBuffDoneSz; /* Transferred Y datasize */ |
| 419 | |
| 420 | uint8_t *UVbuff; /* Caller Supplied buffer for UV data */ |
| 421 | uint32_t UVbuffSz; /* Caller Supplied UV buffer size */ |
| 422 | uint32_t UVBuffDoneSz; /* Transferred UV data size */ |
| 423 | |
| 424 | uint32_t StrideSz; /* Caller supplied Stride Size */ |
| 425 | uint32_t PoutFlags; /* Call IN Flags */ |
| 426 | |
| 427 | uint32_t discCnt; /* Picture discontinuity count */ |
| 428 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 429 | struct BC_PIC_INFO_BLOCK PicInfo; /* Picture Information Block Data */ |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 430 | |
| 431 | /* Line 21 Closed Caption */ |
| 432 | /* User Data */ |
| 433 | uint32_t UserDataSz; |
| 434 | uint8_t UserData[MAX_UD_SIZE]; |
| 435 | |
| 436 | void *hnd; |
| 437 | dts_pout_callback AppCallBack; |
| 438 | uint8_t DropFrames; |
| 439 | uint8_t b422Mode; /* Picture output Mode */ |
| 440 | uint8_t bPibEnc; /* PIB encrypted */ |
| 441 | uint8_t bRevertScramble; |
| 442 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 443 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 444 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 445 | struct BC_DTS_STATUS { |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 446 | uint8_t ReadyListCount; /* Number of frames in ready list (reported by driver) */ |
| 447 | uint8_t FreeListCount; /* Number of frame buffers free. (reported by driver) */ |
| 448 | uint8_t PowerStateChange; /* Number of active state power transitions (reported by driver) */ |
| 449 | uint8_t reserved_[1]; |
| 450 | |
| 451 | uint32_t FramesDropped; /* Number of frames dropped. (reported by DIL) */ |
| 452 | uint32_t FramesCaptured; /* Number of frames captured. (reported by DIL) */ |
| 453 | uint32_t FramesRepeated; /* Number of frames repeated. (reported by DIL) */ |
| 454 | |
| 455 | uint32_t InputCount; /* Times compressed video has been sent to the HW. |
| 456 | * i.e. Successful DtsProcInput() calls (reported by DIL) */ |
| 457 | uint64_t InputTotalSize; /* Amount of compressed video that has been sent to the HW. |
| 458 | * (reported by DIL) */ |
| 459 | uint32_t InputBusyCount; /* Times compressed video has attempted to be sent to the HW |
| 460 | * but the input FIFO was full. (reported by DIL) */ |
| 461 | |
| 462 | uint32_t PIBMissCount; /* Amount of times a PIB is invalid. (reported by DIL) */ |
| 463 | |
| 464 | uint32_t cpbEmptySize; /* supported only for H.264, specifically changed for |
| 465 | * Adobe. Report size of CPB buffer available. |
| 466 | * Reported by DIL */ |
| 467 | uint64_t NextTimeStamp; /* TimeStamp of the next picture that will be returned |
| 468 | * by a call to ProcOutput. Added for Adobe. Reported |
| 469 | * back from the driver */ |
| 470 | uint8_t reserved__[16]; |
| 471 | |
Lior Dotan | abfc768 | 2010-05-18 12:46:42 +0300 | [diff] [blame] | 472 | }; |
Jarod Wilson | 7963eb4 | 2010-01-04 18:02:27 -0500 | [diff] [blame] | 473 | |
| 474 | #define BC_SWAP32(_v) \ |
| 475 | ((((_v) & 0xFF000000)>>24)| \ |
| 476 | (((_v) & 0x00FF0000)>>8)| \ |
| 477 | (((_v) & 0x0000FF00)<<8)| \ |
| 478 | (((_v) & 0x000000FF)<<24)) |
| 479 | |
| 480 | #define WM_AGENT_TRAYICON_DECODER_OPEN 10001 |
| 481 | #define WM_AGENT_TRAYICON_DECODER_CLOSE 10002 |
| 482 | #define WM_AGENT_TRAYICON_DECODER_START 10003 |
| 483 | #define WM_AGENT_TRAYICON_DECODER_STOP 10004 |
| 484 | #define WM_AGENT_TRAYICON_DECODER_RUN 10005 |
| 485 | #define WM_AGENT_TRAYICON_DECODER_PAUSE 10006 |
| 486 | |
| 487 | |
| 488 | #endif /* _BC_DTS_DEFS_H_ */ |