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