xref: /aosp_15_r20/external/libavc/encoder/svc/isvce_pred_structs.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2022 The Android Open Source Project
4*495ae853SAndroid Build Coastguard Worker  *
5*495ae853SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*495ae853SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*495ae853SAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*495ae853SAndroid Build Coastguard Worker  *
9*495ae853SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*495ae853SAndroid Build Coastguard Worker  *
11*495ae853SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*495ae853SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*495ae853SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*495ae853SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*495ae853SAndroid Build Coastguard Worker  * limitations under the License.
16*495ae853SAndroid Build Coastguard Worker  *
17*495ae853SAndroid Build Coastguard Worker  *****************************************************************************
18*495ae853SAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*495ae853SAndroid Build Coastguard Worker  */
20*495ae853SAndroid Build Coastguard Worker 
21*495ae853SAndroid Build Coastguard Worker /**
22*495ae853SAndroid Build Coastguard Worker *******************************************************************************
23*495ae853SAndroid Build Coastguard Worker * @file
24*495ae853SAndroid Build Coastguard Worker *  isvce_pred_structs.h
25*495ae853SAndroid Build Coastguard Worker *
26*495ae853SAndroid Build Coastguard Worker * @brief
27*495ae853SAndroid Build Coastguard Worker *  Contains struct definition used for prediction
28*495ae853SAndroid Build Coastguard Worker *
29*495ae853SAndroid Build Coastguard Worker * @author
30*495ae853SAndroid Build Coastguard Worker *  ittiam
31*495ae853SAndroid Build Coastguard Worker *
32*495ae853SAndroid Build Coastguard Worker * @remarks
33*495ae853SAndroid Build Coastguard Worker *  None
34*495ae853SAndroid Build Coastguard Worker *
35*495ae853SAndroid Build Coastguard Worker *******************************************************************************
36*495ae853SAndroid Build Coastguard Worker */
37*495ae853SAndroid Build Coastguard Worker 
38*495ae853SAndroid Build Coastguard Worker #ifndef _ISVCE_PRED_STRUCTS_H_
39*495ae853SAndroid Build Coastguard Worker #define _ISVCE_PRED_STRUCTS_H_
40*495ae853SAndroid Build Coastguard Worker 
41*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h"
42*495ae853SAndroid Build Coastguard Worker #include "isvc_defs.h"
43*495ae853SAndroid Build Coastguard Worker #include "isvc_structs.h"
44*495ae853SAndroid Build Coastguard Worker #include "isvce_defs.h"
45*495ae853SAndroid Build Coastguard Worker 
46*495ae853SAndroid Build Coastguard Worker /**
47*495ae853SAndroid Build Coastguard Worker  * PU information
48*495ae853SAndroid Build Coastguard Worker  */
49*495ae853SAndroid Build Coastguard Worker typedef struct
50*495ae853SAndroid Build Coastguard Worker {
51*495ae853SAndroid Build Coastguard Worker     /**
52*495ae853SAndroid Build Coastguard Worker      *  Motion Vector
53*495ae853SAndroid Build Coastguard Worker      */
54*495ae853SAndroid Build Coastguard Worker     mv_t s_mv;
55*495ae853SAndroid Build Coastguard Worker 
56*495ae853SAndroid Build Coastguard Worker     /**
57*495ae853SAndroid Build Coastguard Worker      *  Ref index
58*495ae853SAndroid Build Coastguard Worker      */
59*495ae853SAndroid Build Coastguard Worker     WORD8 i1_ref_idx;
60*495ae853SAndroid Build Coastguard Worker 
61*495ae853SAndroid Build Coastguard Worker } isvce_enc_pu_mv_t;
62*495ae853SAndroid Build Coastguard Worker 
63*495ae853SAndroid Build Coastguard Worker /*
64*495ae853SAndroid Build Coastguard Worker  * Total Pu info for an MB
65*495ae853SAndroid Build Coastguard Worker  */
66*495ae853SAndroid Build Coastguard Worker typedef struct isvce_enc_pu_t
67*495ae853SAndroid Build Coastguard Worker {
68*495ae853SAndroid Build Coastguard Worker     /* Array with ME info for all lists */
69*495ae853SAndroid Build Coastguard Worker     isvce_enc_pu_mv_t as_me_info[NUM_PRED_DIRS];
70*495ae853SAndroid Build Coastguard Worker 
71*495ae853SAndroid Build Coastguard Worker     UWORD8 au1_mvp_idx[NUM_PRED_DIRS];
72*495ae853SAndroid Build Coastguard Worker 
73*495ae853SAndroid Build Coastguard Worker     /**
74*495ae853SAndroid Build Coastguard Worker      *  PU X position in terms of min PU (4x4) units
75*495ae853SAndroid Build Coastguard Worker      */
76*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_pos_x_in_4x4;
77*495ae853SAndroid Build Coastguard Worker 
78*495ae853SAndroid Build Coastguard Worker     /**
79*495ae853SAndroid Build Coastguard Worker      *  PU Y position in terms of min PU (4x4) units
80*495ae853SAndroid Build Coastguard Worker      */
81*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_pos_y_in_4x4;
82*495ae853SAndroid Build Coastguard Worker 
83*495ae853SAndroid Build Coastguard Worker     /**
84*495ae853SAndroid Build Coastguard Worker      *  PU width in pixels = (u1_wd_in_4x4_m1 + 1) << 2
85*495ae853SAndroid Build Coastguard Worker      */
86*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_wd_in_4x4_m1;
87*495ae853SAndroid Build Coastguard Worker 
88*495ae853SAndroid Build Coastguard Worker     /**
89*495ae853SAndroid Build Coastguard Worker      *  PU height in pixels = (u1_ht_in_4x4_m1 + 1) << 2
90*495ae853SAndroid Build Coastguard Worker      */
91*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_ht_in_4x4_m1;
92*495ae853SAndroid Build Coastguard Worker 
93*495ae853SAndroid Build Coastguard Worker     /**
94*495ae853SAndroid Build Coastguard Worker      *  PRED_L0, PRED_L1, PRED_BI
95*495ae853SAndroid Build Coastguard Worker      */
96*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_pred_mode;
97*495ae853SAndroid Build Coastguard Worker 
98*495ae853SAndroid Build Coastguard Worker } isvce_enc_pu_t;
99*495ae853SAndroid Build Coastguard Worker 
100*495ae853SAndroid Build Coastguard Worker typedef struct intra4x4_mode_data_t
101*495ae853SAndroid Build Coastguard Worker {
102*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_predicted_mode;
103*495ae853SAndroid Build Coastguard Worker 
104*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_mode;
105*495ae853SAndroid Build Coastguard Worker 
106*495ae853SAndroid Build Coastguard Worker } intra4x4_mode_data_t;
107*495ae853SAndroid Build Coastguard Worker 
108*495ae853SAndroid Build Coastguard Worker typedef intra4x4_mode_data_t intra8x8_mode_data_t;
109*495ae853SAndroid Build Coastguard Worker 
110*495ae853SAndroid Build Coastguard Worker typedef struct intra16x16_mode_data_t
111*495ae853SAndroid Build Coastguard Worker {
112*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_mode;
113*495ae853SAndroid Build Coastguard Worker 
114*495ae853SAndroid Build Coastguard Worker } intra16x16_mode_data_t;
115*495ae853SAndroid Build Coastguard Worker 
116*495ae853SAndroid Build Coastguard Worker typedef struct enc_intra_pu_t
117*495ae853SAndroid Build Coastguard Worker {
118*495ae853SAndroid Build Coastguard Worker     intra4x4_mode_data_t as_i4x4_mode_data[MAX_TU_IN_MB];
119*495ae853SAndroid Build Coastguard Worker 
120*495ae853SAndroid Build Coastguard Worker     intra8x8_mode_data_t as_i8x8_mode_data[MIN_TU_IN_MB];
121*495ae853SAndroid Build Coastguard Worker 
122*495ae853SAndroid Build Coastguard Worker     intra16x16_mode_data_t s_i16x16_mode_data;
123*495ae853SAndroid Build Coastguard Worker 
124*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_chroma_intra_mode;
125*495ae853SAndroid Build Coastguard Worker 
126*495ae853SAndroid Build Coastguard Worker } enc_intra_pu_t;
127*495ae853SAndroid Build Coastguard Worker 
128*495ae853SAndroid Build Coastguard Worker typedef struct isvce_mb_info_t
129*495ae853SAndroid Build Coastguard Worker {
130*495ae853SAndroid Build Coastguard Worker     isvce_enc_pu_t as_pu[ENC_MAX_PU_IN_MB];
131*495ae853SAndroid Build Coastguard Worker 
132*495ae853SAndroid Build Coastguard Worker     enc_intra_pu_t s_intra_pu;
133*495ae853SAndroid Build Coastguard Worker 
134*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_cbp;
135*495ae853SAndroid Build Coastguard Worker 
136*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_csbp;
137*495ae853SAndroid Build Coastguard Worker 
138*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_res_csbp;
139*495ae853SAndroid Build Coastguard Worker 
140*495ae853SAndroid Build Coastguard Worker     UWORD16 u2_mb_type;
141*495ae853SAndroid Build Coastguard Worker 
142*495ae853SAndroid Build Coastguard Worker     WORD32 i4_mb_distortion;
143*495ae853SAndroid Build Coastguard Worker 
144*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_base_mode_flag;
145*495ae853SAndroid Build Coastguard Worker 
146*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_residual_prediction_flag;
147*495ae853SAndroid Build Coastguard Worker 
148*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_tx_size;
149*495ae853SAndroid Build Coastguard Worker 
150*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_mb_qp;
151*495ae853SAndroid Build Coastguard Worker 
152*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_is_intra;
153*495ae853SAndroid Build Coastguard Worker 
154*495ae853SAndroid Build Coastguard Worker } isvce_mb_info_t;
155*495ae853SAndroid Build Coastguard Worker 
156*495ae853SAndroid Build Coastguard Worker #endif
157