xref: /aosp_15_r20/external/libhevc/common/ihevc_mem_fns.c (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
1*c83a76b0SSuyog Pawar /******************************************************************************
2*c83a76b0SSuyog Pawar *
3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4*c83a76b0SSuyog Pawar *
5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License");
6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License.
7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at:
8*c83a76b0SSuyog Pawar *
9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0
10*c83a76b0SSuyog Pawar *
11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software
12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS,
13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and
15*c83a76b0SSuyog Pawar * limitations under the License.
16*c83a76b0SSuyog Pawar *
17*c83a76b0SSuyog Pawar ******************************************************************************/
18*c83a76b0SSuyog Pawar /**
19*c83a76b0SSuyog Pawar  *******************************************************************************
20*c83a76b0SSuyog Pawar  * @file
21*c83a76b0SSuyog Pawar  *  ihevc_mem_fns.c
22*c83a76b0SSuyog Pawar  *
23*c83a76b0SSuyog Pawar  * @brief
24*c83a76b0SSuyog Pawar  *  Functions used for memory operations
25*c83a76b0SSuyog Pawar  *
26*c83a76b0SSuyog Pawar  * @author
27*c83a76b0SSuyog Pawar  *  Ittiam
28*c83a76b0SSuyog Pawar  *
29*c83a76b0SSuyog Pawar  * @par List of Functions:
30*c83a76b0SSuyog Pawar  *
31*c83a76b0SSuyog Pawar  * @remarks
32*c83a76b0SSuyog Pawar  *  None
33*c83a76b0SSuyog Pawar  *
34*c83a76b0SSuyog Pawar  *******************************************************************************
35*c83a76b0SSuyog Pawar  */
36*c83a76b0SSuyog Pawar 
37*c83a76b0SSuyog Pawar /*****************************************************************************/
38*c83a76b0SSuyog Pawar /* File Includes                                                             */
39*c83a76b0SSuyog Pawar /*****************************************************************************/
40*c83a76b0SSuyog Pawar #include <stdio.h>
41*c83a76b0SSuyog Pawar #include <stddef.h>
42*c83a76b0SSuyog Pawar #include <stdlib.h>
43*c83a76b0SSuyog Pawar #include <string.h>
44*c83a76b0SSuyog Pawar #include <assert.h>
45*c83a76b0SSuyog Pawar 
46*c83a76b0SSuyog Pawar #include "ihevc_typedefs.h"
47*c83a76b0SSuyog Pawar #include "ihevc_func_selector.h"
48*c83a76b0SSuyog Pawar #include "ihevc_mem_fns.h"
49*c83a76b0SSuyog Pawar 
50*c83a76b0SSuyog Pawar /**
51*c83a76b0SSuyog Pawar  *******************************************************************************
52*c83a76b0SSuyog Pawar  *
53*c83a76b0SSuyog Pawar  * @brief
54*c83a76b0SSuyog Pawar  *   memcpy of a 8,16 or 32 bytes
55*c83a76b0SSuyog Pawar  *
56*c83a76b0SSuyog Pawar  * @par Description:
57*c83a76b0SSuyog Pawar  *   Does memcpy of 8bit data from source to destination for 8,16 or 32 number of bytes
58*c83a76b0SSuyog Pawar  *
59*c83a76b0SSuyog Pawar  * @param[in] pu1_dst
60*c83a76b0SSuyog Pawar  *  UWORD8 pointer to the destination
61*c83a76b0SSuyog Pawar  *
62*c83a76b0SSuyog Pawar  * @param[in] pu1_src
63*c83a76b0SSuyog Pawar  *  UWORD8 pointer to the source
64*c83a76b0SSuyog Pawar  *
65*c83a76b0SSuyog Pawar  * @param[in] num_bytes
66*c83a76b0SSuyog Pawar  *  number of bytes to copy
67*c83a76b0SSuyog Pawar  * @returns
68*c83a76b0SSuyog Pawar  *
69*c83a76b0SSuyog Pawar  * @remarks
70*c83a76b0SSuyog Pawar  *  None
71*c83a76b0SSuyog Pawar  *
72*c83a76b0SSuyog Pawar  *******************************************************************************
73*c83a76b0SSuyog Pawar  */
74*c83a76b0SSuyog Pawar 
ihevc_memcpy(UWORD8 * pu1_dst,UWORD8 * pu1_src,UWORD32 num_bytes)75*c83a76b0SSuyog Pawar void ihevc_memcpy(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
76*c83a76b0SSuyog Pawar {
77*c83a76b0SSuyog Pawar     memcpy(pu1_dst, pu1_src, num_bytes);
78*c83a76b0SSuyog Pawar }
79*c83a76b0SSuyog Pawar 
80*c83a76b0SSuyog Pawar 
ihevc_memcpy_mul_8(UWORD8 * pu1_dst,UWORD8 * pu1_src,UWORD32 num_bytes)81*c83a76b0SSuyog Pawar void ihevc_memcpy_mul_8(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
82*c83a76b0SSuyog Pawar {
83*c83a76b0SSuyog Pawar     memcpy(pu1_dst, pu1_src, num_bytes);
84*c83a76b0SSuyog Pawar }
85*c83a76b0SSuyog Pawar 
86*c83a76b0SSuyog Pawar /**
87*c83a76b0SSuyog Pawar  *******************************************************************************
88*c83a76b0SSuyog Pawar  *
89*c83a76b0SSuyog Pawar  * @brief
90*c83a76b0SSuyog Pawar  *   memset of a 8,16 or 32 bytes
91*c83a76b0SSuyog Pawar  *
92*c83a76b0SSuyog Pawar  * @par Description:
93*c83a76b0SSuyog Pawar  *   Does memset of 8bit data for 8,16 or 32 number of bytes
94*c83a76b0SSuyog Pawar  *
95*c83a76b0SSuyog Pawar  * @param[in] pu1_dst
96*c83a76b0SSuyog Pawar  *  UWORD8 pointer to the destination
97*c83a76b0SSuyog Pawar  *
98*c83a76b0SSuyog Pawar  * @param[in] value
99*c83a76b0SSuyog Pawar  *  UWORD8 value used for memset
100*c83a76b0SSuyog Pawar  *
101*c83a76b0SSuyog Pawar  * @param[in] num_bytes
102*c83a76b0SSuyog Pawar  *  number of bytes to set
103*c83a76b0SSuyog Pawar  * @returns
104*c83a76b0SSuyog Pawar  *
105*c83a76b0SSuyog Pawar  * @remarks
106*c83a76b0SSuyog Pawar  *  None
107*c83a76b0SSuyog Pawar  *
108*c83a76b0SSuyog Pawar  *******************************************************************************
109*c83a76b0SSuyog Pawar  */
110*c83a76b0SSuyog Pawar 
ihevc_memset(UWORD8 * pu1_dst,UWORD8 value,UWORD32 num_bytes)111*c83a76b0SSuyog Pawar void ihevc_memset(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
112*c83a76b0SSuyog Pawar {
113*c83a76b0SSuyog Pawar     memset(pu1_dst, value, num_bytes);
114*c83a76b0SSuyog Pawar }
115*c83a76b0SSuyog Pawar 
116*c83a76b0SSuyog Pawar 
ihevc_memset_mul_8(UWORD8 * pu1_dst,UWORD8 value,UWORD32 num_bytes)117*c83a76b0SSuyog Pawar void ihevc_memset_mul_8(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
118*c83a76b0SSuyog Pawar {
119*c83a76b0SSuyog Pawar     memset(pu1_dst, value, num_bytes);
120*c83a76b0SSuyog Pawar }
121*c83a76b0SSuyog Pawar 
122*c83a76b0SSuyog Pawar /**
123*c83a76b0SSuyog Pawar  *******************************************************************************
124*c83a76b0SSuyog Pawar  *
125*c83a76b0SSuyog Pawar  * @brief
126*c83a76b0SSuyog Pawar  *   memset of 16bit data of a 8,16 or 32 bytes
127*c83a76b0SSuyog Pawar  *
128*c83a76b0SSuyog Pawar  * @par Description:
129*c83a76b0SSuyog Pawar  *   Does memset of 16bit data for 8,16 or 32 number of bytes
130*c83a76b0SSuyog Pawar  *
131*c83a76b0SSuyog Pawar  * @param[in] pu2_dst
132*c83a76b0SSuyog Pawar  *  UWORD8 pointer to the destination
133*c83a76b0SSuyog Pawar  *
134*c83a76b0SSuyog Pawar  * @param[in] value
135*c83a76b0SSuyog Pawar  *  UWORD16 value used for memset
136*c83a76b0SSuyog Pawar  *
137*c83a76b0SSuyog Pawar  * @param[in] num_words
138*c83a76b0SSuyog Pawar  *  number of words to set
139*c83a76b0SSuyog Pawar  * @returns
140*c83a76b0SSuyog Pawar  *
141*c83a76b0SSuyog Pawar  * @remarks
142*c83a76b0SSuyog Pawar  *  None
143*c83a76b0SSuyog Pawar  *
144*c83a76b0SSuyog Pawar  *******************************************************************************
145*c83a76b0SSuyog Pawar  */
146*c83a76b0SSuyog Pawar 
ihevc_memset_16bit(UWORD16 * pu2_dst,UWORD16 value,UWORD32 num_words)147*c83a76b0SSuyog Pawar void ihevc_memset_16bit(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
148*c83a76b0SSuyog Pawar {
149*c83a76b0SSuyog Pawar     UWORD32 i;
150*c83a76b0SSuyog Pawar     for(i = 0; i < num_words; i++)
151*c83a76b0SSuyog Pawar     {
152*c83a76b0SSuyog Pawar         *pu2_dst++ = value;
153*c83a76b0SSuyog Pawar     }
154*c83a76b0SSuyog Pawar }
155*c83a76b0SSuyog Pawar 
156*c83a76b0SSuyog Pawar 
157*c83a76b0SSuyog Pawar 
ihevc_memset_16bit_mul_8(UWORD16 * pu2_dst,UWORD16 value,UWORD32 num_words)158*c83a76b0SSuyog Pawar void ihevc_memset_16bit_mul_8(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
159*c83a76b0SSuyog Pawar {
160*c83a76b0SSuyog Pawar     UWORD32 i;
161*c83a76b0SSuyog Pawar     for(i = 0; i < num_words; i++)
162*c83a76b0SSuyog Pawar     {
163*c83a76b0SSuyog Pawar         *pu2_dst++ = value;
164*c83a76b0SSuyog Pawar     }
165*c83a76b0SSuyog Pawar }
166*c83a76b0SSuyog Pawar 
167