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_recon.c 220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief 240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Functions definitions reconstruction 250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @author 270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Ittiam 280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par List of Functions: 300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * - ihevc_recon_4x4_ttype1() 310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * - ihevc_recon_4x4() 320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * - ihevc_recon_8x8() 330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * - ihevc_recon_16x16() 340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * - ihevc_recon_32x32() 350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks 370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * None 380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stdio.h> 420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <string.h> 430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_typedefs.h" 440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_macros.h" 450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_platform_macros.h" 460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_defs.h" 470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_trans_tables.h" 480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_recon.h" 490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_func_selector.h" 500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_trans_macros.h" 510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* All the functions here are replicated from ihevc.c and modified to */ 530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* include reconstruction */ 540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief 590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This function performs reconstruction for 4x4 input block 600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description: 620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Performs reconstruction of 4x4 input block by adding adding prediction 630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * data to input and clipping it to 8 bit 640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pi2_src 660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input 4x4 coefficients 670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_pred 690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction 4x4 block 700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[out] pu1_dst 720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output 4x4 block 730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] src_strd 750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input stride 760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pred_strd 780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction stride 790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] dst_strd 810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output Stride 820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] zero_cols 840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Zero columns in pi2_tmp 850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns Void 870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks 890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * None 900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_recon_4x4_ttype1(WORD16 *pi2_src, 950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_pred, 960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pred_strd, 990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 zero_cols) 1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i, j; 1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 trans_size; 1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar trans_size = TRANS_SIZE_4; 1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Reconstruction */ 1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < trans_size; i++) 1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Checking for Zero Cols */ 1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((zero_cols & 1) == 1) 1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = pu1_pred[j * pred_strd]; 1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = 1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CLIP_U8(pi2_src[j * src_strd] + pu1_pred[j * pred_strd]); 1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src++; 1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst++; 1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_pred++; 1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zero_cols = zero_cols >> 1; 1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief 1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This function performs reconstruction for 4x4 input block 1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description: 1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Performs reconstruction of 4x4 input block by adding adding prediction 1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * data to input and clipping it to 8 bit 1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pi2_src 1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input 4x4 coefficients 1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_pred 1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction 4x4 block 1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[out] pu1_dst 1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output 4x4 block 1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] src_strd 1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input stride 1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pred_strd 1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction stride 1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] dst_strd 1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output Stride 1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] shift 1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output shift 1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] zero_cols 1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Zero columns in pi2_tmp 1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns Void 1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks 1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * None 1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_recon_4x4(WORD16 *pi2_src, 1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_pred, 1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pred_strd, 1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 zero_cols) 1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i, j; 1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 trans_size; 1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar trans_size = TRANS_SIZE_4; 1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Reconstruction */ 1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < trans_size; i++) 1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Checking for Zero Cols */ 1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((zero_cols & 1) == 1) 1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = pu1_pred[j * pred_strd]; 1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = 2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CLIP_U8(pi2_src[j * src_strd] + pu1_pred[j * pred_strd]); 2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src++; 2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst++; 2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_pred++; 2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zero_cols = zero_cols >> 1; 2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief 2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This function performs reconstruction for 8x8 input block 2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description: 2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Performs reconstruction of 8x8 input block by adding adding prediction 2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * data to input and clipping it to 8 bit 2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pi2_src 2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input 8x8 coefficients 2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_pred 2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction 8x8 block 2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[out] pu1_dst 2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output 8x8 block 2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] src_strd 2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input stride 2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pred_strd 2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction stride 2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] dst_strd 2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output Stride 2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] shift 2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output shift 2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] zero_cols 2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Zero columns in pi2_tmp 2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns Void 2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks 2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * None 2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_recon_8x8(WORD16 *pi2_src, 2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_pred, 2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pred_strd, 2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 zero_cols) 2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i, j; 2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 trans_size; 2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar trans_size = TRANS_SIZE_8; 2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Reconstruction */ 2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < trans_size; i++) 2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Checking for Zero Cols */ 2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((zero_cols & 1) == 1) 2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = pu1_pred[j * pred_strd]; 2810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 2840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 2860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = 2880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CLIP_U8(pi2_src[j * src_strd] + pu1_pred[j * pred_strd]); 2890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src++; 2920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst++; 2930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_pred++; 2940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zero_cols = zero_cols >> 1; 2950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 2970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 2990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 3000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief 3020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This function performs reconstruction for 16x16 input block 3030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description: 3050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Performs reconstruction of 16x16 input block by adding adding prediction 3060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * data to input and clipping it to 8 bit 3070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pi2_src 3090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input 16x16 coefficients 3100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_pred 3120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction 16x16 block 3130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[out] pu1_dst 3150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output 16x16 block 3160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] src_strd 3180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input stride 3190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pred_strd 3210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction stride 3220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] dst_strd 3240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output Stride 3250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] shift 3270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output shift 3280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] zero_cols 3300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Zero columns in pi2_tmp 3310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns Void 3330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks 3350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * None 3360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 3380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 3390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_recon_16x16(WORD16 *pi2_src, 3410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_pred, 3420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 3430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 3440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pred_strd, 3450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 3460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 zero_cols) 3470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 3480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i, j; 3490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 trans_size; 3500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar trans_size = TRANS_SIZE_16; 3520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Reconstruction */ 3540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < trans_size; i++) 3560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Checking for Zero Cols */ 3580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((zero_cols & 1) == 1) 3590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 3610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = pu1_pred[j * pred_strd]; 3630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 3660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 3680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = 3700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CLIP_U8(pi2_src[j * src_strd] + pu1_pred[j * pred_strd]); 3710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src++; 3740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst++; 3750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_pred++; 3760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zero_cols = zero_cols >> 1; 3770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 3790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 3810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 3820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief 3840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This function performs reconstruction for 32x32 input block 3850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @par Description: 3870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Performs reconstruction of 32x32 input block by adding adding prediction 3880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * data to input and clipping it to 8 bit 3890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pi2_src 3910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input 32x32 coefficients 3920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pu1_pred 3940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction 32x32 block 3950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[out] pu1_dst 3970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output 32x32 block 3980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 3990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] src_strd 4000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Input stride 4010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] pred_strd 4030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Prediction stride 4040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] dst_strd 4060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output Stride 4070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] shift 4090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Output shift 4100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @param[in] zero_cols 4120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Zero columns in pi2_tmp 4130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @returns Void 4150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @remarks 4170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * None 4180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 4190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ******************************************************************************* 4200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 4210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_recon_32x32(WORD16 *pi2_src, 4230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_pred, 4240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_dst, 4250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 src_strd, 4260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pred_strd, 4270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 dst_strd, 4280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 zero_cols) 4290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 4300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i, j; 4310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 trans_size; 4320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar trans_size = TRANS_SIZE_32; 4340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Reconstruction */ 4360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < trans_size; i++) 4380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Checking for Zero Cols */ 4400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((zero_cols & 1) == 1) 4410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 4430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = pu1_pred[j * pred_strd]; 4450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 4480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < trans_size; j++) 4500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst[j * dst_strd] = 4520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar CLIP_U8(pi2_src[j * src_strd] + pu1_pred[j * pred_strd]); 4530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_src++; 4560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_dst++; 4570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_pred++; 4580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zero_cols = zero_cols >> 1; 4590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 4610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 462