| /* |
| * 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_ |