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