10d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/******************************************************************************
20d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
30d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
40d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
50d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Licensed under the Apache License, Version 2.0 (the "License");
60d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* you may not use this file except in compliance with the License.
70d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* You may obtain a copy of the License at:
80d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
90d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* http://www.apache.org/licenses/LICENSE-2.0
100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Unless required by applicable law or agreed to in writing, software
120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* distributed under the License is distributed on an "AS IS" BASIS,
130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* See the License for the specific language governing permissions and
150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* limitations under the License.
160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************/
180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @file
210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  ihevc_mem_fns.c
220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief
240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  Functions used for memory operations
250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @author
270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  Ittiam
280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par List of Functions:
300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks
320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  None
330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */
360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/
380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* File Includes                                                             */
390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/
400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stdio.h>
410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stddef.h>
420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stdlib.h>
430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <string.h>
440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <assert.h>
450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_typedefs.h"
470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_func_selector.h"
480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_mem_fns.h"
490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief
540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *   memcpy of a 8,16 or 32 bytes
550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description:
570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *   Does memcpy of 8bit data from source to destination for 8,16 or 32 number of bytes
580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_dst
600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  UWORD8 pointer to the destination
610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_src
630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  UWORD8 pointer to the source
640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] num_bytes
660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  number of bytes to copy
670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns
680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks
700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  None
710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */
740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_memcpy(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    memcpy(pu1_dst, pu1_src, num_bytes);
780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_memcpy_mul_8(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    memcpy(pu1_dst, pu1_src, num_bytes);
840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief
900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *   memset of a 8,16 or 32 bytes
910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description:
930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *   Does memset of 8bit data for 8,16 or 32 number of bytes
940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_dst
960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  UWORD8 pointer to the destination
970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] value
990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  UWORD8 value used for memset
1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] num_bytes
1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  number of bytes to set
1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns
1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks
1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  None
1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */
1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_memset(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    memset(pu1_dst, value, num_bytes);
1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_memset_mul_8(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    memset(pu1_dst, value, num_bytes);
1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief
1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *   memset of 16bit data of a 8,16 or 32 bytes
1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description:
1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *   Does memset of 16bit data for 8,16 or 32 number of bytes
1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu2_dst
1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  UWORD8 pointer to the destination
1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] value
1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  UWORD16 value used for memset
1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] num_words
1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  number of words to set
1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns
1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks
1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *  None
1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *
1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *******************************************************************************
1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */
1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_memset_16bit(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    UWORD32 i;
1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(i = 0; i < num_words; i++)
1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        *pu2_dst++ = value;
1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_memset_16bit_mul_8(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    UWORD32 i;
1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(i = 0; i < num_words; i++)
1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        *pu2_dst++ = value;
1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
167