/* * 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: * Edward Lin <edward.lin@intel.com> * */ #ifndef _TNG_HOSTAIR_H_ #define _TNG_HOSTAIR_H_ #include "img_types.h" #include "tng_hostdefs.h" #include "tng_hostcode.h" IMG_UINT32 tng_fill_slice_map(context_ENC_p ctx, IMG_INT32 i32SlotNum, IMG_UINT32 ui32StreamIndex); void tng_air_set_input_control(context_ENC_p ctx, IMG_UINT8 ui8StreamID); void tng_air_set_output_control(context_ENC_p ctx, IMG_UINT8 ui8StreamID); VAStatus tng_air_buf_create(context_ENC_p ctx); void tng_air_buf_free(context_ENC_p ctx); typedef struct { IMG_UINT32 ui32SAD_Intra_MBInfo; //!< SATD/SAD for best Intra candidate (24-bit unsigned value) plus 8 bit field containing MB info IMG_UINT32 ui32SAD_Inter_MBInfo; //!< SATD/SAD for best Inter candidate (24-bit unsigned value) plus 8 bit field containing MB info IMG_UINT32 ui32SAD_Direct_MBInfo; //!< SATD/SAD for best Direct candidate (24-bit unsigned value) plus 8 bit field containing MB info IMG_UINT32 ui32Reserved; } IMG_BEST_MULTIPASS_MB_PARAMS, *P_IMG_BEST_MULTIPASS_MB_PARAMS; typedef struct { IMG_UINT16 ui16MV4_0_X; //!< MV4_0_X (this is also MV8_0_X if block size is 8x8, or MV16_X if block size is 16x16) IMG_UINT16 ui16MV4_0_Y; //!< MV4_0_Y (this is also MV8_0_Y if block size is 8x8, or MV16_Y if block size is 16x16) IMG_UINT16 ui16MV4_1_X; //!< MV4_1_X IMG_UINT16 ui16MV4_1_Y; //!< MV4_1_Y IMG_UINT16 ui16MV4_2_X; //!< MV4_2_X IMG_UINT16 ui16MV4_2_Y; //!< MV4_2_Y IMG_UINT16 ui16MV4_3_X; //!< MV4_3_X IMG_UINT16 ui16MV4_3_Y; //!< MV4_3_Y IMG_UINT16 ui16MV4_4_X; //!< MV4_4_X (this is also MV8_1_X if block size is 8x8, or 2nd MV if block size is 8x16) IMG_UINT16 ui16MV4_4_Y; //!< MV4_4_Y (this is also MV8_1_Y if block size is 8x8, or 2nd MV if block size is 8x16) IMG_UINT16 ui16MV4_5_X; //!< MV4_5_X IMG_UINT16 ui16MV4_5_Y; //!< MV4_5_Y IMG_UINT16 ui16MV4_6_X; //!< MV4_6_X IMG_UINT16 ui16MV4_6_Y; //!< MV4_6_Y IMG_UINT16 ui16MV4_7_X; //!< MV4_7_X IMG_UINT16 ui16MV4_7_Y; //!< MV4_7_Y IMG_UINT16 ui16MV4_8_X; //!< MV4_8_X (this is also MV8_2_X if block size is 8x8, or 2nd MV if block size is 16x8) IMG_UINT16 ui16MV4_8_Y; //!< MV4_8_Y (this is also MV8_2_Y if block size is 8x8, or 2nd MV if block size is 16x8) IMG_UINT16 ui16MV4_9_X; //!< MV4_9_X IMG_UINT16 ui16MV4_9_Y; //!< MV4_9_Y IMG_UINT16 ui16MV4_10_X; //!< MV4_10_X IMG_UINT16 ui16MV4_10_Y; //!< MV4_10_Y IMG_UINT16 ui16MV4_11_X; //!< MV4_11_X IMG_UINT16 ui16MV4_11_Y; //!< MV4_11_Y IMG_UINT16 ui16MV4_12_X; //!< MV4_12_X (this is also MV8_3_X if block size is 8x8) IMG_UINT16 ui16MV4_12_Y; //!< MV4_12_Y (this is also MV8_3_Y if block size is 8x8) IMG_UINT16 ui16MV4_13_X; //!< MV4_13_X IMG_UINT16 ui16MV4_13_Y; //!< MV4_13_Y IMG_UINT16 ui16MV4_14_X; //!< MV4_14_X IMG_UINT16 ui16MV4_14_Y; //!< MV4_14_Y IMG_UINT16 ui16MV4_15_X; //!< MV4_15_X IMG_UINT16 ui16MV4_15_Y; //!< MV4_15_Y } IMG_BEST_MULTIPASS_MB_PARAMS_IPMV, *P_IMG_BEST_MULTIPASS_MB_PARAMS_IPMV; /*! ***************************************************************************** * @details * @brief Bit fields for IMG_BEST_MULTIPASS_MB_PARAMS structure ****************************************************************************/ #define IMG_BEST_MULTIPASS_SAD_SHIFT (0) #define IMG_BEST_MULTIPASS_SAD_MASK (0xFFFFFF) #define IMG_BEST_MULTIPASS_MB_TYPE_SHIFT (24) #define IMG_BEST_MULTIPASS_MB_TYPE_MASK (0x03 << IMG_BEST_MULTIPASS_MB_TYPE_SHIFT) #define IMG_BEST_MULTIPASS_INTRA_BLOCK_SIZE_SHIFT (26) #define IMG_BEST_MULTIPASS_INTRA_BLOCK_SIZE_MASK (0x03 << IMG_BEST_MULTIPASS_INTRA_BLOCK_SIZE_SHIFT) #define IMG_BEST_MULTIPASS_TOPLEFT_SKIPDIRECT_SHIFT (28) #define IMG_BEST_MULTIPASS_TOPLEFT_SKIPDIRECT_MASK (0x01 << IMG_BEST_MULTIPASS_TOPLEFT_SKIPDIRECT_SHIFT) #define IMG_BEST_MULTIPASS_TOPRIGHT_SKIPDIRECT_SHIFT (29) #define IMG_BEST_MULTIPASS_TOPRIGHT_SKIPDIRECT_MASK (0x01 << IMG_BEST_MULTIPASS_TOPRIGHT_SKIPDIRECT_SHIFT) #define IMG_BEST_MULTIPASS_BOTTOMLEFT_SKIPDIRECT_SHIFT (30) #define IMG_BEST_MULTIPASS_BOTTOMLEFT_SKIPDIRECT_MASK (0x01 << IMG_BEST_MULTIPASS_BOTTOMLEFT_SKIPDIRECT_SHIFT) #define IMG_BEST_MULTIPASS_BOTTOMRIGHT_SKIPDIRECT_SHIFT (31) #define IMG_BEST_MULTIPASS_BOTTOMRIGHT_SKIPDIRECT_MASK (0x01 << IMG_BEST_MULTIPASS_BOTTOMRIGHT_SKIPDIRECT_SHIFT) #define IMG_BEST_MULTIPASS_TOPLEFT_CODING_SHIFT (24) #define IMG_BEST_MULTIPASS_TOPLEFT_CODING_MASK (0x01 << IMG_BEST_MULTIPASS_TOPLEFT_CODING_SHIFT) #define IMG_BEST_MULTIPASS_TOPRIGHT_CODING_SHIFT (25) #define IMG_BEST_MULTIPASS_TOPRIGHT_CODING_MASK (0x01 << IMG_BEST_MULTIPASS_TOPRIGHT_CODING_SHIFT) #define IMG_BEST_MULTIPASS_BOTTOMLEFT_CODING_SHIFT (26) #define IMG_BEST_MULTIPASS_BOTTOMLEFT_CODING_MASK (0x01 << IMG_BEST_MULTIPASS_BOTTOMLEFT_CODING_SHIFT) #define IMG_BEST_MULTIPASS_BOTTOMRIGHT_CODING_SHIFT (27) #define IMG_BEST_MULTIPASS_BOTTOMRIGHT_CODING_MASK (0x01 << IMG_BEST_MULTIPASS_BOTTOMRIGHT_CODING_SHIFT) #define IMG_BEST_MULTIPASS_IS_16x16_BEST_SHIFT (28) #define IMG_BEST_MULTIPASS_IS_16x16_BEST_MASK (0x01 << IMG_BEST_MULTIPASS_IS_16x16_BEST_SHIFT) #define IMG_BEST_MULTIPASS_IS_16x8_BEST_SHIFT (29) #define IMG_BEST_MULTIPASS_IS_16x8_BEST_MASK (0x01 << IMG_BEST_MULTIPASS_IS_16x8_BEST_SHIFT) #define IMG_BEST_MULTIPASS_IS_8x16_BEST_SHIFT (30) #define IMG_BEST_MULTIPASS_IS_8x16_BEST_MASK (0x01 << IMG_BEST_MULTIPASS_IS_8x16_BEST_SHIFT) // Final bit reserved #define IMG_BEST_MULTIPASS_TOPLEFT_BEST_INTER_CAND_SHIFT (24) #define IMG_BEST_MULTIPASS_TOPLEFT_BEST_INTER_CAND_MASK (0x03 << IMG_BEST_MULTIPASS_TOPLEFT_BEST_INTER_CAND_SHIFT) #define IMG_BEST_MULTIPASS_TOPRIGHT_BEST_INTER_CAND_SHIFT (26) #define IMG_BEST_MULTIPASS_TOPRIGHT_BEST_INTER_CAND_MASK (0x03 << IMG_BEST_MULTIPASS_TOPRIGHT_BEST_INTER_CAND_SHIFT) #define IMG_BEST_MULTIPASS_BOTTOMLEFT_BEST_INTER_CAND_SHIFT (28) #define IMG_BEST_MULTIPASS_BOTTOMLEFT_BEST_INTER_CAND_MASK (0x03 << IMG_BEST_MULTIPASS_BOTTOMLEFT_BEST_INTER_CAND_SHIFT) #define IMG_BEST_MULTIPASS_BOTTOMRIGHT_BEST_INTER_CAND_SHIFT (30) #define IMG_BEST_MULTIPASS_BOTTOMRIGHT_BEST_INTER_CAND_MASK (0x03 << IMG_BEST_MULTIPASS_BOTTOMRIGHT_BEST_INTER_CAND_SHIFT) #endif //_TNG_HOSTBIAS_H_