xref: /aosp_15_r20/external/libavc/encoder/ime_distortion_metrics.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2015 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 *  ime_distortion_metrics.h
25*495ae853SAndroid Build Coastguard Worker *
26*495ae853SAndroid Build Coastguard Worker * @brief
27*495ae853SAndroid Build Coastguard Worker *  This file contains declarations of routines that compute distortion
28*495ae853SAndroid Build Coastguard Worker *  between two macro/sub blocks of identical dimensions
29*495ae853SAndroid Build Coastguard Worker *
30*495ae853SAndroid Build Coastguard Worker * @author
31*495ae853SAndroid Build Coastguard Worker *  Ittiam
32*495ae853SAndroid Build Coastguard Worker *
33*495ae853SAndroid Build Coastguard Worker * @remarks
34*495ae853SAndroid Build Coastguard Worker *  None
35*495ae853SAndroid Build Coastguard Worker *
36*495ae853SAndroid Build Coastguard Worker *******************************************************************************
37*495ae853SAndroid Build Coastguard Worker */
38*495ae853SAndroid Build Coastguard Worker 
39*495ae853SAndroid Build Coastguard Worker #ifndef _IME_DISTORTION_METRICS_H_
40*495ae853SAndroid Build Coastguard Worker #define _IME_DISTORTION_METRICS_H_
41*495ae853SAndroid Build Coastguard Worker 
42*495ae853SAndroid Build Coastguard Worker 
43*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
44*495ae853SAndroid Build Coastguard Worker /* Type definitions for function prototypes                                  */
45*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
46*495ae853SAndroid Build Coastguard Worker 
47*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad_ft(UWORD8 *pu1_src,
48*495ae853SAndroid Build Coastguard Worker                                 UWORD8 *pu1_est,
49*495ae853SAndroid Build Coastguard Worker                                 WORD32 src_strd,
50*495ae853SAndroid Build Coastguard Worker                                 WORD32 est_strd,
51*495ae853SAndroid Build Coastguard Worker                                 WORD32 i4_max_sad,
52*495ae853SAndroid Build Coastguard Worker                                 WORD32 *pi4_mb_distortion);
53*495ae853SAndroid Build Coastguard Worker 
54*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad4_diamond(UWORD8 *pu1_ref,
55*495ae853SAndroid Build Coastguard Worker                                       UWORD8 *pu1_src,
56*495ae853SAndroid Build Coastguard Worker                                       WORD32 ref_strd,
57*495ae853SAndroid Build Coastguard Worker                                       WORD32 src_strd,
58*495ae853SAndroid Build Coastguard Worker                                       WORD32 *pi4_sad);
59*495ae853SAndroid Build Coastguard Worker 
60*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad3_diamond(UWORD8 *pu1_ref1,
61*495ae853SAndroid Build Coastguard Worker                                       UWORD8 *pu1_ref2,
62*495ae853SAndroid Build Coastguard Worker                                       UWORD8 *pu1_ref3,
63*495ae853SAndroid Build Coastguard Worker                                       UWORD8 *pu1_src,
64*495ae853SAndroid Build Coastguard Worker                                       WORD32 ref_strd,
65*495ae853SAndroid Build Coastguard Worker                                       WORD32 src_strd,
66*495ae853SAndroid Build Coastguard Worker                                       WORD32 *pi4_sad);
67*495ae853SAndroid Build Coastguard Worker 
68*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad2_diamond(UWORD8 *pu1_ref1,
69*495ae853SAndroid Build Coastguard Worker                                       UWORD8 *pu1_ref2,
70*495ae853SAndroid Build Coastguard Worker                                       UWORD8 *pu1_src,
71*495ae853SAndroid Build Coastguard Worker                                       WORD32 ref_strd,
72*495ae853SAndroid Build Coastguard Worker                                       WORD32 src_strd,
73*495ae853SAndroid Build Coastguard Worker                                       WORD32 *pi4_sad);
74*495ae853SAndroid Build Coastguard Worker 
75*495ae853SAndroid Build Coastguard Worker typedef void ime_sub_pel_compute_sad_16x16_ft(UWORD8 *pu1_src,
76*495ae853SAndroid Build Coastguard Worker                                               UWORD8 *pu1_ref_half_x,
77*495ae853SAndroid Build Coastguard Worker                                               UWORD8 *pu1_ref_half_y,
78*495ae853SAndroid Build Coastguard Worker                                               UWORD8 *pu1_ref_half_xy,
79*495ae853SAndroid Build Coastguard Worker                                               WORD32 src_strd,
80*495ae853SAndroid Build Coastguard Worker                                               WORD32 ref_strd,
81*495ae853SAndroid Build Coastguard Worker                                               WORD32 *pi4_sad);
82*495ae853SAndroid Build Coastguard Worker 
83*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad_stat(UWORD8 *pu1_src,
84*495ae853SAndroid Build Coastguard Worker                                   UWORD8 *pu1_est,
85*495ae853SAndroid Build Coastguard Worker                                   WORD32 src_strd,
86*495ae853SAndroid Build Coastguard Worker                                   WORD32 est_strd,
87*495ae853SAndroid Build Coastguard Worker                                   UWORD16 *pu2_thrsh,
88*495ae853SAndroid Build Coastguard Worker                                   WORD32 *pi4_mb_distortion,
89*495ae853SAndroid Build Coastguard Worker                                   UWORD32 *pu4_is_zero);
90*495ae853SAndroid Build Coastguard Worker 
91*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_satqd_16x16_lumainter_ft(UWORD8 *pu1_src,
92*495ae853SAndroid Build Coastguard Worker                                                   UWORD8 *pu1_est,
93*495ae853SAndroid Build Coastguard Worker                                                   WORD32 src_strd,
94*495ae853SAndroid Build Coastguard Worker                                                   WORD32 est_strd,
95*495ae853SAndroid Build Coastguard Worker                                                   UWORD16 *pu2_thrsh,
96*495ae853SAndroid Build Coastguard Worker                                                   WORD32 *pi4_mb_distortion,
97*495ae853SAndroid Build Coastguard Worker                                                   UWORD32 *pu4_is_zero);
98*495ae853SAndroid Build Coastguard Worker 
99*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_satqd_8x16_chroma_ft(UWORD8 *pu1_src,
100*495ae853SAndroid Build Coastguard Worker                                               UWORD8 *pu1_est,
101*495ae853SAndroid Build Coastguard Worker                                               WORD32 src_strd,
102*495ae853SAndroid Build Coastguard Worker                                               WORD32 est_strd,
103*495ae853SAndroid Build Coastguard Worker                                               WORD32 i4_max_sad,
104*495ae853SAndroid Build Coastguard Worker                                               UWORD16 *thrsh);
105*495ae853SAndroid Build Coastguard Worker 
106*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_satqd_16x16_lumaintra_ft(UWORD8 *pu1_src,
107*495ae853SAndroid Build Coastguard Worker                                                   UWORD8 *pu1_est,
108*495ae853SAndroid Build Coastguard Worker                                                   WORD32 src_strd,
109*495ae853SAndroid Build Coastguard Worker                                                   WORD32 est_strd,
110*495ae853SAndroid Build Coastguard Worker                                                   WORD32 i4_max_sad,
111*495ae853SAndroid Build Coastguard Worker                                                   UWORD16 *thrsh,
112*495ae853SAndroid Build Coastguard Worker                                                   WORD32 *pi4_mb_distortion,
113*495ae853SAndroid Build Coastguard Worker                                                   UWORD8 *sig_nz_sad);
114*495ae853SAndroid Build Coastguard Worker 
115*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
116*495ae853SAndroid Build Coastguard Worker /* Function Declarations                                                     */
117*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
118*495ae853SAndroid Build Coastguard Worker 
119*495ae853SAndroid Build Coastguard Worker /* C declarations */
120*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16;
121*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast;
122*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8;
123*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8;
124*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_8x8;
125*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_4x4;
126*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog;
127*495ae853SAndroid Build Coastguard Worker ime_compute_sad3_diamond ime_calculate_sad3_prog;
128*495ae853SAndroid Build Coastguard Worker ime_compute_sad2_diamond ime_calculate_sad2_prog;
129*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16;
130*495ae853SAndroid Build Coastguard Worker ime_compute_sad_stat ime_compute_16x16_sad_stat;
131*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter;
132*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_8x16_chroma_ft ime_compute_satqd_8x16_chroma;
133*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumaintra_ft ime_compute_satqd_16x16_lumaintra;
134*495ae853SAndroid Build Coastguard Worker 
135*495ae853SAndroid Build Coastguard Worker /* SSE4.2 Declarations */
136*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_sse42;
137*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast_sse42;
138*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8_sse42;
139*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8_sse42;
140*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16_sse42;
141*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog_sse42;
142*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter_sse42;
143*495ae853SAndroid Build Coastguard Worker 
144*495ae853SAndroid Build Coastguard Worker /* A9 Declarations */
145*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_a9q;
146*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast_a9q;
147*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8_a9q;
148*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8_a9q;
149*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog_a9q;
150*495ae853SAndroid Build Coastguard Worker ime_compute_sad3_diamond ime_calculate_sad3_prog_a9q;
151*495ae853SAndroid Build Coastguard Worker ime_compute_sad2_diamond ime_calculate_sad2_prog_a9q;
152*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16_a9q;
153*495ae853SAndroid Build Coastguard Worker ime_compute_sad_stat ime_compute_16x16_sad_stat_a9;
154*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter_a9q;
155*495ae853SAndroid Build Coastguard Worker 
156*495ae853SAndroid Build Coastguard Worker /* AV8 declarations */
157*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_av8;
158*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast_av8;
159*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8_av8;
160*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8_av8;
161*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog_av8;
162*495ae853SAndroid Build Coastguard Worker ime_compute_sad3_diamond ime_calculate_sad3_prog_av8;
163*495ae853SAndroid Build Coastguard Worker ime_compute_sad2_diamond ime_calculate_sad2_prog_av8;
164*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16_av8;
165*495ae853SAndroid Build Coastguard Worker ime_compute_sad_stat ime_compute_16x16_sad_stat_av8;
166*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter_av8;
167*495ae853SAndroid Build Coastguard Worker 
168*495ae853SAndroid Build Coastguard Worker #endif /* _IME_DISTORTION_METRICS_H_ */
169*495ae853SAndroid Build Coastguard Worker 
170*495ae853SAndroid Build Coastguard Worker 
171