/src/libhevc/encoder/hme_common_utils.h
Line | Count | Source |
1 | | /****************************************************************************** |
2 | | * |
3 | | * Copyright (C) 2018 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 hme_common_utils.h |
24 | | * |
25 | | * \brief |
26 | | * Common utility functions used by ME |
27 | | * |
28 | | * \date |
29 | | * 18/09/2012 |
30 | | * |
31 | | * \author |
32 | | * Ittiam |
33 | | * |
34 | | ****************************************************************************** |
35 | | */ |
36 | | |
37 | | #ifndef _HME_COMMON_UTILS_H_ |
38 | | #define _HME_COMMON_UTILS_H_ |
39 | | |
40 | | #include "ihevc_platform_macros.h" |
41 | | |
42 | | /*****************************************************************************/ |
43 | | /* Macros */ |
44 | | /*****************************************************************************/ |
45 | | |
46 | | #define MEDIAN4(a, b, c, d, e) (median4_##e(a, b, c, d)) |
47 | | |
48 | | /*****************************************************************************/ |
49 | | /* Functions */ |
50 | | /*****************************************************************************/ |
51 | | /** |
52 | | ******************************************************************************** |
53 | | * @fn S32 median4_s16(S16 i2_n1, S16 i2_n2, S16 i2_n3, S16 i2_n4); |
54 | | * |
55 | | * @brief Returns median4 of 4 16 bits signed nubers |
56 | | * |
57 | | * @param[in] i2_n1 : first number |
58 | | * |
59 | | * @param[in] i2_n2 : 2nd number |
60 | | * |
61 | | * @param[in] i2_n3 : 3rd number |
62 | | * |
63 | | * @param[in] i2_n4 : 4th number (order does not matter) |
64 | | * |
65 | | * @return range of the number |
66 | | ******************************************************************************** |
67 | | */ |
68 | | S16 median4_s16(S16 i2_n1, S16 i2_n2, S16 i2_n3, S16 i2_n4); |
69 | | |
70 | | /** |
71 | | ******************************************************************************** |
72 | | * @fn S32 hme_get_range(U32 u4_num); |
73 | | * |
74 | | * @brief Returns the range of the number |
75 | | * |
76 | | * @param[in] u4_num : number whose range is to be found |
77 | | * |
78 | | * @return range of the number |
79 | | ******************************************************************************** |
80 | | */ |
81 | | |
82 | | static INLINE S32 hme_get_range(U32 u4_num) |
83 | 2.33G | { |
84 | 2.33G | S32 r; |
85 | | |
86 | 2.33G | GETRANGE(r, u4_num); |
87 | 2.33G | return (r); |
88 | 2.33G | } Unexecuted instantiation: ihevce_global_tables.c:hme_get_range Unexecuted instantiation: hme_interface.c:hme_get_range Unexecuted instantiation: hme_refine.c:hme_get_range Unexecuted instantiation: hme_search_algo.c:hme_get_range Unexecuted instantiation: hme_subpel.c:hme_get_range hme_utils.c:hme_get_range Line | Count | Source | 83 | 193k | { | 84 | 193k | S32 r; | 85 | | | 86 | 193k | GETRANGE(r, u4_num); | 87 | 193k | return (r); | 88 | 193k | } |
Unexecuted instantiation: ihevce_enc_loop_utils.c:hme_get_range ihevce_me_instr_set_router.c:hme_get_range Line | Count | Source | 83 | 26.0M | { | 84 | 26.0M | S32 r; | 85 | | | 86 | 26.0M | GETRANGE(r, u4_num); | 87 | 26.0M | return (r); | 88 | 26.0M | } |
hme_coarse.c:hme_get_range Line | Count | Source | 83 | 503M | { | 84 | 503M | S32 r; | 85 | | | 86 | 503M | GETRANGE(r, u4_num); | 87 | 503M | return (r); | 88 | 503M | } |
hme_err_compute.c:hme_get_range Line | Count | Source | 83 | 1.81G | { | 84 | 1.81G | S32 r; | 85 | | | 86 | 1.81G | GETRANGE(r, u4_num); | 87 | 1.81G | return (r); | 88 | 1.81G | } |
Unexecuted instantiation: hme_fullpel.c:hme_get_range Unexecuted instantiation: hme_function_selector.c:hme_get_range Unexecuted instantiation: hme_globals.c:hme_get_range Unexecuted instantiation: ihevce_enc_loop_inter_mode_sifter.c:hme_get_range |
89 | | |
90 | | /** |
91 | | ******************************************************************************** |
92 | | * @fn S32 hme_compute_2d_sum_unsigned(void *pv_inp, |
93 | | * S32 i4_blk_wd, |
94 | | * S32 i4_blk_ht, |
95 | | * S32 i4_stride, |
96 | | * S32 i4_datatype) |
97 | | * |
98 | | * @brief Computes and returns 2D sum of a unsigned 2d buffer, with datatype |
99 | | * equal to 8/16/32 bit. |
100 | | * |
101 | | * @param[in] pv_inp : input pointer |
102 | | * |
103 | | * @param[in] i4_blk_wd : block width |
104 | | * |
105 | | * @param[in] i4_blk_ht : block ht |
106 | | * |
107 | | * @param[in] i4_stride : stride |
108 | | * |
109 | | * @param[in] i4_datatype : datatype 1 - 8 bit, 2 - 16 bit, 4 - 32 bit |
110 | | * |
111 | | * @return sum of i4_blk_wd * i4_blk_ht number of entries starting at pv_inp |
112 | | ******************************************************************************** |
113 | | */ |
114 | | |
115 | | U32 hme_compute_2d_sum_unsigned( |
116 | | void *pv_inp, S32 i4_blk_wd, S32 i4_blk_ht, S32 i4_stride, S32 i4_datatype); |
117 | | |
118 | | /** |
119 | | ******************************************************************************** |
120 | | * @fn S32 get_rand_num(S32 low, S32 high) |
121 | | * |
122 | | * @brief returns a radom integer in the closed interval [low, high - 1] |
123 | | * |
124 | | * @param[in] low : lower limit |
125 | | * |
126 | | * @param[in] high : higher limit |
127 | | * |
128 | | * @return S32 result: the random number |
129 | | ******************************************************************************** |
130 | | */ |
131 | | S32 get_rand_num(S32 low, S32 high); |
132 | | |
133 | | #endif /* #ifndef _HME_COMMON_UTILS_H_ */ |