1 /******************************************************************************
2 *
3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
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 /**
19  *******************************************************************************
20  * @file
21  *  ihevc_mem_fns.c
22  *
23  * @brief
24  *  Functions used for memory operations
25  *
26  * @author
27  *  Ittiam
28  *
29  * @par List of Functions:
30  *
31  * @remarks
32  *  None
33  *
34  *******************************************************************************
35  */
36 
37 /*****************************************************************************/
38 /* File Includes                                                             */
39 /*****************************************************************************/
40 #include <stdio.h>
41 #include <stddef.h>
42 #include <stdlib.h>
43 #include <string.h>
44 #include <assert.h>
45 
46 #include "ihevc_typedefs.h"
47 #include "ihevc_func_selector.h"
48 #include "ihevc_mem_fns.h"
49 
50 /**
51  *******************************************************************************
52  *
53  * @brief
54  *   memcpy of a 8,16 or 32 bytes
55  *
56  * @par Description:
57  *   Does memcpy of 8bit data from source to destination for 8,16 or 32 number of bytes
58  *
59  * @param[in] pu1_dst
60  *  UWORD8 pointer to the destination
61  *
62  * @param[in] pu1_src
63  *  UWORD8 pointer to the source
64  *
65  * @param[in] num_bytes
66  *  number of bytes to copy
67  * @returns
68  *
69  * @remarks
70  *  None
71  *
72  *******************************************************************************
73  */
74 
ihevc_memcpy(UWORD8 * pu1_dst,UWORD8 * pu1_src,UWORD32 num_bytes)75 void ihevc_memcpy(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
76 {
77     memcpy(pu1_dst, pu1_src, num_bytes);
78 }
79 
80 
ihevc_memcpy_mul_8(UWORD8 * pu1_dst,UWORD8 * pu1_src,UWORD32 num_bytes)81 void ihevc_memcpy_mul_8(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
82 {
83     memcpy(pu1_dst, pu1_src, num_bytes);
84 }
85 
86 /**
87  *******************************************************************************
88  *
89  * @brief
90  *   memset of a 8,16 or 32 bytes
91  *
92  * @par Description:
93  *   Does memset of 8bit data for 8,16 or 32 number of bytes
94  *
95  * @param[in] pu1_dst
96  *  UWORD8 pointer to the destination
97  *
98  * @param[in] value
99  *  UWORD8 value used for memset
100  *
101  * @param[in] num_bytes
102  *  number of bytes to set
103  * @returns
104  *
105  * @remarks
106  *  None
107  *
108  *******************************************************************************
109  */
110 
ihevc_memset(UWORD8 * pu1_dst,UWORD8 value,UWORD32 num_bytes)111 void ihevc_memset(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
112 {
113     memset(pu1_dst, value, num_bytes);
114 }
115 
116 
ihevc_memset_mul_8(UWORD8 * pu1_dst,UWORD8 value,UWORD32 num_bytes)117 void ihevc_memset_mul_8(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
118 {
119     memset(pu1_dst, value, num_bytes);
120 }
121 
122 /**
123  *******************************************************************************
124  *
125  * @brief
126  *   memset of 16bit data of a 8,16 or 32 bytes
127  *
128  * @par Description:
129  *   Does memset of 16bit data for 8,16 or 32 number of bytes
130  *
131  * @param[in] pu2_dst
132  *  UWORD8 pointer to the destination
133  *
134  * @param[in] value
135  *  UWORD16 value used for memset
136  *
137  * @param[in] num_words
138  *  number of words to set
139  * @returns
140  *
141  * @remarks
142  *  None
143  *
144  *******************************************************************************
145  */
146 
ihevc_memset_16bit(UWORD16 * pu2_dst,UWORD16 value,UWORD32 num_words)147 void ihevc_memset_16bit(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
148 {
149     UWORD32 i;
150     for(i = 0; i < num_words; i++)
151     {
152         *pu2_dst++ = value;
153     }
154 }
155 
156 
157 
ihevc_memset_16bit_mul_8(UWORD16 * pu2_dst,UWORD16 value,UWORD32 num_words)158 void ihevc_memset_16bit_mul_8(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
159 {
160     UWORD32 i;
161     for(i = 0; i < num_words; i++)
162     {
163         *pu2_dst++ = value;
164     }
165 }
166 
167