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_padding.c
220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  Contains function definitions for Padding
250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @author
270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  Srinivas T
280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par List of Functions:
300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_horz_luma()
310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_horz_chroma()
320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_vert()
330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_left_luma()
340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_left_chroma()
350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_right_luma()
360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_right_chroma()
370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_top()
380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   - ihevc_pad_bottom()
390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <string.h>
470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_typedefs.h"
480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_func_selector.h"
490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_platform_macros.h"
500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_mem_fns.h"
510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*       Padding function for horizontal input variable
560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_vert(UWORD8 *pu1_src,
900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                    WORD32 src_strd,
910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                    WORD32 ht,
920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                    WORD32 wd,
930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                    WORD32 pad_size)
940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 1; row <= pad_size; row++)
980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memcpy(pu1_src - row * src_strd, pu1_src, wd);
1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memcpy(pu1_src + (ht + row - 1) * src_strd,
1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar               pu1_src + (ht - 1) * src_strd, wd);
1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   Padding function for vertical input variable
1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_horz_chroma(UWORD8 *pu1_src,
1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 src_strd,
1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 ht,
1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 wd,
1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 pad_size)
1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    //WORD32 col;
1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    UWORD16 *pu2_src = (UWORD16 *)pu1_src;
1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    src_strd >>= 1;
1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    wd >>= 1;
1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    pad_size >>= 1;
1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 0; row < ht; row++)
1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        UWORD16 u2_uv_val;
1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        u2_uv_val = pu2_src[0];
1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        ihevc_memset_16bit(&pu2_src[-pad_size], u2_uv_val, pad_size);
1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        u2_uv_val = pu2_src[wd - 1];
1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        ihevc_memset_16bit(&pu2_src[wd], u2_uv_val, pad_size);
1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        pu2_src += src_strd;
1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   Padding function for vertical input variable
1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_horz_luma(UWORD8 *pu1_src,
2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 src_strd,
2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 ht,
2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 wd,
2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 pad_size)
2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 0; row < ht; row++)
2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memset(pu1_src - pad_size, *pu1_src, pad_size);
2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memset(pu1_src + wd, *(pu1_src + wd - 1), pad_size);
2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        pu1_src += src_strd;
2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*       Padding at the top of a 2d array
2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*       The top row of a 2d array is replicated for pad_size times at the top
2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_top(UWORD8 *pu1_src,
2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                   WORD32 src_strd,
2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                   WORD32 wd,
2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                   WORD32 pad_size)
2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 1; row <= pad_size; row++)
2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memcpy(pu1_src - row * src_strd, pu1_src, wd);
2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
2840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
2850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
2870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   Padding at the bottom of a 2d array
2880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
2900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   The bottom row of a 2d array is replicated for pad_size times at the bottom
2910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
2940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
2950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
2970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
2980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
2990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
3000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
3010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
3030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
3040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
3060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
3070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
3090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
3100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
3120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
3130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
3150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
3170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
3180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
3200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
3210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_bottom(UWORD8 *pu1_src,
3230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                      WORD32 src_strd,
3240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                      WORD32 wd,
3250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                      WORD32 pad_size)
3260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
3270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
3280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 1; row <= pad_size; row++)
3300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
3310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memcpy(pu1_src + (row - 1) * src_strd,
3320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar               pu1_src - 1 * src_strd, wd);
3330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
3340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
3350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
3390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
3400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
3420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   Padding (luma block) at the left of a 2d array
3430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
3450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   The left column of a 2d array is replicated for pad_size times at the left
3460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
3490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
3500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
3520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
3530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
3550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
3560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
3580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
3590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
3610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
3620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
3640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
3650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
3670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
3680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
3700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
3720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
3730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
3750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
3760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_left_luma(UWORD8 *pu1_src,
3780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 src_strd,
3790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 ht,
3800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                         WORD32 pad_size)
3810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
3820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
3830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 0; row < ht; row++)
3850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
3860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memset(pu1_src - pad_size, *pu1_src, pad_size);
3870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        pu1_src += src_strd;
3890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
3900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
3910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
3950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
3960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
3970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
3980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   Padding (chroma block) at the left of a 2d array
3990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
4010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*   The left column of a 2d array is replicated for pad_size times at the left
4020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
4050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
4060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
4080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
4090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
4110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
4120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
4140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array (each colour component)
4150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
4170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
4180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
4200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
4210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
4230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
4240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
4260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
4280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
4290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
4310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
4320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_left_chroma(UWORD8 *pu1_src,
4340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 src_strd,
4350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 ht,
4360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                           WORD32 pad_size)
4370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
4380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
4390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 col;
4400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    UWORD16 *pu2_src = (UWORD16 *)pu1_src;
4410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    src_strd >>= 1;
4430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    pad_size >>= 1;
4440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 0; row < ht; row++)
4460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
4470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        UWORD16 u2_uv_val;
4480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        u2_uv_val = pu2_src[0];
4500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        for(col = -pad_size; col < 0; col++)
4510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar            pu2_src[col] = u2_uv_val;
4520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        pu2_src += src_strd;
4540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
4550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
4560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
4600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
4610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
4630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Padding (luma block) at the right of a 2d array
4640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
4660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* The right column of a 2d array is replicated for pad_size times at the right
4670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
4700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
4710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
4730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
4740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
4760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
4770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
4790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
4800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
4820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
4830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
4850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
4860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
4880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
4890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
4910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
4930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
4940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
4950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
4960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
4970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_right_luma(UWORD8 *pu1_src,
4990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                          WORD32 src_strd,
5000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                          WORD32 ht,
5010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                          WORD32 pad_size)
5020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
5030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
5040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 0; row < ht; row++)
5060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
5070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        memset(pu1_src, *(pu1_src - 1), pad_size);
5080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        pu1_src += src_strd;
5100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
5110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
5120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/**
5160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
5170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief
5190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Padding (chroma block) at the right of a 2d array
5200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description:
5220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* The right column of a 2d array is replicated for pad_size times at the right
5230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pu1_src
5260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  UWORD8 pointer to the source
5270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] src_strd
5290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer source stride
5300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
5320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
5330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
5350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array (each colour component)
5360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pad_size
5380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer -padding size of the array
5390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ht
5410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer height of the array
5420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] wd
5440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  integer width of the array
5450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns
5470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks
5490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*  None
5500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*
5510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*******************************************************************************
5520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/
5530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevc_pad_right_chroma(UWORD8 *pu1_src,
5550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                            WORD32 src_strd,
5560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                            WORD32 ht,
5570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar                            WORD32 pad_size)
5580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{
5590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 row;
5600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    WORD32 col;
5610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    UWORD16 *pu2_src = (UWORD16 *)pu1_src;
5620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    src_strd >>= 1;
5640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    pad_size >>= 1;
5650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    for(row = 0; row < ht; row++)
5670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    {
5680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        UWORD16 u2_uv_val;
5690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        u2_uv_val = pu2_src[-1];
5710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        for(col = 0; col < pad_size; col++)
5720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar            pu2_src[col] = u2_uv_val;
5730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar        pu2_src += src_strd;
5750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    }
5760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar}
5770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
578