| /* |
| * Copyright (c) 2011 Intel Corporation. All Rights Reserved. |
| * Copyright (c) Imagination Technologies Limited, UK |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a |
| * copy of this software and associated documentation files (the |
| * "Software"), to deal in the Software without restriction, including |
| * without limitation the rights to use, copy, modify, merge, publish, |
| * distribute, sub license, and/or sell copies of the Software, and to |
| * permit persons to whom the Software is furnished to do so, subject to |
| * the following conditions: |
| * |
| * The above copyright notice and this permission notice (including the |
| * next paragraph) shall be included in all copies or substantial portions |
| * of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. |
| * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR |
| * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
| * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| * |
| * Authors: |
| * Elaine Wang <elaine.wang@intel.com> |
| * Zeng Li <zeng.li@intel.com> |
| * Edward Lin <edward.lin@intel.com> |
| * |
| */ |
| #ifndef _TNG_HOSTCODE_H_ |
| #define _TNG_HOSTCODE_H_ |
| |
| #include "img_types.h" |
| #include "hwdefs/coreflags.h" |
| #include "psb_drv_video.h" |
| #include "psb_surface.h" |
| #include "tng_cmdbuf.h" |
| #include "tng_hostdefs.h" |
| #include "tng_hostheader.h" |
| #include "tng_jpegES.h" |
| #include "tng_slotorder.h" |
| |
| #define tng__max(a, b) ((a)> (b)) ? (a) : (b) |
| #define tng__min(a, b) ((a) < (b)) ? (a) : (b) |
| |
| #define F_MASK(basename) (MASK_##basename) |
| #define F_SHIFT(basename) (SHIFT_##basename) |
| #define F_ENCODE(val,basename) (((val)<<(F_SHIFT(basename)))&(F_MASK(basename))) |
| #define F_EXTRACT(val,basename) (((val)&(F_MASK(basename)))>>(F_SHIFT(basename))) |
| #define F_INSERT(word,val,basename) (((word)&~(F_MASK(basename))) | (F_ENCODE((val),basename))) |
| |
| #define COMM_CMD_DATA_BUF_NUM (20) |
| #define TOPAZHP_MAX_HIGHCMD_DATASIZE 256 |
| #define COMM_CMD_DATA_BUF_SIZE (TOPAZHP_MAX_HIGHCMD_DATASIZE) |
| #define COMM_WB_DATA_BUF_SIZE (64) |
| |
| #define COMM_CMD_CODED_BUF_NUM (4) |
| #define COMM_CMD_FRAME_BUF_NUM (16) |
| #define COMM_CMD_PICMGMT_BUF_NUM (4) |
| |
| /**************** command buffer count ****************/ |
| typedef struct context_ENC_cmdbuf_s { |
| unsigned int ui32LowCmdCount; //!< count of low-priority commands sent to TOPAZ |
| unsigned int ui32HighCmdCount; //!< count of high-priority commands sent to TOPAZ |
| unsigned int ui32HighWBReceived; //!< count of high-priority commands received from TOPAZ |
| unsigned int ui32LastSync; //!< Last sync value sent |
| } context_ENC_cmdbuf; |
| |
| typedef struct context_ENC_mem_s { |
| struct psb_buffer_s bufs_mtx_context; |
| struct psb_buffer_s bufs_seq_header; //pSeqHeaderMem //!< Partially coded Sequence header |
| struct psb_buffer_s bufs_sub_seq_header; //pSubSetSeqHeaderMem //!< Partially coded Subset sequence header for H264 mvc |
| struct psb_buffer_s bufs_sei_header; //pAUDHeaderMem + pSEIBufferingPeriodHeaderMem + pSEIPictureTimingHeaderMem |
| struct psb_buffer_s bufs_pic_template; //+ apPicHdrTemplateMem[4] |
| struct psb_buffer_s bufs_slice_template; //apSliceParamsTemplateMem[NUM_SLICE_TYPES]; |
| struct psb_buffer_s bufs_lowpower_params; |
| |
| struct psb_buffer_s bufs_above_params; //psAboveParams[TOPAZHP_NUM_PIPES] //!< Picture level parameters (supplied by driver) |
| struct psb_buffer_s bufs_recon_pictures; //apsReconPictures[MAX_PIC_NODES_ARRAYSIZE];// three reference pictures (2 input and 1 output) |
| struct psb_buffer_s bufs_colocated; //apsColocated[MAX_PIC_NODES_ARRAYSIZE];// three colocated vector stores (2 input and 1 output) |
| struct psb_buffer_s bufs_mv; //apsMV[MAX_MV_ARRAYSIZE]; // two colocated vector stores |
| struct psb_buffer_s bufs_interview_mv; //apsInterViewMV[2]; |
| |
| struct psb_buffer_s bufs_src_phy_addr; //apSrcPhysAddr; |
| |
| // WEIGHTED PREDICTION |
| struct psb_buffer_s bufs_weighted_prediction; //apsWeightedPredictionMem[MAX_SOURCE_SLOTS_SL]; |
| struct psb_buffer_s bufs_flat_gop; //pFlatGopStruct; //!< Flat MiniGop structure |
| struct psb_buffer_s bufs_hierar_gop; //pHierarGopStruct; //!< Hierarchical MiniGop structure |
| |
| #ifdef LTREFHEADER |
| struct psb_buffer_s bufs_lt_ref_header; //pLtRefHeader[MAX_SOURCE_SLOTS_SL]; |
| #endif |
| |
| struct psb_buffer_s bufs_custom_quant; |
| struct psb_buffer_s bufs_slice_map; //IMG_BUFFER* apsSliceMap[MAX_SOURCE_SLOTS_SL]; //!< Slice map of the source picture |
| |
| /* | MVSetingsB0 | MVSetingsB1 | ... | MVSetings Bn | */ |
| struct psb_buffer_s bufs_mv_setting_btable; //pMVSettingsBTable;// three colocated vector stores (2 input and 1 output) |
| struct psb_buffer_s bufs_mv_setting_hierar; //pMVSettingsHierarchical; |
| struct psb_buffer_s bufs_recon_buffer; //psReconBuffer; |
| struct psb_buffer_s bufs_patch_recon_buffer; //psPatchedReconBuffer; |
| |
| struct psb_buffer_s bufs_first_pass_out_params; //sFirstPassOutParamBuf[MAX_SOURCE_SLOTS_SL]; //!< Output Parameters of the First Pass |
| #ifndef EXCLUDE_BEST_MP_DECISION_DATA |
| struct psb_buffer_s bufs_first_pass_out_best_multipass_param; //sFirstPassOutBestMultipassParamBuf[MAX_SOURCE_SLOTS_SL]; //!< Output Selectable Best MV Parameters of the First Pass |
| #endif |
| struct psb_buffer_s bufs_mb_ctrl_in_params; //sMBCtrlInParamsBuf[MAX_SOURCE_SLOTS_SL]; //!< Input Parameters to the second pass |
| |
| struct psb_buffer_s bufs_ref_frames; |
| |
| //defined for dual-stream |
| struct psb_buffer_s bufs_lowpower_data; |
| struct psb_buffer_s bufs_lowpower_reg; |
| } context_ENC_mem; |
| |
| typedef struct context_ENC_mem_size_s { |
| IMG_UINT32 mtx_context; |
| IMG_UINT32 seq_header; //pSeqHeaderMem //!< Partially coded Sequence header |
| //+ pSubSetSeqHeaderMem //!< Partially coded Subset sequence header for H264 mvc |
| IMG_UINT32 sei_header; //pAUDHeaderMem + pSEIBufferingPeriodHeaderMem + pSEIPictureTimingHeaderMem |
| IMG_UINT32 pic_template; //+ apPicHdrTemplateMem[4] |
| IMG_UINT32 slice_template; //apSliceParamsTemplateMem[NUM_SLICE_TYPES]; |
| IMG_UINT32 writeback; |
| |
| IMG_UINT32 above_params; //psAboveParams[TOPAZHP_NUM_PIPES] //!< Picture level parameters (supplied by driver) |
| IMG_UINT32 recon_pictures; //apsReconPictures[MAX_PIC_NODES_ARRAYSIZE];// three reference pictures (2 input and 1 output) |
| IMG_UINT32 colocated; //apsColocated[MAX_PIC_NODES_ARRAYSIZE];// three colocated vector stores (2 input and 1 output) |
| IMG_UINT32 mv; //apsMV[MAX_MV_ARRAYSIZE]; // two colocated vector stores |
| IMG_UINT32 interview_mv; //apsInterViewMV[2]; |
| |
| IMG_UINT32 src_phy_addr; //apSrcPhysAddr; |
| |
| // WEIGHTED PREDICTION |
| IMG_UINT32 weighted_prediction; //apsWeightedPredictionMem[MAX_SOURCE_SLOTS_SL]; |
| IMG_UINT32 flat_gop; //pFlatGopStruct; //!< Flat MiniGop structure |
| IMG_UINT32 hierar_gop; //pHierarGopStruct; //!< Hierarchical MiniGop structure |
| |
| #ifdef LTREFHEADER |
| IMG_UINT32 lt_ref_header; //pLtRefHeader[MAX_SOURCE_SLOTS_SL]; |
| #endif |
| |
| IMG_UINT32 custom_quant; |
| IMG_UINT32 slice_map; //IMG_BUFFER* apsSliceMap[MAX_SOURCE_SLOTS_SL]; //!< Slice map of the source picture |
| |
| /* | MVSetingsB0 | MVSetingsB1 | ... | MVSetings Bn | */ |
| IMG_UINT32 mv_setting_btable; //pMVSettingsBTable;// three colocated vector stores (2 input and 1 output) |
| IMG_UINT32 mv_setting_hierar; //pMVSettingsHierarchical; |
| IMG_UINT32 recon_buffer; //psReconBuffer; |
| IMG_UINT32 patch_recon_buffer; //psPatchedReconBuffer; |
| IMG_UINT32 first_pass_out_params; //!< Output Parameters of the First Pass |
| #ifndef EXCLUDE_BEST_MP_DECISION_DATA |
| IMG_UINT32 first_pass_out_best_multipass_param;//!< Output Selectable Best MV Parameters of the First Pass |
| #endif |
| IMG_UINT32 mb_ctrl_in_params; |
| |
| //defined for dual-stream |
| IMG_UINT32 lowpower_params; |
| IMG_UINT32 lowpower_data; |
| /****************************************/ |
| IMG_UINT32 coded_buf; |
| |
| } context_ENC_mem_size; |
| |
| /**************** surface buffer infor ****************/ |
| typedef struct context_ENC_frame_buf_s { |
| object_surface_p src_surface; |
| object_surface_p rec_surface; |
| #ifdef _TNG_FRAMES_ |
| object_surface_p ref_surface; |
| object_surface_p ref_surface1; |
| #else |
| object_surface_p ref_surface[16]; |
| #endif |
| object_buffer_p coded_buf; |
| |
| IMG_UINT8 ui8SourceSlotReserved; |
| IMG_UINT8 ui8CodedSlotReserved; |
| |
| // save previous settings |
| object_surface_p previous_src_surface; |
| object_surface_p previous_ref_surface; |
| object_surface_p previous_dest_surface; /* reconstructed surface */ |
| object_buffer_p previous_coded_buf; |
| object_buffer_p pprevious_coded_buf; |
| |
| IMG_UINT16 ui16BufferStride; //!< input buffer stride |
| IMG_UINT16 ui16BufferHeight; //!< input buffer width |
| } context_ENC_frame_buf; |
| |
| typedef struct CARC_PARAMS_s |
| { |
| IMG_BOOL bCARC; |
| IMG_INT32 i32CARCBaseline; |
| IMG_UINT32 ui32CARCThreshold; |
| IMG_UINT32 ui32CARCCutoff; |
| IMG_UINT32 ui32CARCNegRange; |
| IMG_UINT32 ui32CARCNegScale; |
| IMG_UINT32 ui32CARCPosRange; |
| IMG_UINT32 ui32CARCPosScale; |
| IMG_UINT32 ui32CARCShift; |
| } CARC_PARAMS; |
| |
| typedef struct _LOWPOWER_PARAMS { |
| IMG_UINT32 host_context; |
| IMG_UINT32 codec; |
| IMG_UINT32 data_saving_buf_handle; /*TTM buffer handle*/ |
| IMG_UINT32 data_saving_buf_size; /*MTX RAM size - Firmware Size. Maximum value is 64K*/ |
| IMG_UINT32 reg_saving_buf_handle; /*TTM buffer handle. One page is enough.*/ |
| IMG_UINT32 reg_saving_buf_size; |
| } LOWPOWER_PARAMS; |
| |
| typedef struct _H264_PICMGMT_UP_PARAMS { |
| IMG_INT8 updated; |
| IMG_INT8 ref_type; |
| IMG_INT8 gop_struct; |
| IMG_INT8 skip_frame; |
| |
| IMG_INT8 eos; |
| IMG_INT8 rc_updated; |
| IMG_INT8 flush; |
| IMG_INT8 quant; |
| } H264_PICMGMT_UP_PARAMS; |
| |
| /*! |
| * \ADAPTIVE_INTRA_REFRESH_INFO_TYPE |
| * \brief Structure for parameters requierd for Adaptive intra refresh. |
| */ |
| typedef struct |
| { |
| IMG_INT8 *pi8AIR_Table; |
| IMG_INT32 i32NumAIRSPerFrame; |
| IMG_INT16 i16AIRSkipCnt; |
| IMG_UINT16 ui16AIRScanPos; |
| IMG_INT32 i32SAD_Threshold; |
| } ADAPTIVE_INTRA_REFRESH_INFO_TYPE; |
| |
| |
| struct context_ENC_s { |
| object_context_p obj_context; /* back reference */ |
| context_ENC_mem_size ctx_mem_size; |
| context_ENC_frame_buf ctx_frame_buf; |
| context_ENC_mem ctx_mem[2]; |
| context_ENC_cmdbuf ctx_cmdbuf[2]; |
| IMG_UINT32 ui32FrameCount[2]; |
| |
| struct psb_buffer_s bufs_writeback; |
| |
| IMG_FRAME_TYPE eFrameType; |
| IMG_FRAME_TYPE ePreFrameType; |
| |
| IMG_CODEC eCodec; |
| CARC_PARAMS sCARCParams; |
| IMG_ENC_CAPS sCapsParams; |
| IMG_ENCODE_FEATURES sEncFeatures; |
| H264_CROP_PARAMS sCropParams; |
| H264_VUI_PARAMS sVuiParams; |
| FRAME_ORDER_INFO sFrameOrderInfo; |
| // Adaptive Intra Refresh Control structure |
| ADAPTIVE_INTRA_REFRESH_INFO_TYPE sAirInfo; |
| |
| IMG_UINT32 ui32RawFrameCount; |
| IMG_UINT32 ui32HalfWayBU[NUM_SLICE_TYPES]; |
| IMG_UINT32 ui32LastPicture; |
| |
| IMG_UINT32 ui32CoreRev; |
| IMG_UINT32 ui32StreamID; |
| IMG_UINT32 ui32FCode; |
| IMG_UINT32 ui32BasicUnit; |
| IMG_UINT8 ui8ProfileIdc; |
| IMG_UINT8 ui8LevelIdc; |
| IMG_UINT8 ui8FieldCount; |
| IMG_UINT8 ui8VPWeightedImplicitBiPred; |
| IMG_UINT8 ui8MaxNumRefFrames; |
| IMG_UINT8 i8CQPOffset; |
| IMG_INT iFineYSearchSize; |
| |
| IMG_UINT8 aui8CustomQuantParams4x4[6][16]; |
| IMG_UINT8 aui8CustomQuantParams8x8[2][64]; |
| IMG_UINT32 ui32CustomQuantMask; |
| |
| IMG_BOOL bInsertPicHeader; |
| IMG_UINT32 ui32PpsScalingCnt; |
| |
| /**************** FIXME: unknown ****************/ |
| IMG_UINT uiCbrBufferTenths; //TOPAZHP_DEFAULT_uiCbrBufferTenths |
| |
| /**************** IMG_VIDEO_PARAMS ****************/ |
| IMG_BOOL16 bVPAdaptiveRoundingDisable; |
| IMG_INT16 ui16UseCustomScalingLists; |
| IMG_UINT8 ui8RefSpacing; |
| IMG_BOOL bUseDefaultScalingList; |
| IMG_BOOL bEnableLossless; |
| IMG_BOOL bLossless8x8Prefilter; |
| IMG_BOOL bEnableCumulativeBiases; |
| |
| /*! |
| *********************************************************************************** |
| * Description : Video encode context |
| ************************************************************************************/ |
| /* stream level params */ |
| IMG_STANDARD eStandard; //!< Video standard |
| IMG_UINT16 ui16SourceWidth; //!< source frame width |
| IMG_UINT16 ui16SourceHeight; //!< source frame height |
| IMG_UINT16 ui16Width; //!< target output width |
| IMG_UINT16 ui16FrameHeight; //!< target output height |
| IMG_UINT16 ui16PictureHeight; //!< target output height |
| IMG_UINT16 ui16BufferStride; //!< input buffer stride |
| IMG_UINT16 ui16BufferHeight; //!< input buffer width |
| IMG_UINT8 ui8FrameRate; |
| |
| IMG_UINT32 ui32DebugCRCs; |
| IMG_FORMAT eFormat; //!< Pixel format of the source surface |
| |
| /* Numbers of array elements that will be allocated */ |
| IMG_INT32 i32PicNodes; |
| IMG_INT32 i32MVStores; |
| IMG_INT32 i32CodedBuffers; |
| |
| /* slice control parameters */ |
| |
| /* per core params */ |
| PIC_PARAMS sPicParams; //!< Picture level parameters (supplied by driver) |
| IMG_BOOL bWeightedPrediction; |
| IMG_UINT8 ui8WeightedBiPred; |
| IMG_UINT8 ui8CustomQuantSlot; |
| |
| /* these values set at picture level & written in at slice */ |
| IMG_UINT32 ui32IPEControl; //!< common bits IPE control register for entire picture |
| IMG_UINT32 ui32PredCombControl; //!< common bits of Predictor-combiner control register for entire picture |
| IMG_BOOL bCabacEnabled; //!< FLAG to enable Cabac mode |
| IMG_UINT32 ui32CabacBinLimit; //!< Min Bin Limit after which the Topaz hardware would encode MB as IPCM |
| IMG_UINT32 ui32CabacBinFlex; //!< Max Flex-Limit, the Topaz-HW will encode MB as IPCM after (BinLimit+BinFlex) |
| |
| IMG_UINT32 ui32FirstPicFlags; |
| IMG_UINT32 ui32NonFirstPicFlags; |
| |
| IMG_BOOL bIsInterlaced; |
| IMG_BOOL bIsInterleaved; |
| IMG_BOOL bTopFieldFirst; |
| IMG_BOOL bArbitrarySO; |
| IMG_UINT32 ui32NextSlice; |
| IMG_UINT8 ui8SlicesPerPicture; |
| IMG_UINT8 ui8DeblockIDC; |
| // We want to keep track of the basic unit size, as it is needed in deciding the number of macroblocks in a kick |
| IMG_UINT32 ui32KickSize; |
| IMG_UINT32 ui32VopTimeResolution; |
| IMG_UINT32 ui32IdrPeriod; |
| IMG_UINT32 ui32IntraCnt; |
| IMG_UINT32 ui32IntraCntSave; |
| IMG_BOOL bMultiReferenceP; |
| IMG_BOOL bSpatialDirect; |
| IMG_UINT8 ui8MPEG2IntraDCPrecision; // Only used in MPEG2, 2 bit field (0 = 8 bit, 1 = 9 bit, 2 = 10 bit and 3=11 bit precision). Set to zero for other encode standards. |
| |
| IMG_MV_SETTINGS sMVSettingsIdr; |
| IMG_MV_SETTINGS sMVSettingsNonB[MAX_BFRAMES + 1]; |
| |
| /* | MVSetingsB0 | MVSetingsB1 | ... | MVSetings Bn | */ |
| IMG_BOOL b_is_mv_setting_hierar; |
| |
| // Source slots |
| IMG_FRAME *apsSourceSlotBuff[MAX_SOURCE_SLOTS_SL]; // Source slots |
| IMG_UINT32 aui32SourceSlotPOC[MAX_SOURCE_SLOTS_SL]; // POCs of frames in slots |
| IMG_UINT32 ui32pseudo_rand_seed; |
| IMG_UINT8 ui8SlotsInUse; // Number of source slots used |
| IMG_UINT8 ui8SlotsCoded; // Number of coded slots used |
| |
| IMG_BOOL bSrcAllocInternally; // True for internal source frame allocation |
| |
| // Coded slots |
| //IMG_CODED_BUFFER * apsCodedSlotBuff[MAX_CODED_BUFFERS]; // Coded slots |
| IMG_BOOL bCodedAllocInternally; // True for internal coded frame allocation |
| //IMG_CODED_BUFFER * apsInternalCoded[MAX_CODED_BUFFERS]; // Frames placed in slots when using internal coded frame allocation |
| |
| |
| IMG_UINT32 ui32FlushAtFrame; |
| IMG_UINT32 ui32FlushedAtFrame; |
| IMG_UINT32 ui32EncodeSent; |
| IMG_UINT32 ui32EncodeRequested; |
| IMG_UINT32 ui32FramesEncoded; |
| IMG_BOOL bEncoderIdle; // Indicates that the encoder is waiting for data, Set to true at start of encode |
| IMG_BOOL bAutoEncode; |
| IMG_BOOL bSliceLevel; |
| IMG_BOOL bAborted; |
| |
| IMG_UINT32 ui32ReconPOC; |
| IMG_UINT32 ui32NextRecon; |
| IMG_UINT32 ui32BuffersStatusReg; |
| |
| IMG_RC_PARAMS sRCParams; |
| IMG_BIAS_TABLES sBiasTables; |
| IMG_BIAS_PARAMS sBiasParams; |
| |
| IMG_UINT8 ui8H263SourceFormat; |
| |
| IMG_BOOL bOverlapping; |
| IMG_BOOL bInsertSeqHeader; |
| |
| IMG_UINT32 ui32EncodePicProcessing; |
| IMG_UINT8 ui8ExtraWBRetrieved; |
| |
| IMG_UINT8 ui8EnableSelStatsFlags; //!< Flags to enable selective first-pass statistics gathering by the hardware. Bit 1 - First Stage Motion Search Data, Bit 2 - Best Multipass MB Decision Data, Bit 3 - Best Multipass Motion Vectors. (First stage Table 2 motion vectors are always switched on) |
| |
| IMG_BOOL bEnableInpCtrl; //!< Enable Macro-block input control |
| IMG_BOOL bEnableAIR; //!< Enable Adaptive Intra Refresh |
| IMG_BOOL bEnableCIR; //!< Enable Cyclic Intra Refresh |
| IMG_INT32 i32NumAIRMBs; //!< n = Max number of AIR MBs per frame, 0 = _ALL_ MBs over threshold will be marked as AIR Intras, -1 = Auto 10% |
| IMG_INT32 i32AIRThreshold; //!< n = SAD Threshold above which a MB is a AIR MB candidate, -1 = Auto adjusting threshold |
| IMG_INT16 i16AIRSkipCnt; //?!< n = Number of MBs to skip in AIR Table between frames, -1 = Random (0 - NumAIRMbs) skip between frames in AIR table |
| // INPUT CONTROL |
| IMG_UINT16 ui16IntraRefresh; |
| IMG_INT32 i32LastCIRIndex; |
| |
| IMG_BOOL bEnableHostBias; |
| IMG_BOOL bEnableHostQP; |
| |
| IMG_BOOL bCustomScaling; |
| IMG_BOOL bPpsScaling; |
| IMG_BOOL bH2648x8Transform; |
| IMG_BOOL bH264IntraConstrained; |
| IMG_UINT32 ui32VertMVLimit; |
| IMG_BOOL16 bLimitNumVectors; |
| // IMG_BOOL16 bDisableBitStuffing; |
| IMG_UINT8 ui8CodedSkippedIndex; |
| IMG_UINT8 ui8InterIntraIndex; |
| // SEI_INSERTION |
| IMG_BOOL bInsertHRDParams; |
| // |
| IMG_UINT32 uChunksPerMb; |
| IMG_UINT32 uMaxChunks; |
| IMG_UINT32 uPriorityChunks; |
| |
| IMG_UINT8 ui8SourceSlotReserved; |
| IMG_UINT8 ui8CodedSlotReserved; |
| IMG_UINT8 ui8SliceReceivedInFrame; |
| |
| /* Low latency stuff */ |
| IMG_UINT8 ui8ActiveCodedBuffer; |
| IMG_UINT8 ui8BasePipe; |
| IMG_UINT8 ui8PipesToUse; |
| IMG_UINT32 ui32ActiveBufferBytesCoded; |
| IMG_UINT32 ui32AcriveBufferPreviousBytes; |
| |
| IMG_UINT8 ui8HighestStorageNumber; |
| |
| IMG_BOOL bEnableMVC; //!< True if MVC is enabled. False by default |
| IMG_UINT16 ui16MVCViewIdx; //!< View Idx of this MVC view |
| IMG_BOOL bHighLatency; |
| IMG_UINT32 uMBspS; |
| IMG_BOOL bSkipDuplicateVectors; |
| IMG_BOOL bNoOffscreenMv; |
| IMG_BOOL idr_force_flag; |
| |
| IMG_BOOL bNoSequenceHeaders; |
| IMG_BOOL bUseFirmwareALLRC; //!< Defines if aLL RC firmware to be loaded |
| |
| |
| //JPEG encode buffer sizes |
| uint32_t jpeg_pic_params_size; |
| uint32_t jpeg_header_mem_size; |
| uint32_t jpeg_header_interface_mem_size; |
| |
| //JPEG encode context data |
| TOPAZHP_JPEG_ENCODER_CONTEXT *jpeg_ctx; |
| |
| /* Save actual H263 width/height */ |
| IMG_UINT16 h263_actual_width; |
| IMG_UINT16 h263_actual_height; |
| |
| uint32_t buffer_size; |
| uint32_t initial_buffer_fullness; |
| |
| /* qp/maxqp/minqp/bitrate/intra_period */ |
| uint32_t rc_update_flag; |
| IMG_UINT16 max_qp; |
| }; |
| |
| typedef struct context_ENC_s *context_ENC_p; |
| |
| #define SURFACE_INFO_SKIP_FLAG_SETTLED 0X80000000 |
| #define GET_SURFACE_INFO_skipped_flag(psb_surface) ((int) (psb_surface->extra_info[5])) |
| #define SET_SURFACE_INFO_skipped_flag(psb_surface, value) psb_surface->extra_info[5] = (SURFACE_INFO_SKIP_FLAG_SETTLED | value) |
| #define CLEAR_SURFACE_INFO_skipped_flag(psb_surface) psb_surface->extra_info[5] = 0 |
| |
| VAStatus tng_CreateContext(object_context_p obj_context, |
| object_config_p obj_config, |
| unsigned char is_JPEG); |
| |
| //VAStatus tng_InitContext(context_ENC_p ctx); |
| |
| void tng_DestroyContext( |
| object_context_p obj_context, |
| unsigned char is_JPEG); |
| |
| VAStatus tng_BeginPicture(context_ENC_p ctx); |
| VAStatus tng_EndPicture(context_ENC_p ctx); |
| |
| void tng_setup_slice_params( |
| context_ENC_p ctx, IMG_UINT16 YSliceStartPos, |
| IMG_UINT16 SliceHeight, IMG_BOOL IsIntra, |
| IMG_BOOL VectorsValid, int bySliceQP); |
| |
| VAStatus tng__send_encode_slice_params( |
| context_ENC_p ctx, |
| IMG_BOOL IsIntra, |
| IMG_UINT16 CurrentRow, |
| IMG_UINT8 DeblockIDC, |
| IMG_UINT32 FrameNum, |
| IMG_UINT16 SliceHeight, |
| IMG_UINT16 CurrentSlice); |
| |
| VAStatus tng_RenderPictureParameter(context_ENC_p ctx); |
| void tng__setup_enc_profile_features(context_ENC_p ctx, IMG_UINT32 ui32EncProfile); |
| VAStatus tng__patch_hw_profile(context_ENC_p ctx); |
| void tng_reset_encoder_params(context_ENC_p ctx); |
| unsigned int tng__get_ipe_control(IMG_CODEC eEncodingFormat); |
| void tng__UpdateRCBitsTransmitted(context_ENC_p ctx); |
| void tng__trace_in_params(IMG_MTX_VIDEO_CONTEXT* psMtxEncCtx); |
| void tng__trace_mtx_context(IMG_MTX_VIDEO_CONTEXT* psMtxEncCtx); |
| VAStatus tng__alloc_init_buffer( |
| psb_driver_data_p driver_data, |
| unsigned int size, |
| psb_buffer_type_t type, |
| psb_buffer_p buf); |
| |
| #endif //_TNG_HOSTCODE_H_ |