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