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