xref: /aosp_15_r20/external/libavc/encoder/svc/isvce_ilp_mv_private_defs.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1 /******************************************************************************
2  *
3  * Copyright (C) 2022 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *****************************************************************************
18  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19  */
20 
21 /**
22 *******************************************************************************
23 * @file
24 *  isvc_svc_ilp_mv_private_defs.h
25 *
26 * @brief
27 *  Contains datatype and macro definitions used exclusively in
28 *  ILP MV derivations
29 *
30 *******************************************************************************
31 */
32 
33 #ifndef _ISVCE_ILP_MV_PRIVATE_DEFS_H_
34 #define _ISVCE_ILP_MV_PRIVATE_DEFS_H_
35 
36 #include "ih264_typedefs.h"
37 #include "isvc_defs.h"
38 #include "isvc_structs.h"
39 #include "isvce_structs.h"
40 
41 /* Structs */
42 /* Offsets, etc used for resLayer MV upsampling */
43 /* Derived as per 'G.8.6.1.1' for all MB's once during init */
44 typedef struct ilp_mv_mb_state_t
45 {
46     coordinates_t as_pu_positions[MAX_PU_IN_MB_COL][MAX_PU_IN_MB_ROW];
47 
48     coordinates_t as_mb_positions[MAX_PU_IN_MB_COL][MAX_PU_IN_MB_ROW];
49 } ilp_mv_mb_state_t;
50 
51 typedef struct ilp_mv_layer_state_t
52 {
53     layer_resampler_props_t *ps_props;
54 
55     ilp_mv_mb_state_t *ps_mb_states;
56 
57     coordinates_t s_mv_scale;
58 
59 } ilp_mv_layer_state_t;
60 
61 typedef struct ilp_mv_state_t
62 {
63     /* Array of size numSpatialLayers */
64     ilp_mv_layer_state_t *ps_layer_state;
65 
66 } ilp_mv_state_t;
67 
68 #endif
69