OSDN Git Service

test: check whether MVC encoding is support
[android-x86/hardware-intel-common-vaapi.git] / src / gen9_avc_const_def.h
1 /*
2  * Copyright @ 2017 Intel Corporation
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWAR OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  *
24  * Authors:
25  *    Pengfei Qu <Pengfei.qu@intel.com>
26  *
27  */
28
29 #ifndef GEN9_AVC_const_DEF_H
30 #define GEN9_AVC_const_DEF_H
31
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <stdint.h>
35 #include <stdbool.h>
36
37 #define GEN9_AVC_NUM_REF_CHECK_WIDTH      3840
38 #define GEN9_AVC_NUM_REF_CHECK_HEIGHT     2160
39 #define GEN9_AVC_MBENC_CURBE_SIZE    88
40 #define AVC_QP_MAX    52
41 #define PRESET_NUM    8
42 #define GEN95_AVC_MAX_LAMBDA              0xEFFF
43 #define GEN95_AVC_DEFAULT_TRELLIS_QUANT_INTRA_ROUNDING      5
44
45 extern const char gen9_avc_sfd_cost_table_p_frame[AVC_QP_MAX];
46 extern const char gen9_avc_sfd_cost_table_b_frame[AVC_QP_MAX];
47
48 extern const unsigned int gen9_avc_old_intra_mode_cost[AVC_QP_MAX];
49 extern const unsigned int gen9_avc_mv_cost_p_skip_adjustment[AVC_QP_MAX];
50 extern const unsigned short gen9_avc_skip_value_p[2][2][64];
51 extern const unsigned short gen9_avc_skip_value_b[2][2][64];
52
53 // QP is from 0 - 51, pad it to 64 since BRC needs array size to be 64 bytes
54 extern const unsigned char gen9_avc_adaptive_intra_scaling_factor[64];
55 extern const unsigned char gen9_avc_intra_scaling_factor[64];
56 // AVC MBEnc CURBE init data
57 extern const unsigned int gen9_avc_mbenc_curbe_normal_i_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
58 extern const unsigned int gen9_avc_mbenc_curbe_normal_p_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
59 extern const unsigned int gen9_avc_mbenc_curbe_normal_b_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
60 // AVC I_DIST CURBE init data
61 extern const unsigned int gen9_avc_mbenc_curbe_i_frame_dist_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
62 // AVC ME CURBE init data
63 extern const unsigned int gen9_avc_me_curbe_init_data[39];
64 //extern const unsigned int gen9_avc_brc_init_reset_curbe_init_data[24];
65 //extern const unsigned int gen9_avc_frame_brc_update_curbe_init_data[16];
66 //extern const unsigned int gen9_avc_mb_brc_update_curbe_init_data[7];
67 extern const unsigned int gen75_avc_mode_mv_cost_table[3][52][8];
68 extern const unsigned int gen9_avc_mode_mv_cost_table[3][52][8];
69 extern const unsigned char gen75_avc_qp_adjustment_dist_threshold_max_frame_threshold_dist_qp_adjustment_ipb[576];
70 extern const unsigned char  gen9_avc_qp_adjustment_dist_threshold_max_frame_threshold_dist_qp_adjustment_ipb[576];
71 // SkipVal (DW offset 9) in the following table needs to be changed by Driver based on the BlockbasedSkip and Transform Flag.
72 // Kernel indexes this table based on the MB QP.
73 extern const unsigned int gen9_avc_mb_brc_const_data[3][AVC_QP_MAX][16];
74 extern const unsigned short gen9_avc_ref_cost[3][64];
75
76 //
77 extern const bool gen9_avc_mbbrc_enable[PRESET_NUM];
78 extern const unsigned int gen9_avc_super_hme[PRESET_NUM];
79 extern const unsigned int gen9_avc_ultra_hme[PRESET_NUM];
80
81 // 1 for P, 3 for P & B
82 extern const unsigned int gen9_avc_all_fractional[PRESET_NUM];
83 extern const unsigned char gen9_avc_max_ref_id0_progressive_4k[PRESET_NUM];
84 extern const unsigned char gen9_avc_max_ref_id0[PRESET_NUM];
85 extern const unsigned char gen9_avc_max_b_ref_id0[PRESET_NUM];
86 extern const unsigned char gen9_avc_max_ref_id1[PRESET_NUM];
87 extern const unsigned int gen9_avc_inter_rounding_p[PRESET_NUM];
88 extern const unsigned int gen9_avc_inter_rounding_b_ref[PRESET_NUM];
89 extern const unsigned int gen9_avc_inter_rounding_b[PRESET_NUM];
90 // This applies only for progressive pictures. For interlaced, CAF is currently not disabled.
91 extern const unsigned int gen9_avc_disable_all_fractional_check_for_high_res[PRESET_NUM];
92 extern const unsigned char gen9_avc_adaptive_inter_rounding_p[AVC_QP_MAX];
93 extern const unsigned char gen9_avc_adaptive_inter_rounding_b[AVC_QP_MAX];
94 extern const unsigned char gen9_avc_adaptive_inter_rounding_p_without_b[AVC_QP_MAX];
95 extern const unsigned int gen9_avc_trellis_quantization_enable[PRESET_NUM];
96 extern const unsigned int gen9_avc_trellis_quantization_rounding[PRESET_NUM];
97 extern const unsigned int gen9_avc_enable_adaptive_trellis_quantization[PRESET_NUM];
98
99 //new add
100 extern const unsigned int gen9_avc_super_combine_dist[PRESET_NUM + 1];
101 extern const unsigned char gen9_avc_p_me_method[PRESET_NUM + 1];
102 extern const unsigned char gen9_avc_b_me_method[PRESET_NUM + 1];
103 extern const unsigned int gen9_avc_enable_adaptive_search[PRESET_NUM];
104 extern const unsigned int gen9_avc_max_len_sp[PRESET_NUM];
105 extern const unsigned int gen9_avc_max_ftq_based_skip[PRESET_NUM];
106 extern const unsigned int gen9_avc_mr_disable_qp_check[PRESET_NUM];
107 extern const unsigned int gen9_avc_multi_pred[PRESET_NUM];
108 extern const unsigned int gen9_avc_hme_b_combine_len[PRESET_NUM];
109 extern const unsigned int gen9_avc_hme_combine_len[PRESET_NUM];
110
111 extern const unsigned int gen9_avc_search_x[PRESET_NUM];
112 extern const unsigned int gen9_avc_search_y[PRESET_NUM];
113 extern const unsigned int gen9_avc_b_search_x[PRESET_NUM];
114 extern const unsigned int gen9_avc_b_search_y[PRESET_NUM];
115 extern const unsigned char gen9_avc_enable_adaptive_tx_decision[PRESET_NUM];
116 extern const unsigned char gen9_avc_kernel_mode[PRESET_NUM];
117
118 /* Gen95  */
119 extern const unsigned int gen95_avc_trellis_quantization_rounding[PRESET_NUM];
120 extern const unsigned int gen95_avc_mbenc_curbe_normal_i_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
121 extern const unsigned int gen95_avc_mbenc_curbe_normal_p_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
122 extern const unsigned int gen95_avc_mbenc_curbe_normal_b_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
123 extern const unsigned int gen95_avc_mbenc_curbe_i_frame_dist_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
124 extern const unsigned int gen95_avc_tq_lambda_i_frame[AVC_QP_MAX][2];
125 extern const unsigned int gen95_avc_tq_lambda_p_frame[AVC_QP_MAX][2];
126 extern const unsigned int gen95_avc_tq_lambda_b_frame[AVC_QP_MAX][2];
127 extern const unsigned short gen95_avc_lambda_data[256];
128 extern const unsigned char gen95_avc_ftq25[64];
129 #endif //GEN9_AVC_const_DEF_H