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_inter_pred_filters.c 220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Contains function definitions for inter prediction interpolation filters 250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @author 280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Srinivas T 290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par List of Functions: 310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_copy() 320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_horz() 330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_vert() 340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_copy_w16out() 350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_horz_w16out() 360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_vert_w16out() 370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_vert_w16inp() 380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_luma_vert_w16inp_w16out() 390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_copy() 400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_horz() 410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_vert() 420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_copy_w16out() 430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_horz_w16out() 440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_vert_w16out() 450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_vert_w16inp() 460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevc_inter_pred_chroma_vert_w16inp_w16out() 470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* File Includes */ 560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_typedefs.h" 580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_defs.h" 590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_macros.h" 600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_platform_macros.h" 610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_func_selector.h" 620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_inter_pred.h" 640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* Function Definitions */ 660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction luma function for copy 730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copies the array of width 'wd' and height 'ht' from the location pointed 760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'src' to the location pointed by 'dst' 770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_copy(UWORD8 *pu1_src, 1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col; 1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pi1_coeff); 1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = pu1_src[col]; 1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction luma filter for horizontal input 1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a horizontal filter with coefficients pointed to by 'pi1_coeff' 1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* to the elements pointed by 'pu1_src' and writes to the location pointed 1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'pu1_dst' The output is downshifted by 6 and clipped to 8 bits 1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_horz(UWORD8 *pu1_src, 1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp; 1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = 0; 1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_LUMA; i++) 1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp += pi1_coeff[i] * pu1_src[col + (i - 3)]; 1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = (i2_tmp + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = CLIP_U8(i2_tmp); 1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = (UWORD8)i2_tmp; 1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction luma filter for vertical input 2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertcal filter with coefficients pointed to by 'pi1_coeff' to 2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' The output is downshifted by 6 and clipped to 8 bits 2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_vert(UWORD8 *pu1_src, 2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp; 2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = 0; 2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_LUMA; i++) 2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp += pi1_coeff[i] * pu1_src[col + (i - 3) * src_strd]; 2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = (i2_tmp + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = CLIP_U8(i2_tmp); 2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = (UWORD8)i2_tmp; 2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction luma filter for copy 16bit output 2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 2820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copies the array of width 'wd' and height 'ht' from the location pointed 2830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'src' to the location pointed by 'dst' The output is upshifted by 6 2840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* bits and is used as input for vertical filtering or weighted prediction 2850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 2870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 2880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 2900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 2910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 2930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 2940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 2960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 2970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 2980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 2990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 3000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 3020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 3030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 3050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 3060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 3080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 3100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 3110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 3130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 3140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_copy_w16out(UWORD8 *pu1_src, 3170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 3180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 3190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 3200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 3210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 3220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 3230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 3240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col; 3250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pi1_coeff); 3260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 3270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 3290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = (pu1_src[col] << SHIFT_14_MINUS_BIT_DEPTH); 3310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 3340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 3350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 3380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 3410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 3420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 3440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction luma filter for horizontal 16bit output 3450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 3470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a horizontal filter with coefficients pointed to by 'pi1_coeff' 3480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* to the elements pointed by 'pu1_src' and writes to the location pointed 3490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'pu1_dst' No downshifting or clipping is done and the output is used 3500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* as an input for vertical filtering or weighted prediction 3510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 3530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 3540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 3560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 3570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 3590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 3600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 3620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 3630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 3650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 3660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 3680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 3690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 3710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 3720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 3740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 3760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 3770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 3780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 3790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 3800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_horz_w16out(UWORD8 *pu1_src, 3830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 3840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 3850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 3860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 3870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 3880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 3890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 3900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 3910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp; 3920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 3940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 3960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = 0; 3980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_LUMA; i++) 3990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp += pi1_coeff[i] * pu1_src[col + (i - 3)]; 4000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = i2_tmp; 4020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 4050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 4060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 4090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 4120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 4130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 4150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction luma filter for vertical 16bit output 4160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 4180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertical filter with coefficients pointed to by 'pi1_coeff' to 4190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 4200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' No downshifting or clipping is done and the output is used as 4210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* an input for weighted prediction 4220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 4240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 4250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 4270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 4280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 4300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 4310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 4330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 4340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 4360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 4370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 4390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 4400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 4420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 4430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 4450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 4470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 4480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 4500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 4510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_vert_w16out(UWORD8 *pu1_src, 4540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 4550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 4560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 4570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 4580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 4590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 4600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 4610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 4620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp; 4630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 4650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 4670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = 0; 4690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_LUMA; i++) 4700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp += pi1_coeff[i] * pu1_src[col + (i - 3) * src_strd]; 4710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = i2_tmp; 4730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 4760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 4770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 4800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 4820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 4830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 4850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Luma vertical filter for 16bit input. 4870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 4890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertical filter with coefficients pointed to by 'pi1_coeff' to 4900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 4910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' Input is 16 bits The filter output is downshifted by 12 and 4920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* clipped to lie between 0 and 255 4930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi2_src 4950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the source 4960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 4970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 4980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 4990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 5010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 5020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 5040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 5050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 5070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 5080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 5100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 5110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 5130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 5140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 5160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 5180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 5190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 5210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 5220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_vert_w16inp(WORD16 *pi2_src, 5240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 5250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 5260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 5270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 5280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 5290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 5300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 5310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 5320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i4_tmp; 5330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 5350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 5370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = 0; 5390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_LUMA; i++) 5400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp += pi1_coeff[i] * pi2_src[col + (i - 3) * src_strd]; 5410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = ((i4_tmp >> SHIFT_14_MINUS_BIT_DEPTH) + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 5430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = CLIP_U8(i4_tmp); 5440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = i4_tmp; 5460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src += src_strd; 5490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 5500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 5530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 5560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 5570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 5590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Luma prediction filter for vertical 16bit input & output 5600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 5620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertical filter with coefficients pointed to by 'pi1_coeff' to 5630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 5640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' Input is 16 bits The filter output is downshifted by 6 and 5650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8192 is subtracted to store it as a 16 bit number The output is used as 5660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* a input to weighted prediction 5670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi2_src 5690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the source 5700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 5720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 5730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 5750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 5760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 5780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 5790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 5810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 5820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 5840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 5850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 5870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 5880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 5900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 5920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 5930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 5940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 5950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 5960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_luma_vert_w16inp_w16out(WORD16 *pi2_src, 5990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 6000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 6010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 6020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 6030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 6040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 6050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 6060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 6070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i4_tmp; 6080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 6100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < wd; col++) 6120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = 0; 6140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_LUMA; i++) 6150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp += pi1_coeff[i] * pi2_src[col + (i - 3) * src_strd]; 6160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = (i4_tmp >> SHIFT_14_MINUS_BIT_DEPTH) - OFFSET14; 6180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = i4_tmp; 6200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src += src_strd; 6230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 6240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 6270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 6310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 6320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 6340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Chroma interprediction filter for copy 6350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 6370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copies the array of width 'wd' and height 'ht' from the location pointed 6380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'src' to the location pointed by 'dst' 6390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 6410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 6420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 6440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 6450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 6470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 6480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 6500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 6510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 6530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 6540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 6560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 6570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 6590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 6600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 6620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 6640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 6650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 6670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 6680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_copy(UWORD8 *pu1_src, 6710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 6720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 6730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 6740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 6750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 6760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 6770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 6780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col; 6790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pi1_coeff); 6800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 6810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col++) 6830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = pu1_src[col]; 6850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 6880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 6890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 6910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 6950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 6960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 6970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 6980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Chroma interprediction filter for horizontal input 6990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 7010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a horizontal filter with coefficients pointed to by 'pi1_coeff' 7020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* to the elements pointed by 'pu1_src' and writes to the location pointed 7030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'pu1_dst' The output is downshifted by 6 and clipped to 8 bits 7040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 7060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 7070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 7090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 7100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 7120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 7130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 7150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 7160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 7180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 7190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 7210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 7220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 7240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 7250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 7270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 7290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 7300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 7320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 7330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_horz(UWORD8 *pu1_src, 7360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 7370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 7380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 7390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 7400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 7410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 7420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 7430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 7440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp_u, i2_tmp_v; 7450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 7470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col += 2) 7490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_u = 0; 7510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_v = 0; 7520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_CHROMA; i++) 7530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_u += pi1_coeff[i] * pu1_src[col + (i - 1) * 2]; 7550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_v += pi1_coeff[i] * pu1_src[col + 1 + (i - 1) * 2]; 7560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_u = (i2_tmp_u + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 7590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_u = CLIP_U8(i2_tmp_u); 7600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_v = (i2_tmp_v + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 7610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_v = CLIP_U8(i2_tmp_v); 7620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = (UWORD8)i2_tmp_u; 7650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col + 1] = (UWORD8)i2_tmp_v; 7660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 7690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 7700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 7720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 7760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 7770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 7790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Chroma interprediction filter for vertical input 7800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 7820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertcal filter with coefficients pointed to by 'pi1_coeff' to 7830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 7840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' The output is downshifted by 6 and clipped to 8 bits 7850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 7880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 7890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 7910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 7920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 7940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 7950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 7970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 7980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 7990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 8000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 8010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 8030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 8040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 8060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 8070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 8090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 8110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 8120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 8140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 8150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_vert(UWORD8 *pu1_src, 8180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 8190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 8200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 8210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 8220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 8230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 8240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 8250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 8260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp; 8270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 8290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col++) 8310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = 0; 8330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_CHROMA; i++) 8340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp += pi1_coeff[i] * pu1_src[col + (i - 1) * src_strd]; 8360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = (i2_tmp + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 8390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = CLIP_U8(i2_tmp); 8400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = (UWORD8)i2_tmp; 8420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 8450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 8460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 8480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 8520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 8530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 8550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* chroma interprediction filter for copying 16bit output 8560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 8580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copies the array of width 'wd' and height 'ht' from the location pointed 8590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'src' to the location pointed by 'dst' The output is upshifted by 6 8600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* bits and is used as input for vertical filtering or weighted prediction 8610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 8630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 8640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 8660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 8670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 8690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 8700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 8720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 8730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 8750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 8760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 8780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 8790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 8810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 8820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 8840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 8860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 8870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 8890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 8900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_copy_w16out(UWORD8 *pu1_src, 8930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 8940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 8950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 8960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 8970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 8980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 8990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 9000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col; 9010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pi1_coeff); 9020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 9030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col++) 9050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = (pu1_src[col] << SHIFT_14_MINUS_BIT_DEPTH); 9070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 9100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 9110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 9130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 9170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 9180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 9200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* chroma interprediction filter to store horizontal 16bit ouput 9210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 9230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a horizontal filter with coefficients pointed to by 'pi1_coeff' 9240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* to the elements pointed by 'pu1_src' and writes to the location pointed 9250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* by 'pu1_dst' No downshifting or clipping is done and the output is used 9260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* as an input for vertical filtering or weighted prediction 9270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 9290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 9300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 9320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 9330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 9350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 9360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 9380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 9390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 9410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 9420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 9440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 9450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 9470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 9480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 9500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 9520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 9530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 9550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 9560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_horz_w16out(UWORD8 *pu1_src, 9590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 9600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 9610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 9620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 9630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 9640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 9650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 9660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 9670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp_u, i2_tmp_v; 9680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 9700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col += 2) 9720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_u = 0; 9740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_v = 0; 9750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_CHROMA; i++) 9760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_u += pi1_coeff[i] * pu1_src[col + (i - 1) * 2]; 9780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp_v += pi1_coeff[i] * pu1_src[col + 1 + (i - 1) * 2]; 9790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = i2_tmp_u; 9820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col + 1] = i2_tmp_v; 9830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 9860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 9870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 9890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 9930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 9940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 9960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Interprediction chroma filter to store vertical 16bit ouput 9970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 9980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 9990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertical filter with coefficients pointed to by 'pi1_coeff' to 10000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 10010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' No downshifting or clipping is done and the output is used as 10020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* an input for weighted prediction 10030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src 10050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the source 10060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 10080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 10090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 10110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 10120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 10140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 10150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 10170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 10180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 10200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 10210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 10230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 10240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 10260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 10280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 10290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 10310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 10320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_vert_w16out(UWORD8 *pu1_src, 10350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 10360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 10370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 10380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 10390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 10400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 10410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 10420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 10430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 i2_tmp; 10440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 10460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col++) 10480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp = 0; 10500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_CHROMA; i++) 10510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i2_tmp += pi1_coeff[i] * pu1_src[col + (i - 1) * src_strd]; 10530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = i2_tmp; 10560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_src += src_strd; 10590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 10600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 10620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 10650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 10660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 10680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* chroma interprediction filter for vertical 16bit input 10690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 10710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertical filter with coefficients pointed to by 'pi1_coeff' to 10720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 10730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' Input is 16 bits The filter output is downshifted by 12 and 10740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* clipped to lie between 0 and 255 10750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi2_src 10770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the source 10780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pu1_dst 10800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* UWORD8 pointer to the destination 10810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 10830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 10840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 10860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 10870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 10890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 10900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 10920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 10930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 10950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 10960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 10980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 10990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 11000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 11010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 11030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 11040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_vert_w16inp(WORD16 *pi2_src, 11060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 11070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 11080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 11090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 11100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 11110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 11120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 11130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 11140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i4_tmp; 11150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 11170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col++) 11190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = 0; 11210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_CHROMA; i++) 11220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp += pi1_coeff[i] * pi2_src[col + (i - 1) * src_strd]; 11240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = ((i4_tmp >> SHIFT_14_MINUS_BIT_DEPTH) + OFFSET_14_MINUS_BIT_DEPTH) >> SHIFT_14_MINUS_BIT_DEPTH; 11270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = CLIP_U8(i4_tmp); 11280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[col] = i4_tmp; 11300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src += src_strd; 11330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst += dst_strd; 11340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 11370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 11400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 11410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 11430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Chroma interprediction filter for 16bit vertical input and output. 11450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 11470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Applies a vertical filter with coefficients pointed to by 'pi1_coeff' to 11480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* the elements pointed by 'pu1_src' and writes to the location pointed by 11490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 'pu1_dst' Input is 16 bits The filter output is downshifted by 6 and 11500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 8192 is subtracted to store it as a 16 bit number The output is used as 11510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* a input to weighted prediction 11520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi2_src 11540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the source 11550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pi2_dst 11570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD16 pointer to the destination 11580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd 11600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer source stride 11610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] dst_strd 11630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer destination stride 11640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pi1_coeff 11660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WORD8 pointer to the filter coefficients 11670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht 11690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer height of the array 11700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd 11720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* integer width of the array 11730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns 11750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 11770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 11780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 11790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 11800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 11810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_inter_pred_chroma_vert_w16inp_w16out(WORD16 *pi2_src, 11830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_dst, 11840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 11850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 11860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD8 *pi1_coeff, 11870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ht, 11880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd) 11890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 11900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 row, col, i; 11910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i4_tmp; 11920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(row = 0; row < ht; row++) 11940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(col = 0; col < 2 * wd; col++) 11960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = 0; 11980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < NTAPS_CHROMA; i++) 11990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp += pi1_coeff[i] * pi2_src[col + (i - 1) * src_strd]; 12010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i4_tmp = (i4_tmp >> SHIFT_14_MINUS_BIT_DEPTH); 12040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst[col] = i4_tmp; 12060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src += src_strd; 12090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_dst += dst_strd; 12100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 12130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1215