1 /* 2 * Copyright (c) 2011 Intel Corporation. All Rights Reserved. 3 * Copyright (c) Imagination Technologies Limited, UK 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, 9 * distribute, sub license, and/or sell copies of the Software, and to 10 * permit persons to whom the Software is furnished to do so, subject to 11 * the following conditions: 12 * 13 * The above copyright notice and this permission notice (including the 14 * next paragraph) shall be included in all copies or substantial portions 15 * of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 20 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 * 25 * Authors: 26 * Elaine Wang <elaine.wang (at) intel.com> 27 * Zeng Li <zeng.li (at) intel.com> 28 * Edward Lin <edward.lin (at) intel.com> 29 * 30 */ 31 32 /* 33 * Description DMA code for mtx Platform : Generic 34 */ 35 36 #ifndef _TNG_HOSTHEADER_H_ 37 #define _TNG_HOSTHEADER_H_ 38 39 40 #include "img_types.h" 41 42 #define MAX_MVC_VIEWS 2 43 #define MVC_BASE_VIEW_IDX 0 44 #define NON_MVC_VIEW (~0x0) 45 46 #define MVC_SPS_ID 1 47 #define MVC_PPS_ID 1 48 49 /* Structure contains QP parameters, used with the DoHeader() routine */ 50 typedef struct { 51 IMG_UINT32 H264_QP; 52 IMG_UINT32 H263_MPG4_FrameQ_scale; 53 IMG_UINT32 H263_MPG4_SliceQ_scale; 54 } MTX_QP_INFO; 55 56 typedef struct { 57 IMG_UINT8 frameType; 58 IMG_BOOL8 weighted_pred_flag; // Corresponds to field in the pps 59 IMG_UINT8 weighted_bipred_idc; 60 IMG_UINT32 luma_log2_weight_denom; 61 IMG_UINT32 chroma_log2_weight_denom; 62 IMG_BOOL8 weight_flag[3][2]; // Y,Cb, Cr Support for 2 ref pictures on P, or 1 pic in each direction on B. 63 IMG_INT32 weight[3][2]; 64 IMG_INT32 offset[3][2]; 65 } WEIGHTED_PREDICTION_VALUES; 66 67 68 /* #include "topaz_vlc_regs.h" */ 69 70 /* Allocating 32 words (128 bytes aligned to 8 bytes) */ 71 #define MAX_HEADERSIZEWORDS (32) 72 73 /***************************************************************************** 74 * @details Enum describing partially coded header element types 75 * @brief Header element type 76 ****************************************************************************/ 77 typedef enum 78 { 79 ELEMENT_STARTCODE_RAWDATA=0, //!< Raw data that includes a start code 80 ELEMENT_STARTCODE_MIDHDR, //!< Start code in middle of header 81 ELEMENT_RAWDATA, //!< Raw data 82 ELEMENT_QP, //!< Insert the H264 Picture Header QP parameter (no rawdata) 83 ELEMENT_SQP, //!< Insert the H264 Slice Header QP parameter (no rawdata) 84 ELEMENT_FRAMEQSCALE, //!< Insert the H263/MPEG4 Frame Q_scale parameter (vob_quant field) (no rawdata) 85 ELEMENT_SLICEQSCALE, //!< Insert the H263/MPEG4 Slice Q_scale parameter (quant_scale field) (no rawdata) 86 ELEMENT_INSERTBYTEALIGN_H264, //!< Insert the byte align field for H264 (no rawdata) 87 ELEMENT_INSERTBYTEALIGN_MPG4, //!< Insert the byte align field for MPEG4(no rawdata) 88 ELEMENT_INSERTBYTEALIGN_MPG2, //!< Insert the byte align field for MPEG2(no rawdata) 89 ELEMENT_VBV_MPG2, 90 ELEMENT_TEMPORAL_REF_MPG2, 91 ELEMENT_CURRMBNR, //!< Insert the current macrloblock number for a slice. 92 93 ELEMENT_FRAME_NUM, //!< Insert frame_num field (used as ID for ref. pictures in H264) 94 ELEMENT_TEMPORAL_REFERENCE, //!< Insert Temporal Reference field (used as ID for ref. pictures in H263) 95 ELEMENT_EXTENDED_TR, //!< Insert Extended Temporal Reference field 96 ELEMENT_IDR_PIC_ID, //!< Insert idr_pic_id field (used to distinguish consecutive IDR frames) 97 ELEMENT_PIC_ORDER_CNT, //!< Insert pic_order_cnt_lsb field (used for display ordering in H264) 98 ELEMENT_GOB_FRAME_ID, //!< Insert gob_frame_id field (used for display ordering in H263) 99 ELEMENT_VOP_TIME_INCREMENT, //!< Insert vop_time_increment field (used for display ordering in MPEG4) 100 101 ELEMENT_MODULO_TIME_BASE, //!< modulo_time_base used in MPEG4 (depends on vop_time_increment_resolution) 102 103 ELEMENT_BOTTOM_FIELD, //!< Insert bottom_field flag 104 ELEMENT_SLICE_NUM, //!< Insert slice num (used for GOB headers in H263) 105 ELEMENT_MPEG2_SLICE_VERTICAL_POS, //!< Insert slice vertical pos (MPEG2 slice header) 106 ELEMENT_MPEG2_IS_INTRA_SLICE, //!< Insert 1 bit flag indicating if slice is Intra or not (MPEG2 slice header) 107 ELEMENT_MPEG2_PICTURE_STRUCTURE, //!< Insert 2 bit field indicating if the current header is for a frame picture (11), top field (01) or bottom field (10) - (MPEG2 picture header) 108 ELEMENT_REFERENCE, //!< NAL header element. Specifies if this frame is used as reference 109 ELEMENT_ADAPTIVE, //!< Adaptive reference marking mode: this element presented only in reference pictures 110 ELEMENT_DIRECT_SPATIAL_MV_FLAG, //!< Spatial direct mode flag 111 ELEMENT_NUM_REF_IDX_ACTIVE, //!< Override active number of references, if required 112 ELEMENT_REORDER_L0, //!< Reference list 0 reordering 113 ELEMENT_REORDER_L1, //!< Reference list 1 reordering 114 ELEMENT_TEMPORAL_ID, //!< Temporal ID of the picture, used for MVC header 115 ELEMENT_ANCHOR_PIC_FLAG, //!< True if this picture is an anchor picture 116 117 BPH_SEI_NAL_INITIAL_CPB_REMOVAL_DELAY, 118 BPH_SEI_NAL_INITIAL_CPB_REMOVAL_DELAY_OFFSET, 119 PTH_SEI_NAL_CPB_REMOVAL_DELAY, 120 PTH_SEI_NAL_DPB_OUTPUT_DELAY, 121 122 ELEMENT_SLICEWEIGHTEDPREDICTIONSTRUCT, 123 ELEMENT_CUSTOM_QUANT 124 } HEADER_ELEMENT_TYPE; 125 126 typedef struct _MTX_HEADER_ELEMENT_ { 127 HEADER_ELEMENT_TYPE Element_Type; 128 IMG_UINT8 ui8Size; 129 IMG_UINT8 aui8Bits; 130 } MTX_HEADER_ELEMENT; 131 132 133 typedef struct _MTX_HEADER_PARAMS_ { 134 IMG_UINT32 ui32Elements; 135 MTX_HEADER_ELEMENT asElementStream[MAX_HEADERSIZEWORDS-1]; 136 } MTX_HEADER_PARAMS; 137 138 #define ELEMENTS_EMPTY 9999 139 140 /* H264 Structures 141 */ 142 143 /* Define some constants for the variable elements in the header stream */ 144 typedef enum _SHPROFILES { 145 SH_PROFILE_BP = 0, //!< H.264 Baseline Profile 146 SH_PROFILE_MP = 1, //!< H.264 Main Profile 147 SH_PROFILE_HP = 2, //!< H.264 High Profile 148 SH_PROFILE_H444P = 3 //!< H.264 High 4:4:4 Profile 149 } SH_PROFILE_TYPE; 150 151 /* Level number definitions (integer level numbers, non-intermediary only.. except level 1b) */ 152 typedef enum _SHLEVELS { 153 SH_LEVEL_10 = 10, 154 SH_LEVEL_1B = 9, 155 SH_LEVEL_11 = 11, 156 SH_LEVEL_12 = 12, 157 SH_LEVEL_13 = 13, 158 SH_LEVEL_20 = 20, 159 SH_LEVEL_21 = 21, 160 SH_LEVEL_22 = 22, 161 SH_LEVEL_30 = 30, 162 SH_LEVEL_31 = 31, 163 SH_LEVEL_32 = 32, 164 SH_LEVEL_40 = 40, 165 SH_LEVEL_41 = 41, 166 SH_LEVEL_42 = 42, 167 SH_LEVEL_50 = 50, 168 SH_LEVEL_51 = 51 169 } SH_LEVEL_TYPE; 170 171 172 typedef enum _SLHP_SLICEFRAME_TYPE_ { 173 SLHP_P_SLICEFRAME_TYPE, 174 SLHP_B_SLICEFRAME_TYPE, 175 SLHP_I_SLICEFRAME_TYPE, 176 SLHP_SP_SLICEFRAME_TYPE, 177 SLHP_SI_SLICEFRAME_TYPE, 178 SLHP_IDR_SLICEFRAME_TYPE 179 180 } SLHP_SLICEFRAME_TYPE; 181 182 typedef enum _frame_template_type_ { 183 IMG_FRAME_IDR = 0, 184 IMG_FRAME_INTRA, 185 IMG_FRAME_INTER_P, 186 IMG_FRAME_INTER_B, 187 IMG_FRAME_INTER_P_IDR, 188 IMG_FRAME_UNDEFINED 189 } IMG_FRAME_TEMPLATE_TYPE; 190 191 /* This holds the data that is needed at the start of a slice 192 */ 193 typedef struct _SLICE_PARAMS_ { 194 195 IMG_UINT32 ui32Flags; //!< Flags for slice encode 196 197 // the config registers, these are passed straigth through from drivers to hardware. 198 // change per slice 199 IMG_UINT32 ui32SliceConfig; //!< Value to use for Slice Config register 200 IMG_UINT32 ui32IPEControl; //!< Value to use for IPEControl register 201 IMG_UINT32 ui32SeqConfig; //!< Value to use for Sequencer Config register 202 203 IMG_FRAME_TEMPLATE_TYPE eTemplateType; //!< Slice header template type 204 MTX_HEADER_PARAMS sSliceHdrTmpl; //!< Template of corresponding slice header 205 } SLICE_PARAMS; 206 207 /* Input parameters for the header generation 208 * Some of the following data structures may have fields that are actually static.. 209 * may want to prune them down a bit later. 210 */ 211 typedef struct _H264_VUI_PARAMS_STRUC { 212 IMG_UINT32 vui_flag; 213 IMG_UINT32 Time_Scale; 214 IMG_UINT32 num_units_in_tick; 215 IMG_UINT32 bit_rate_value_minus1; /* bitrate/64)-1 */ 216 IMG_UINT32 cbp_size_value_minus1; /* (bitrate*1.5)/16 */ 217 IMG_UINT8 CBR; 218 IMG_UINT8 initial_cpb_removal_delay_length_minus1; 219 IMG_UINT8 cpb_removal_delay_length_minus1; 220 IMG_UINT8 dpb_output_delay_length_minus1; 221 IMG_UINT8 time_offset_length; 222 } H264_VUI_PARAMS; 223 224 typedef struct _H264_CROP_PARAMS_STRUCT_ { 225 IMG_BOOL bClip; 226 IMG_UINT16 ui16LeftCropOffset; 227 IMG_UINT16 ui16RightCropOffset; 228 IMG_UINT16 ui16TopCropOffset; 229 IMG_UINT16 ui16BottomCropOffset; 230 } H264_CROP_PARAMS; 231 232 typedef struct { 233 IMG_UINT8 ui8ScalingLists4x4[6][16]; 234 IMG_UINT8 ui8ScalingLists8x8[2][64]; 235 IMG_UINT32 ui32ListMask; 236 } H264_SCALING_MATRIX_PARAMS; 237 238 typedef struct _H264_SEQUENCE_HEADER_PARAMS_STRUC { 239 SH_PROFILE_TYPE ucProfile; 240 SH_LEVEL_TYPE ucLevel; 241 IMG_UINT8 ucWidth_in_mbs_minus1; 242 IMG_UINT8 ucHeight_in_maps_units_minus1; 243 IMG_UINT8 log2_max_pic_order_cnt; 244 IMG_UINT8 max_num_ref_frames; 245 IMG_UINT8 gaps_in_frame_num_value; 246 IMG_UINT8 ucFrame_mbs_only_flag; 247 IMG_UINT8 VUI_Params_Present; 248 IMG_UINT8 seq_scaling_matrix_present_flag; 249 IMG_BOOL bUseDefaultScalingList; 250 IMG_BOOL bIsLossless; 251 H264_VUI_PARAMS VUI_Params; 252 } H264_SEQUENCE_HEADER_PARAMS; 253 254 typedef struct { 255 IMG_UINT8 pic_parameter_set_id; 256 IMG_UINT8 seq_parameter_set_id; 257 IMG_UINT8 entropy_coding_mode_flag; 258 IMG_UINT8 weighted_pred_flag; 259 IMG_UINT8 weighted_bipred_idc; 260 IMG_INT8 chroma_qp_index_offset; 261 IMG_UINT8 constrained_intra_pred_flag; 262 IMG_UINT8 transform_8x8_mode_flag; 263 IMG_BOOL pic_scaling_matrix_present_flag; 264 IMG_BOOL bUseDefaultScalingList; 265 IMG_INT8 second_chroma_qp_index_offset; 266 } H264_PICTURE_HEADER_PARAMS; 267 268 269 typedef struct _H264_SLICE_HEADER_PARAMS_STRUC { 270 IMG_UINT32 First_MB_Address; 271 IMG_INT32 luma_log2_weight_denom; 272 IMG_INT32 chroma_log2_weight_denom; 273 IMG_INT32 luma_weight_l0[2]; 274 IMG_INT32 luma_offset_l0[2]; 275 IMG_INT32 chromaB_weight_l0[2]; 276 IMG_INT32 chromaB_offset_l0[2]; 277 IMG_INT32 chromaR_weight_l0[2]; 278 IMG_INT32 chromaR_offset_l0[2]; 279 IMG_UINT8 uRefLongTermRefNum[2]; 280 IMG_INT8 diff_ref_pic_num[2]; //when non-zero reorders reference pic list 281 IMG_UINT16 ui16MvcViewIdx; 282 IMG_UINT8 ui8Start_Code_Prefix_Size_Bytes; 283 IMG_UINT8 Frame_Num_DO; 284 IMG_UINT8 Idr_Pic_Id; 285 IMG_UINT8 log2_max_pic_order_cnt; 286 IMG_UINT8 Picture_Num_DO; 287 IMG_UINT8 Disable_Deblocking_Filter_Idc; 288 IMG_UINT8 num_ref_idx_l0_active_minus1; 289 IMG_UINT8 weighted_bipred_idc; 290 IMG_UINT8 uLongTermRefNum; 291 IMG_INT8 iDebAlphaOffsetDiv2; 292 IMG_INT8 iDebBetaOffsetDiv2; 293 SLHP_SLICEFRAME_TYPE SliceFrame_Type; 294 IMG_BOOL bPiCInterlace; 295 IMG_BOOL bFieldType; 296 IMG_BOOL bReferencePicture; 297 IMG_BOOL direct_spatial_mv_pred_flag; 298 IMG_BOOL weighted_pred_flag; // Corresponds to field in the pps 299 IMG_BOOL chroma_weight_l0_flag[2]; 300 IMG_BOOL luma_weight_l0_flag[2]; // Support for 2 ref pictures on P, or 1 pic in each direction on B. 301 IMG_BOOL bIsLongTermRef; 302 IMG_BOOL bRefIsLongTermRef[2]; //Long term reference info for reference frames 303 } H264_SLICE_HEADER_PARAMS; 304 305 /* MPEG4 Structures 306 */ 307 typedef enum _MPEG4_PROFILE { 308 SP = 1, 309 ASP = 3 310 } MPEG4_PROFILE_TYPE; 311 312 typedef enum _FIXED_VOP_TIME_ENUM { 313 _30FPS = 1, 314 _15FPS = 2, 315 _10FPS = 3 316 } FIXED_VOP_TIME_TYPE; 317 318 typedef struct _VBVPARAMS_STRUC { 319 IMG_UINT32 First_half_bit_rate; 320 IMG_UINT32 Latter_half_bit_rate; 321 IMG_UINT32 First_half_vbv_buffer_size; 322 IMG_UINT32 Latter_half_vbv_buffer_size; 323 IMG_UINT32 First_half_vbv_occupancy; 324 IMG_UINT32 Latter_half_vbv_occupancy; 325 } VBVPARAMS; 326 327 328 /* 329 * H263 Structures 330 */ 331 332 typedef enum _VOP_CODING_ENUM { 333 I_FRAME = 0, 334 P_FRAME = 1 335 } VOP_CODING_TYPE, H263_PICTURE_CODING_TYPE; 336 337 typedef enum _SEARCH_RANGE_ENUM { 338 PLUSMINUS_32 = 2, 339 PLUSMINUS_64 = 3, 340 FCODE_EQ_4 = 4 341 } SEARCH_RANGE_TYPE; 342 343 typedef enum _H263_SOURCE_FORMAT_ENUM { 344 _128x96_SubQCIF = 1, 345 _176x144_QCIF = 2, 346 _352x288_CIF = 3, 347 _704x576_4CIF = 4 348 } H263_SOURCE_FORMAT_TYPE; 349 350 351 #define SIZEINBITS(a) (sizeof(a)*8) 352 353 /* H264 header preparation */ 354 355 void tng__H264ES_prepare_sequence_header( 356 void *pHeaderMemory, 357 H264_VUI_PARAMS *psVUI_Params, 358 H264_CROP_PARAMS *psCropParams, 359 IMG_UINT16 ui16PictureWidth, 360 IMG_UINT16 ui16PictureHeight, 361 IMG_UINT32 ui32CustomQuantMask, 362 IMG_UINT8 ui8ProfileIdc, 363 IMG_UINT8 ui8LevelIdc, 364 IMG_UINT8 ui8FieldCount, 365 IMG_UINT8 ui8MaxNumRefFrames, 366 IMG_BOOL bPpsScaling, 367 IMG_BOOL bUseDefaultScalingList, 368 IMG_BOOL bEnableLossless, 369 IMG_BOOL bASO 370 ); 371 372 void tng__H264ES_prepare_picture_header( 373 void *pHeaderMemory, 374 IMG_BOOL bCabacEnabled, 375 IMG_BOOL b_8x8transform, 376 IMG_BOOL bIntraConstrained, 377 IMG_INT8 i8CQPOffset, 378 IMG_BOOL bWeightedPrediction, 379 IMG_UINT8 ui8WeightedBiPred, 380 IMG_BOOL bMvcPPS, 381 IMG_BOOL bScalingMatrix, 382 IMG_BOOL bScalingLists 383 ); 384 385 void tng__H264_prepare_slice_header( 386 IMG_UINT32 *pHeaderMemory, 387 IMG_BOOL bIntraSlice, 388 IMG_BOOL bInterBSlice, 389 IMG_BOOL bMultiRef, 390 IMG_UINT8 ui8DisableDeblockingFilterIDC, 391 IMG_UINT32 ui32DisplayFrameNumber, 392 IMG_UINT32 ui32FrameNumId, 393 IMG_UINT32 uiFirst_MB_Address, 394 IMG_UINT32 uiMBSkipRun, 395 IMG_BOOL bCabacEnabled, 396 IMG_BOOL bIsInterlaced, 397 IMG_UINT8 ui8FieldNum, 398 WEIGHTED_PREDICTION_VALUES *pWeightedSetup, 399 IMG_BOOL bIsLongTermRef); 400 401 /* MPEG4 header preparation */ 402 void tng__MPEG4_prepare_sequence_header( 403 void *pHeaderMemory, 404 IMG_BOOL bBFrame, 405 MPEG4_PROFILE_TYPE sProfile, 406 IMG_UINT8 Profile_and_level_indication, 407 FIXED_VOP_TIME_TYPE sFixed_vop_time_increment, 408 IMG_UINT32 Picture_Width_Pixels, 409 IMG_UINT32 Picture_Height_Pixels, 410 VBVPARAMS * psVBVParams, 411 IMG_UINT32 VopTimeResolution); 412 413 void tng__MPEG4_prepare_vop_header( 414 IMG_UINT32 *pHeaderMem, 415 IMG_BOOL bIsVOP_coded, 416 IMG_UINT32 VOP_time_increment, 417 IMG_UINT8 sSearch_range, 418 IMG_UINT8 eVop_Coding_Type, 419 IMG_UINT32 VopTimeResolution); 420 421 422 /* H263 header preparation */ 423 void tng__H263_prepare_sequence_header( 424 IMG_UINT32 *pHeaderMem, 425 IMG_UINT8 Profile_and_level_indication); 426 427 void tng__H263_prepare_picture_header( 428 IMG_UINT32 *pHeaderMem, 429 IMG_UINT8 Temporal_Ref, 430 H263_PICTURE_CODING_TYPE PictureCodingType, 431 H263_SOURCE_FORMAT_TYPE SourceFormatType, 432 IMG_UINT8 FrameRate, 433 IMG_UINT16 PictureWidth, 434 IMG_UINT16 PictureHeigth); 435 436 void tng__H263_notforsims_prepare_video_pictureheader( 437 MTX_HEADER_PARAMS* pMTX_Header, 438 H263_PICTURE_CODING_TYPE ePictureCodingType, 439 H263_SOURCE_FORMAT_TYPE eSourceFormatType, 440 IMG_UINT8 ui8FrameRate, 441 IMG_UINT32 ui32PictureWidth, 442 IMG_UINT32 ui32PictureHeigth); 443 444 void tng__H263_prepare_GOBslice_header( 445 IMG_UINT32 *pHeaderMem, 446 IMG_UINT8 GOBNumber, 447 IMG_UINT8 GOBFrameId); 448 449 void tng__H264ES_prepare_AUD_header(unsigned char *virtual_addr); 450 451 void tng__H264ES_prepare_SEI_buffering_period_header( 452 unsigned char *virtual_addr, 453 IMG_UINT8 ui8NalHrdBpPresentFlag, 454 IMG_UINT8 ui8nal_cpb_cnt_minus1, 455 IMG_UINT8 ui8nal_initial_cpb_removal_delay_length, 456 IMG_UINT32 ui32nal_initial_cpb_removal_delay, 457 IMG_UINT32 ui32nal_initial_cpb_removal_delay_offset, 458 IMG_UINT8 ui8VclHrdBpPresentFlag, 459 IMG_UINT32 ui32vcl_initial_cpb_removal_delay, 460 IMG_UINT32 ui32vcl_initial_cpb_removal_delay_offset); 461 462 void tng__H264ES_prepare_SEI_picture_timing_header( 463 unsigned char *virtual_addr, 464 IMG_UINT8 ui8CpbDpbDelaysPresentFlag, 465 IMG_UINT32 ui32cpb_removal_delay_length_minus1, 466 IMG_UINT32 ui32dpb_output_delay_length_minus1, 467 IMG_UINT32 ui32cpb_removal_delay, 468 IMG_UINT32 ui32dpb_output_delay, 469 IMG_UINT8 ui8pic_struct_present_flag, 470 IMG_UINT8 ui8pic_struct, 471 IMG_UINT8 ui8NumClockTS, 472 IMG_UINT8 *aui8clock_timestamp_flag, 473 IMG_UINT8 ui8full_timestamp_flag, 474 IMG_UINT8 ui8seconds_flag, 475 IMG_UINT8 ui8minutes_flag, 476 IMG_UINT8 ui8hours_flag, 477 IMG_UINT8 ui8seconds_value, 478 IMG_UINT8 ui8minutes_value, 479 IMG_UINT8 ui8hours_value, 480 IMG_UINT8 ui8ct_type, 481 IMG_UINT8 ui8nuit_field_based_flag, 482 IMG_UINT8 ui8counting_type, 483 IMG_UINT8 ui8discontinuity_flag, 484 IMG_UINT8 ui8cnt_dropped_flag, 485 IMG_UINT8 ui8n_frames, 486 IMG_UINT8 ui8time_offset_length, 487 IMG_INT32 i32time_offset); 488 489 void tng__H264ES_notforsims_prepare_sliceheader( 490 IMG_UINT8 *slice_mem_p, 491 IMG_UINT32 ui32SliceType, 492 IMG_UINT8 ui8DisableDeblockingFilterIDC, 493 IMG_UINT32 uiFirst_MB_Address, 494 IMG_UINT32 uiMBSkipRun, 495 IMG_BOOL bCabacEnabled, 496 IMG_BOOL bIsInterlaced, 497 IMG_UINT16 ui16MvcViewIdx, 498 IMG_BOOL bIsLongTermRef); 499 500 void tng__H264ES_prepare_mvc_sequence_header( 501 void *pHeaderMemory, 502 H264_CROP_PARAMS *psCropParams, 503 IMG_UINT16 ui16PictureWidth, 504 IMG_UINT16 ui16PictureHeight, 505 IMG_UINT32 ui32CustomQuantMask, 506 IMG_UINT8 ui8ProfileIdc, 507 IMG_UINT8 ui8LevelIdc, 508 IMG_UINT8 ui8FieldCount, 509 IMG_UINT8 ui8MaxNumRefFrames, 510 IMG_BOOL bPpsScaling, 511 IMG_BOOL bUseDefaultScalingList, 512 IMG_BOOL bEnableLossless, 513 IMG_BOOL bASO); 514 515 void tng__H263ES_notforsims_prepare_gobsliceheader(IMG_UINT8 *slice_mem_p); 516 void tng__MPEG2_prepare_sliceheader(IMG_UINT8 *slice_mem_p); 517 void tng__MPEG4_notforsims_prepare_vop_header( 518 MTX_HEADER_PARAMS* pMTX_Header, 519 IMG_BOOL bIsVOP_coded, 520 SEARCH_RANGE_TYPE eSearch_range, 521 VOP_CODING_TYPE eVop_Coding_Type); 522 523 #endif /* _TNG_HOSTHEADER_H_ */ 524 525 526