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