OSDN Git Service

ENC: add const data/table for AVC encoder
[android-x86/hardware-intel-common-vaapi.git] / src / gen9_avc_const_def.h
1 /*
2  * Copyright ? 2016 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
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
43 extern const char gen9_avc_sfd_cost_table_p_frame[AVC_QP_MAX];
44 extern const char gen9_avc_sfd_cost_table_b_frame[AVC_QP_MAX];
45
46 extern const unsigned int gen9_avc_old_intra_mode_cost[AVC_QP_MAX];
47 extern const unsigned int gen9_avc_mv_cost_p_skip_adjustment[AVC_QP_MAX];
48 extern const unsigned short gen9_avc_skip_value_p[2][2][64];
49 extern const unsigned short gen9_avc_skip_value_b[2][2][64];
50
51 // QP is from 0 - 51, pad it to 64 since BRC needs array size to be 64 bytes
52 extern const unsigned char gen9_avc_adaptive_intra_scaling_factor[64];
53 extern const unsigned char gen9_avc_intra_scaling_factor[64];
54 // AVC MBEnc CURBE init data
55 extern const unsigned int gen9_avc_mbenc_curbe_normal_i_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
56 extern const unsigned int gen9_avc_mbenc_curbe_normal_p_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
57 extern const unsigned int gen9_avc_mbenc_curbe_normal_b_frame_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
58 // AVC I_DIST CURBE init data
59 extern const unsigned int gen9_avc_mbenc_curbe_i_frame_dist_init_data[GEN9_AVC_MBENC_CURBE_SIZE];
60 // AVC ME CURBE init data
61 extern const unsigned int gen9_avc_me_curbe_init_data[39];
62 //extern const unsigned int gen9_avc_brc_init_reset_curbe_init_data[24];
63 //extern const unsigned int gen9_avc_frame_brc_update_curbe_init_data[16];
64 //extern const unsigned int gen9_avc_mb_brc_update_curbe_init_data[7];
65 extern const unsigned int gen75_avc_mode_mv_cost_table[3][52][8];
66 extern const unsigned int gen9_avc_mode_mv_cost_table[3][52][8];
67 extern const unsigned char gen75_avc_qp_adjustment_dist_threshold_max_frame_threshold_dist_qp_adjustment_ipb[576];
68 extern const unsigned char  gen9_avc_qp_adjustment_dist_threshold_max_frame_threshold_dist_qp_adjustment_ipb[576];
69 // SkipVal (DW offset 9) in the following table needs to be changed by Driver based on the BlockbasedSkip and Transform Flag.
70 // Kernel indexes this table based on the MB QP.
71 extern const unsigned int gen9_avc_mb_brc_const_data[3][AVC_QP_MAX][16];
72 extern const unsigned short gen9_avc_ref_cost[3][64];
73
74 //
75 extern const bool gen9_avc_mbbrc_enable[PRESET_NUM];
76 extern const unsigned int gen9_avc_super_hme[PRESET_NUM];
77 extern const unsigned int gen9_avc_ultra_hme[PRESET_NUM];
78
79 // 1 for P, 3 for P & B
80 extern const unsigned int gen9_avc_all_fractional[PRESET_NUM];
81 extern const unsigned char gen9_avc_max_ref_id0_progressive_4k[PRESET_NUM];
82 extern const unsigned char gen9_avc_max_ref_id0[PRESET_NUM];
83 extern const unsigned char gen9_avc_max_b_ref_id0[PRESET_NUM];
84 extern const unsigned char gen9_avc_max_ref_id1[PRESET_NUM];
85 extern const unsigned int gen9_avc_inter_rounding_p[PRESET_NUM];
86 extern const unsigned int gen9_avc_inter_rounding_b_ref[PRESET_NUM];
87 extern const unsigned int gen9_avc_inter_rounding_b[PRESET_NUM];
88 // This applies only for progressive pictures. For interlaced, CAF is currently not disabled.
89 extern const unsigned int gen9_avc_disable_all_fractional_check_for_high_res[PRESET_NUM];
90 extern unsigned char gen9_avc_adaptive_inter_rounding_p[AVC_QP_MAX];
91 extern unsigned char gen9_avc_adaptive_inter_rounding_b[AVC_QP_MAX];
92 extern unsigned char gen9_avc_adaptive_inter_rounding_p_without_b[AVC_QP_MAX];
93 extern const unsigned int gen9_avc_trellis_quantization_enable[PRESET_NUM];
94 extern const unsigned int gen9_avc_trellis_quantization_rounding[PRESET_NUM];
95 extern const unsigned int gen9_avc_enable_adaptive_trellis_quantization[PRESET_NUM];
96
97 //new add
98 extern const unsigned int gen9_avc_super_combine_dist[PRESET_NUM + 1];
99 extern const unsigned char gen9_avc_p_me_method[PRESET_NUM + 1];
100 extern const unsigned char gen9_avc_b_me_method[PRESET_NUM + 1];
101 extern const unsigned int gen9_avc_enable_adaptive_search[PRESET_NUM];
102 extern const unsigned int gen9_avc_max_len_sp[PRESET_NUM];
103 extern const unsigned int gen9_avc_max_ftq_based_skip[PRESET_NUM];
104 extern const unsigned int gen9_avc_mr_disable_qp_check[PRESET_NUM];
105 extern const unsigned int gen9_avc_multi_pred[PRESET_NUM];
106 extern const unsigned int gen9_avc_hme_b_combine_len[PRESET_NUM];
107 extern const unsigned int gen9_avc_hme_combine_len[PRESET_NUM];
108
109 extern const unsigned int gen9_avc_search_x[PRESET_NUM];
110 extern const unsigned int gen9_avc_search_y[PRESET_NUM];
111 extern const unsigned int gen9_avc_b_search_x[PRESET_NUM];
112 extern const unsigned int gen9_avc_b_search_y[PRESET_NUM];
113 extern const unsigned char gen9_avc_enable_adaptive_tx_decision[PRESET_NUM];
114 extern const char gen9_avc_kernel_mode[PRESET_NUM];
115 #endif //GEN9_AVC_const_DEF_H