Home | History | Annotate | Download | only in common
      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