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 85 void ih264_memcpy(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes) 86 { 87 memcpy(pu1_dst, pu1_src, num_bytes); 88 } 89 90 91 void 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 121 void ih264_memset(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes) 122 { 123 memset(pu1_dst, value, num_bytes); 124 } 125 126 127 void 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 157 void 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 166 void 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