18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/******************************************************************************
28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project
48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License");
68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License.
78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at:
88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0
108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software
128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS,
138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and
158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License.
168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *****************************************************************************
188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @file
238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  ih264_luma_intra_pred_filters.c
248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Contains function definitions for intra prediction  filters
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @author
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Ittiam
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par List of Functions:
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_vert
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_horz
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_dc
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_diag_dl
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_diag_dr
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_vert_r
388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_horz_d
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_vert_l
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_4x4_mode_horz_u
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_ref_filtering
428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_vert
438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_horz
448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_dc
458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_diag_dl
468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_diag_dr
478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_vert_r
488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_horz_d
498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_vert_l
508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_8x8_mode_horz_u
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_16x16_mode_vert
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_16x16_mode_horz
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_16x16_mode_dc
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  - ih264_intra_pred_luma_16x16_mode_plane
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* File Includes                                                             */
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* System include files */
678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <stdio.h>
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <stddef.h>
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <string.h>
708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* User include files */
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_defs.h"
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_typedefs.h"
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_macros.h"
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_platform_macros.h"
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_intra_pred_filters.h"
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Global variables used only in assembly files*/
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sconst WORD8 ih264_gai1_intrapred_luma_plane_coeffs[] =
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 0x01, 0x02, 0x03, 0x04,
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S  0x05, 0x06, 0x07, 0x08,
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S  0x09, 0x0A, 0x0B, 0x0C,
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S  0x0D, 0x0E, 0x0F, 0x10, };
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sconst WORD8  ih264_gai1_intrapred_luma_8x8_horz_u[] =
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 0x06,0x15,0x05,0x14,
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S  0x04,0x13,0x03,0x12,
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S  0x02,0x11,0x01,0x10,
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S  0x00,0x1F,0x0F,0x0F
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S};
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*******************    LUMA INTRAPREDICTION    *******************/
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*******************    4x4 Modes    *******************/
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_vert
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_4x4 mode:vertical
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Perform Intra prediction for  luma_4x4 mode:vertical ,described in sec 8.3.1.2.1
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_vert(UWORD8 *pu1_src,
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         UWORD8 *pu1_dst,
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 src_strd,
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 dst_strd,
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 ngbr_avail)
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK_SIZE + 1;
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, pu1_top, 4);
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, pu1_top, 4);
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, pu1_top, 4);
1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, pu1_top, 4);
1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_horz
1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_4x4 mode:horizontal
1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_4x4 mode:horizontal ,described in sec 8.3.1.2.2
1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_horz(UWORD8 *pu1_src,
1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         UWORD8 *pu1_dst,
1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 src_strd,
1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 dst_strd,
1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 ngbr_avail)
1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK_SIZE - 1;
1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst, *pu1_left, 4);
1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + dst_strd, *(pu1_left - 1), 4);
1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 2 * dst_strd, *(pu1_left - 2), 4);
1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 3 * dst_strd, *(pu1_left - 3), 4);
1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_dc
2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_4x4 mode:DC
2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_4x4 mode:DC ,described in sec 8.3.1.2.3
2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  availability of neighbouring pixels
2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_dc(UWORD8 *pu1_src,
2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD8 *pu1_dst,
2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 src_strd,
2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 dst_strd,
2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 ngbr_avail)
2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_useleft; /* availability of left predictors (only for DC) */
2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_usetop; /* availability of top predictors (only for DC) */
2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 val = 0;
2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_useleft = BOOLEAN(ngbr_avail & LEFT_MB_AVAILABLE_MASK);
2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_usetop = BOOLEAN(ngbr_avail & TOP_MB_AVAILABLE_MASK);
2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK_SIZE + 1;
2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK_SIZE - 1;
2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u1_useleft)
2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += *pu1_left--;
2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += *pu1_left--;
2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += *pu1_left--;
2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += *pu1_left + 2;
2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u1_usetop)
2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += *pu1_top + *(pu1_top + 1) + *(pu1_top + 2) + *(pu1_top + 3)
2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        + 2;
2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Since 2 is added if either left/top pred is there,
2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     val still being zero implies both preds are not there */
2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    val = (val) ? (val >> (1 + u1_useleft + u1_usetop)) : 128;
2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* 4 bytes are copied from src to dst */
2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst, val, 4);
2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + dst_strd, val, 4);
2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 2 * dst_strd, val, 4);
2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 3 * dst_strd, val, 4);
2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_diag_dl
2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_4x4 mode:Diagonal_Down_Left
2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_4x4 mode:Diagonal_Down_Left ,described in sec 8.3.1.2.4
2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_diag_dl(UWORD8 *pu1_src,
3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD8 *pu1_dst,
3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 src_strd,
3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 dst_strd,
3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 ngbr_avail)
3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g, ui4_h;
3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[7];
3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src +BLK_SIZE + 1;
3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_top++;
3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_top++;
3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_top++;
3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_h = *pu1_top;
3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_a, ui4_b, ui4_c);
3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_b, ui4_c, ui4_d);
3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_c, ui4_d, ui4_e);
3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_d, ui4_e, ui4_f);
3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT121(ui4_e, ui4_f, ui4_g);
3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_f, ui4_g, ui4_h);
3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT121(ui4_g, ui4_h, ui4_h);
3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels, 4);
3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 1, 4);
3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 2, 4);
3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 3, 4);
3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_diag_dr
3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_4x4 mode:Diagonal_Down_Right
3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_4x4 mode:Diagonal_Down_Right ,described in sec 8.3.1.2.5
3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_diag_dr(UWORD8 *pu1_src,
3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD8 *pu1_dst,
3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 src_strd,
3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 dst_strd,
3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 ngbr_avail)
3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL;/* Pointer to top left predictor */
3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_d, ui4_i, ui4_j, ui4_k, ui4_l, ui4_m;
3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[7];
3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK_SIZE + 1;
3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK_SIZE - 1;
3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src +BLK_SIZE;
3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_left--;
3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left--;
3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_left;
3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_topleft;
3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_j, ui4_i, ui4_m);
3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_k, ui4_j, ui4_i);
3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_l, ui4_k, ui4_j);
4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_i, ui4_m, ui4_a);
4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT121(ui4_m, ui4_a, ui4_b);
4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_a, ui4_b, ui4_c);
4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT121(ui4_b, ui4_c, ui4_d);
4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 3, 4);
4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 2, 4);
4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 1, 4);
4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels, 4);
4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_vert_r
4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_4x4 mode:Vertical_Right
4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_4x4 mode:Vertical_Right ,described in sec 8.3.1.2.6
4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_vert_r(UWORD8 *pu1_src,
4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_d, ui4_i, ui4_j, ui4_k, ui4_m;
4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL;/* Pointer to top left predictor */
4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[10];
4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src +BLK_SIZE + 1;
4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK_SIZE - 1;
4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src + BLK_SIZE;
4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_left--;
4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left;
4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_topleft;
4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_m, ui4_a);
4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT11(ui4_a, ui4_b);
4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT11(ui4_b, ui4_c);
4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT11(ui4_c, ui4_d);
4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_i, ui4_m, ui4_a);
4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_m, ui4_a, ui4_b);
4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_a, ui4_b, ui4_c);
4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT121(ui4_b, ui4_c, ui4_d);
4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_j, ui4_i, ui4_m);
4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_k, ui4_j, ui4_i);
4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 6, 4);
4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 1, 4);
4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 5, 4);
4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels, 4);
4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*
4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_horz_d
4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_4x4 mode:Horizontal_Down
4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_4x4 mode:Horizontal_Down ,described in sec 8.3.1.2.7
4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_horz_d(UWORD8 *pu1_src,
5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL;/* Pointer to top left predictor */
5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_i, ui4_j, ui4_k, ui4_l, ui4_m;
5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[10];
5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK_SIZE + 1;
5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK_SIZE - 1;
5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src + BLK_SIZE;
5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_left--;
5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left--;
5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_left--;
5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_topleft;
5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_i, ui4_m);
5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT121(ui4_i, ui4_m, ui4_a);
5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT121(ui4_m, ui4_a, ui4_b);
5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT121(ui4_a, ui4_b, ui4_c);
5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_l, ui4_k, ui4_j);
5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT11(ui4_k, ui4_j);
5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_k, ui4_j, ui4_i);
5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT11(ui4_j, ui4_i);
5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_j, ui4_i, ui4_m);
5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT11(ui4_l, ui4_k);
5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 6, 4);
5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 4, 4);
5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 2, 4);
5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels, 4);
5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_vert_l
5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_4x4 mode:Vertical_Left
5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_4x4 mode:Vertical_Left ,described in sec 8.3.1.2.8
5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_vert_l(UWORD8 *pu1_src,
5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g;
6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[10];
6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK_SIZE + 1;
6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_top++;
6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_top++;
6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_top;
6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT11(ui4_a, ui4_b);
6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_b, ui4_c);
6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT11(ui4_c, ui4_d);
6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT11(ui4_d, ui4_e);
6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_a, ui4_b, ui4_c);
6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_b, ui4_c, ui4_d);
6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_c, ui4_d, ui4_e);
6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_d, ui4_e, ui4_f);
6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT11(ui4_e, ui4_f);
6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT121(ui4_e, ui4_f, ui4_g);
6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 5, 4);
6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels, 4);
6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 6, 4);
6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 1, 4);
6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_4x4_mode_horz_u
6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_4x4 mode:Horizontal_Up
6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_4x4 mode:Horizontal_Up ,described in sec 8.3.1.2.9
6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
6488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
6508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
6518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
6538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
6548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
6568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
6578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
6598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
6618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
6628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
6638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
6648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_4x4_mode_horz_u(UWORD8 *pu1_src,
6658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
6668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
6678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
6688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
6698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
6718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_i, ui4_j, ui4_k, ui4_l;
6728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[10];
6738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
6748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
6758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK_SIZE - 1;
6768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_left--;
6788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
6798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left--;
6808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_left--;
6818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT11(ui4_j, ui4_i);
6838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_k, ui4_j, ui4_i);
6848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT11(ui4_k, ui4_j);
6858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_l, ui4_k, ui4_j);
6868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT11(ui4_l, ui4_k);
6878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_l, ui4_l, ui4_k);
6888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = ui4_l;
6898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = ui4_l;
6908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = ui4_l;
6918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = ui4_l;
6928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels, 4);
6948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 2, 4);
6958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 4, 4);
6968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 6, 4);
6978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
6988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*******************    8x8 Modes    *******************/
7008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
7028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
7038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_ref_filtering
7058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
7078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Reference sample filtering process for Intra_8x8 sample prediction
7088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
7108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Reference sample filtering process for Intra_8x8 sample prediction ,described in sec 8.3.2.2.1
7118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
7138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
7148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
7168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
7178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
7198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride[Not Used]
7208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
7228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride[Not Used]
7238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
7258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
7268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
7288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
7308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
7318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
7338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
7348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_ref_filtering(UWORD8 *pu1_left,
7358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_topleft,
7368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_top,
7378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_dst,
7388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 left_strd,
7398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 ngbr_avail)
7408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
7418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 top_avail, left_avail, top_left_avail, top_right_avail;
7428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    left_avail = BOOLEAN(ngbr_avail & LEFT_MB_AVAILABLE_MASK);
7448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    top_avail = BOOLEAN(ngbr_avail & TOP_MB_AVAILABLE_MASK);
7458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    top_left_avail = BOOLEAN(ngbr_avail & TOP_LEFT_MB_AVAILABLE_MASK);
7468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    top_right_avail = BOOLEAN(ngbr_avail & TOP_RIGHT_MB_AVAILABLE_MASK);
7478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(top_avail)
7498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
7508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i;
7518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 u4_xm1;
7528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(!top_right_avail)
7548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            memset(pu1_dst + 8 + 1 + 8, pu1_top[7], 8);
7568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            top_right_avail = 1;
7578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
7588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
7598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            memcpy(pu1_dst + 8 + 1 + 8, pu1_top + 8, 8);
7618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
7628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(top_left_avail)
7648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[8 + 1 + 0] = FILT121((*pu1_topleft), pu1_top[0],
7668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         pu1_top[1]);
7678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
7698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
7708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[8 + 1] = ((3 * pu1_top[0]) + pu1_top[1] + 2) >> 2;
7728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
7738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(i = 1; i <= 6; i++)
7758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[8 + 1 + i] = FILT121(pu1_top[i - 1], pu1_top[i],
7778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         pu1_top[i + 1]);
7788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
7808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* First byte of Top Right input is in pu1_dst[8 + 1 + 8]*/
7818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst[8 + 1 + 7] = FILT121(pu1_top[6], pu1_top[7],
7828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                     pu1_dst[8 + 1 + 8]);
7838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* filtered output and source in same buf, to prevent output(x - 1)
7858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S         being over written in process */
7868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        u4_xm1 = pu1_top[7];
7878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(i = 8; i <= 14; i++)
7898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
7908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            UWORD32 u4_x;
7918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_x = (u4_xm1 + (pu1_dst[8 + 1 + i] << 1) + pu1_dst[8 + 1 + i + 1]
7928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                            + 2) >> 2;
7938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            /* assigning u4_xm1 from the un-filtered values for the next iteration */
7948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            u4_xm1 = pu1_dst[8 + 1 + i];
7958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[8 + 1 + i] = u4_x;
7968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
7978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst[8 + 1 + 15] = (u4_xm1 + (3 * pu1_dst[8 + 1 + 15]) + 2) >> 2;
7998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
8018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* pu1_topleft is overloaded. It is both: */
8038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* a. A pointer for the top left pixel */
8048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* b. An indicator of availability of top left. */
8058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*    If it is null then top left not available */
8068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(top_left_avail)
8078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
8088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if((!top_avail) || (!left_avail))
8098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
8108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            if(top_avail)
8118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pu1_dst[8] = (3 * pu1_topleft[0] + pu1_top[0] + 2) >> 2;
8128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            else if(left_avail)
8138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                pu1_dst[8] = (3 * pu1_topleft[0] + pu1_left[0] + 2) >> 2;
8148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
8158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
8168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
8178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[8] = FILT121(pu1_top[0], (*pu1_topleft), pu1_left[0]);
8188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
8198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
8208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(left_avail)
8228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
8238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD32 idx;
8248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        if(0 != pu1_topleft)
8258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
8268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[7] = FILT121((*pu1_topleft), pu1_left[0],
8278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                 pu1_left[left_strd]);
8288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
8298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        else
8308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
8318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[7] = ((3 * pu1_left[0]) + pu1_left[left_strd] + 2) >> 2;
8328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
8338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(idx = 1; idx <= 6; idx++)
8358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
8368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst[7 - idx] = FILT121(pu1_left[(idx - 1) * left_strd],
8378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       pu1_left[idx * left_strd],
8388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       pu1_left[(idx + 1) * left_strd]);
8398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
8418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst[0] = (pu1_left[6 * left_strd] + 3 * pu1_left[7 * left_strd] + 2)
8428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                        >> 2;
8438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
8458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
8468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
8498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_vert
8518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
8538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_8x8 mode:vertical
8548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
8568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_8x8 mode:vertical ,described in sec 8.3.2.2.2
8578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
8598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
8608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
8628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
8638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
8658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
8668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
8688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
8698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
8718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
8728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
8748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
8768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
8778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
8788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
8798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
8808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_vert(UWORD8 *pu1_src,
8818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         UWORD8 *pu1_dst,
8828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 src_strd,
8838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 dst_strd,
8848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 ngbr_avail)
8858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL;
8878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
8888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
8898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
8908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, pu1_top, 8);
8928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, pu1_top, 8);
8938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, pu1_top, 8);
8948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, pu1_top, 8);
8958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, pu1_top, 8);
8968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, pu1_top, 8);
8978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, pu1_top, 8);
8988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, pu1_top, 8);
8998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
9008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
9028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
9038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_horz
9058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
9078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_8x8 mode:horizontal
9088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
9108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_8x8 mode:horizontal ,described in sec 8.3.2.2.2
9118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
9138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
9148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
9168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
9178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
9198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
9208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
9228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
9238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
9258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
9268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
9288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
9308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
9318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
9338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
9348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_horz(UWORD8 *pu1_src,
9368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         UWORD8 *pu1_dst,
9378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 src_strd,
9388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 dst_strd,
9398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 ngbr_avail)
9408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
9418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = pu1_src + BLK8x8SIZE - 1;
9428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
9438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
9448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst, *pu1_left, 8);
9458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + dst_strd, *(pu1_left - 1), 8);
9468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 2 * dst_strd, *(pu1_left - 2), 8);
9478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 3 * dst_strd, *(pu1_left - 3), 8);
9488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 4 * dst_strd, *(pu1_left - 4), 8);
9498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 5 * dst_strd, *(pu1_left - 5), 8);
9508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 6 * dst_strd, *(pu1_left - 6), 8);
9518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 7 * dst_strd, *(pu1_left - 7), 8);
9528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
9538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
9558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
9568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_dc
9588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
9608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:DC
9618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
9638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:DC ,described in sec 8.3.2.2.4
9648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
9668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
9678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
9698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
9708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
9728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
9738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
9758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
9768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
9788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  availability of neighbouring pixels
9798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
9818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
9838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
9848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
9858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
9868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_dc(UWORD8 *pu1_src,
9878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       UWORD8 *pu1_dst,
9888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 src_strd,
9898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 dst_strd,
9908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                       WORD32 ngbr_avail)
9918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
9928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_useleft; /* availability of left predictors (only for DC) */
9938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_usetop; /* availability of top predictors (only for DC) */
9948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
9958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
9968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 row;
9978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 val = 0;
9988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
9998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_useleft = BOOLEAN(ngbr_avail & LEFT_MB_AVAILABLE_MASK);
10018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_usetop = BOOLEAN(ngbr_avail & TOP_MB_AVAILABLE_MASK);
10028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
10038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK8x8SIZE - 1;
10048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u1_useleft)
10068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
10078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(row = 0; row < BLK8x8SIZE; row++)
10088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            val += *(pu1_left - row);
10098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += 4;
10108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
10118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u1_usetop)
10128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
10138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(row = 0; row < BLK8x8SIZE; row++)
10148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            val += *(pu1_top + row);
10158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += 4;
10168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
10178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Since 4 is added if either left/top pred is there,
10198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     val still being zero implies both preds are not there */
10208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    val = (val) ? (val >> (2 + u1_useleft + u1_usetop)) : 128;
10218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst, val, 8);
10238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + dst_strd, val, 8);
10248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 2 * dst_strd, val, 8);
10258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 3 * dst_strd, val, 8);
10268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 4 * dst_strd, val, 8);
10278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 5 * dst_strd, val, 8);
10288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 6 * dst_strd, val, 8);
10298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(pu1_dst + 7 * dst_strd, val, 8);
10308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
10318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
10338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
10348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_diag_dl
10368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
10388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:Diagonal_Down_Left
10398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
10418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:Diagonal_Down_Left ,described in sec 8.3.2.2.5
10428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
10448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
10458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
10478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
10488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
10508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
10518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
10538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
10548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
10568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
10578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
10598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
10618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
10628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
10638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
10648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_diag_dl(UWORD8 *pu1_src,
10658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD8 *pu1_dst,
10668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 src_strd,
10678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 dst_strd,
10688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 ngbr_avail)
10698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
10708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
10718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g, ui4_h;
10728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_i, ui4_j, ui4_k, ui4_l, ui4_m, ui4_n, ui4_o, ui4_p;
10738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[15];
10748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
10758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
10768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
10778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
10798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
10808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
10818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
10828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_top++;
10838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_top++;
10848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_top++;
10858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_h = *pu1_top++;
10868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_top++;
10878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_top++;
10888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_top++;
10898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_top++;
10908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_top++;
10918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_n = *pu1_top++;
10928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_o = *pu1_top++;
10938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_p = *pu1_top;
10948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_a, ui4_b, ui4_c);
10968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_b, ui4_c, ui4_d);
10978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_c, ui4_d, ui4_e);
10988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_d, ui4_e, ui4_f);
10998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT121(ui4_e, ui4_f, ui4_g);
11008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_f, ui4_g, ui4_h);
11018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT121(ui4_g, ui4_h, ui4_i);
11028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT121(ui4_h, ui4_i, ui4_j);
11038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT121(ui4_i, ui4_j, ui4_k);
11048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT121(ui4_j, ui4_k, ui4_l);
11058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[10] = FILT121(ui4_k, ui4_l, ui4_m);
11068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[11] = FILT121(ui4_l, ui4_m, ui4_n);
11078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[12] = FILT121(ui4_m, ui4_n, ui4_o);
11088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[13] = FILT121(ui4_n, ui4_o, ui4_p);
11098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[14] = FILT121(ui4_o, ui4_p, ui4_p);
11108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels, 8);
11128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 1, 8);
11138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 2, 8);
11148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 3, 8);
11158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, predicted_pixels + 4, 8);
11168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, predicted_pixels + 5, 8);
11178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, predicted_pixels + 6, 8);
11188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, predicted_pixels + 7, 8);
11198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
11208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
11228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
11238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_diag_dr
11258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
11278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:Diagonal_Down_Right
11288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
11308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:Diagonal_Down_Right ,described in sec 8.3.2.2.6
11318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
11338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
11348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
11368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
11378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
11398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
11408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
11428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
11438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
11458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
11468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
11488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
11508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
11518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
11528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
11538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_diag_dr(UWORD8 *pu1_src,
11548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD8 *pu1_dst,
11558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 src_strd,
11568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 dst_strd,
11578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 ngbr_avail)
11588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
11608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
11618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL; /* Pointer to start of top left predictors */
11628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a;
11638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g, ui4_h, ui4_i;
11648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_j, ui4_k, ui4_l, ui4_m, ui4_n, ui4_o, ui4_p, ui4_q;
11658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[15];
11668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
11678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
11688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
11698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK8x8SIZE - 1;
11708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src + BLK8x8SIZE;
11718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_topleft;
11738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
11748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
11758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
11768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_top++;
11778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_top++;
11788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_top++;
11798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_h = *pu1_top++;
11808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_top;
11818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
11828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left--;
11838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_left--;
11848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_left--;
11858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_n = *pu1_left--;
11868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_o = *pu1_left--;
11878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_p = *pu1_left--;
11888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_q = *pu1_left;
11898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT121(ui4_a, ui4_j, ui4_k);
11918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_j, ui4_k, ui4_l);
11928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT121(ui4_k, ui4_l, ui4_m);
11938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_l, ui4_m, ui4_n);
11948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_m, ui4_n, ui4_o);
11958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_n, ui4_o, ui4_p);
11968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_o, ui4_p, ui4_q);
11978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT121(ui4_b, ui4_a, ui4_j);
11988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT121(ui4_a, ui4_b, ui4_c);
11998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT121(ui4_b, ui4_c, ui4_d);
12008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[10] = FILT121(ui4_c, ui4_d, ui4_e);
12018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[11] = FILT121(ui4_d, ui4_e, ui4_f);
12028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[12] = FILT121(ui4_e, ui4_f, ui4_g);
12038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[13] = FILT121(ui4_f, ui4_g, ui4_h);
12048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[14] = FILT121(ui4_g, ui4_h, ui4_i);
12058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 7, 8);
12078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 6, 8);
12088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 5, 8);
12098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 4, 8);
12108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, predicted_pixels + 3, 8);
12118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, predicted_pixels + 2, 8);
12128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, predicted_pixels + 1, 8);
12138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, predicted_pixels, 8);
12148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
12158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
12178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
12188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_vert_r
12208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
12228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:Vertical_Right
12238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
12258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:Vertical_Right ,described in sec 8.3.2.2.7
12268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
12288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
12298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
12318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
12328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
12348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
12358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
12378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
12388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
12408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
12418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
12438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
12458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
12468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
12478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
12488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_vert_r(UWORD8 *pu1_src,
12498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
12508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
12518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
12528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
12538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
12548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
12558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
12568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL; /* Pointer to start of top left predictors */
12578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a;
12588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g, ui4_h, ui4_i;
12598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_j, ui4_k, ui4_l, ui4_m, ui4_n, ui4_o, ui4_p;
12608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[22];
12618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
12638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
12648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
12658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK8x8SIZE - 1;
12668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src + BLK8x8SIZE;
12678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_topleft;
12698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
12718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
12728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
12738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_top++;
12748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_top++;
12758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_top++;
12768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_h = *pu1_top++;
12778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_top;
12788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
12798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left--;
12808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_left--;
12818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_left--;
12828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_n = *pu1_left--;
12838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_o = *pu1_left--;
12848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_p = *pu1_left--;
12858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT121(ui4_o, ui4_n, ui4_m);
12878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_m, ui4_l, ui4_k);
12888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT121(ui4_k, ui4_j, ui4_a);
12898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT11(ui4_a, ui4_b);
12908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT11(ui4_b, ui4_c);
12918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT11(ui4_c, ui4_d);
12928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_d, ui4_e);
12938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT11(ui4_e, ui4_f);
12948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT11(ui4_f, ui4_g);
12958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT11(ui4_g, ui4_h);
12968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[10] = FILT11(ui4_h, ui4_i);
12978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[11] = FILT121(ui4_p, ui4_o, ui4_n);
12988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[12] = FILT121(ui4_n, ui4_m, ui4_l);
12998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[13] = FILT121(ui4_l, ui4_k, ui4_j);
13008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[14] = FILT121(ui4_b, ui4_a, ui4_j);
13018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[15] = FILT121(ui4_a, ui4_b, ui4_c);
13028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[16] = FILT121(ui4_b, ui4_c, ui4_d);
13038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[17] = FILT121(ui4_c, ui4_d, ui4_e);
13048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[18] = FILT121(ui4_d, ui4_e, ui4_f);
13058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[19] = FILT121(ui4_e, ui4_f, ui4_g);
13068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[20] = FILT121(ui4_f, ui4_g, ui4_h);
13078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[21] = FILT121(ui4_g, ui4_h, ui4_i);
13088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 3, 8);
13108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 1 * dst_strd, predicted_pixels + 14, 8);
13118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 2, 8);
13128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 13, 8);
13138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, predicted_pixels + 1, 8);
13148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, predicted_pixels + 12, 8);
13158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, predicted_pixels, 8);
13168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, predicted_pixels + 11, 8);
13178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
13198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*
13218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
13228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_horz_d
13248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
13268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:Horizontal_Down
13278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
13298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:Horizontal_Down ,described in sec 8.3.2.2.8
13308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
13328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
13338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
13358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
13368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
13388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
13398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
13418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
13428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
13448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
13458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
13478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
13498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
13508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
13518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
13528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_horz_d(UWORD8 *pu1_src,
13548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
13558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
13568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
13578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
13588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
13598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
13608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
13618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL; /* Pointer to start of top left predictors */
13628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a;
13638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g, ui4_h, ui4_i;
13648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_j, ui4_k, ui4_l, ui4_m, ui4_n, ui4_o, ui4_p;
13658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[22];
13668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
13678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
13688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
13698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK8x8SIZE - 1;
13708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src + BLK8x8SIZE;
13718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_topleft;
13738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_top++;
13748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_top++;
13758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_top++;
13768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_top++;
13778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_n = *pu1_top++;
13788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_o = *pu1_top++;
13798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_p = *pu1_top++;
13808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_left--;
13818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_left--;
13828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_left--;
13838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_left--;
13848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_left--;
13858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_left--;
13868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_h = *pu1_left--;
13878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_left;
13888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT11(ui4_h, ui4_i);
13908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_g, ui4_h, ui4_i);
13918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT11(ui4_g, ui4_h);
13928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_f, ui4_g, ui4_h);
13938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT11(ui4_f, ui4_g);
13948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_e, ui4_f, ui4_g);
13958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_e, ui4_f);
13968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT121(ui4_d, ui4_e, ui4_f);
13978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT11(ui4_d, ui4_e);
13988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT121(ui4_c, ui4_d, ui4_e);
13998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[10] = FILT11(ui4_c, ui4_d);
14008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[11] = FILT121(ui4_b, ui4_c, ui4_d);
14018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[12] = FILT11(ui4_b, ui4_c);
14028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[13] = FILT121(ui4_a, ui4_b, ui4_c);
14038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[14] = FILT11(ui4_a, ui4_b);
14048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[15] = FILT121(ui4_j, ui4_a, ui4_b);
14058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[16] = FILT121(ui4_k, ui4_j, ui4_a);
14068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[17] = FILT121(ui4_l, ui4_k, ui4_j);
14078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[18] = FILT121(ui4_m, ui4_l, ui4_k);
14088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[19] = FILT121(ui4_n, ui4_m, ui4_l);
14098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[20] = FILT121(ui4_o, ui4_n, ui4_m);
14108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[21] = FILT121(ui4_p, ui4_o, ui4_n);
14118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels + 14, 8);
14138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + dst_strd, predicted_pixels + 12, 8);
14148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 10, 8);
14158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 8, 8);
14168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, predicted_pixels + 6, 8);
14178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, predicted_pixels + 4, 8);
14188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, predicted_pixels + 2, 8);
14198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, predicted_pixels, 8);
14208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
14218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
14238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
14248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_vert_l
14268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
14288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:Vertical_Left
14298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
14318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:Vertical_Left ,described in sec 8.3.2.2.9
14328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
14348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
14358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
14378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
14388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
14408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
14418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
14438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
14448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
14468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
14478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
14498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
14518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
14528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
14538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
14548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_vert_l(UWORD8 *pu1_src,
14568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
14578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
14588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
14598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
14608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
14618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
14628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_a, ui4_b, ui4_c, ui4_d, ui4_e, ui4_f, ui4_g, ui4_h;
14638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_i, ui4_j, ui4_k, ui4_l, ui4_m;
14648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[22];
14658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
14668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
14678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + BLK8x8SIZE + 1;
14688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_a = *pu1_top++;
14708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_b = *pu1_top++;
14718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_c = *pu1_top++;
14728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_d = *pu1_top++;
14738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_e = *pu1_top++;
14748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_f = *pu1_top++;
14758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_g = *pu1_top++;
14768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_h = *pu1_top++;
14778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_i = *pu1_top++;
14788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_top++;
14798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_top++;
14808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_top++;
14818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_top++;
14828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT11(ui4_a, ui4_b);
14848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT11(ui4_b, ui4_c);
14858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT11(ui4_c, ui4_d);
14868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT11(ui4_d, ui4_e);
14878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT11(ui4_e, ui4_f);
14888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT11(ui4_f, ui4_g);
14898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_g, ui4_h);
14908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT11(ui4_h, ui4_i);
14918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT11(ui4_i, ui4_j);
14928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT11(ui4_j, ui4_k);
14938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[10] = FILT11(ui4_k, ui4_l);
14948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[11] = FILT121(ui4_a, ui4_b, ui4_c);
14958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[12] = FILT121(ui4_b, ui4_c, ui4_d);
14968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[13] = FILT121(ui4_c, ui4_d, ui4_e);
14978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[14] = FILT121(ui4_d, ui4_e, ui4_f);
14988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[15] = FILT121(ui4_e, ui4_f, ui4_g);
14998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[16] = FILT121(ui4_f, ui4_g, ui4_h);
15008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[17] = FILT121(ui4_g, ui4_h, ui4_i);
15018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[18] = FILT121(ui4_h, ui4_i, ui4_j);
15028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[19] = FILT121(ui4_i, ui4_j, ui4_k);
15038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[20] = FILT121(ui4_j, ui4_k, ui4_l);
15048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[21] = FILT121(ui4_k, ui4_l, ui4_m);
15058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels, 8);
15078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 1, 8);
15088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, predicted_pixels + 2, 8);
15098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, predicted_pixels + 3, 8);
15108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 1 * dst_strd, predicted_pixels + 11, 8);
15118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 12, 8);
15128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, predicted_pixels + 13, 8);
15138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, predicted_pixels + 14, 8);
15148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
15158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
15178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
15188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_8x8_mode_horz_u
15208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
15228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *     Perform Intra prediction for  luma_8x8 mode:Horizontal_Up
15238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
15258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *    Perform Intra prediction for  luma_8x8 mode:Horizontal_Up ,described in sec 8.3.2.2.10
15268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
15288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
15298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
15318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
15328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
15348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
15358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
15378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
15388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
15408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
15418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
15438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
15458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
15468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
15478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
15488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_8x8_mode_horz_u(UWORD8 *pu1_src,
15508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
15518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
15528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
15538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
15548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
15568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
15578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 ui4_j, ui4_k, ui4_l, ui4_m, ui4_n, ui4_o, ui4_p, ui4_q;
15588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 predicted_pixels[22];
15598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
15608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
15618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK8x8SIZE - 1;
15628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_j = *pu1_left--;
15648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_k = *pu1_left--;
15658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_l = *pu1_left--;
15668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_m = *pu1_left--;
15678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_n = *pu1_left--;
15688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_o = *pu1_left--;
15698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_p = *pu1_left--;
15708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ui4_q = *pu1_left;
15718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + BLK8x8SIZE - 1;
15738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[0] = FILT11(ui4_j, ui4_k);
15758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[1] = FILT121(ui4_j, ui4_k, ui4_l);
15768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[2] = FILT11(ui4_k, ui4_l);
15778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[3] = FILT121(ui4_k, ui4_l, ui4_m);
15788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[4] = FILT11(ui4_l, ui4_m);
15798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[5] = FILT121(ui4_l, ui4_m, ui4_n);
15808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[6] = FILT11(ui4_m, ui4_n);
15818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[7] = FILT121(ui4_m, ui4_n, ui4_o);
15828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[8] = FILT11(ui4_n, ui4_o);
15838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[9] = FILT121(ui4_n, ui4_o, ui4_p);
15848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[10] = FILT11(ui4_o, ui4_p);
15858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[11] = FILT121(ui4_o, ui4_p, ui4_q);
15868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[12] = FILT11(ui4_p, ui4_q);
15878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    predicted_pixels[13] = FILT121(ui4_p, ui4_q, ui4_q);
15888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memset(predicted_pixels+14,ui4_q,8);
15898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst, predicted_pixels, 8);
15918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 1 * dst_strd, predicted_pixels + 2, 8);
15928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 2 * dst_strd, predicted_pixels + 4, 8);
15938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 3 * dst_strd, predicted_pixels + 6, 8);
15948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 4 * dst_strd, predicted_pixels + 8, 8);
15958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 5 * dst_strd, predicted_pixels + 10, 8);
15968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 6 * dst_strd, predicted_pixels + 12, 8);
15978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    memcpy(pu1_dst + 7 * dst_strd, predicted_pixels + 14, 8);
15988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
15998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*******************    16x16 Modes    *******************/
16028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
16048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
16058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_16x16_mode_vert
16078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
16098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:Vertical
16108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
16128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:Vertical, described in sec 8.3.3.1
16138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
16158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
16168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
16188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
16198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
16218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
16228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
16248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
16258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
16278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  availability of neighbouring pixels (Not used in this function)
16288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
16308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
16328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
16338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
16358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_16x16_mode_vert(UWORD8 *pu1_src,
16378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
16388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
16398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
16408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
16418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
16428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
16438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 rows; /* loop variables*/
16448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
16458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
16468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + MB_SIZE + 1;
16478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(rows = 0; rows < 16; rows += 4, pu1_dst += dst_strd)
16498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
16508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memcpy(pu1_dst, pu1_top, 16);
16518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
16528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memcpy(pu1_dst, pu1_top, 16);
16538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
16548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memcpy(pu1_dst, pu1_top, 16);
16558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
16568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memcpy(pu1_dst, pu1_top, 16);
16578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
16588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
16598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
16618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
16628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_16x16_mode_horz
16648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
16668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:Horizontal
16678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
16698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:Horizontal, described in sec 8.3.3.2
16708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
16728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
16738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
16758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
16768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
16788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
16798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
16818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
16828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
16848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
16858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
16878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
16898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
16908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
16918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
16928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_16x16_mode_horz(UWORD8 *pu1_src,
16948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           UWORD8 *pu1_dst,
16958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd,
16968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 dst_strd,
16978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 ngbr_avail)
16988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
16998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of top predictors */
17008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 rows;
17018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
17028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
17038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + MB_SIZE - 1;
17048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(rows = 0; rows < 16; rows += 4, pu1_dst += dst_strd, pu1_left --)
17068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
17078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, *pu1_left, 16); /* copy the left value to the entire row*/
17088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_left --;
17098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
17108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, *pu1_left, 16);
17118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_left --;
17128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
17138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, *pu1_left, 16);
17148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_left --;
17158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
17168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, *pu1_left, 16);
17178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
17198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
17218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
17228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_16x16_mode_dc
17248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
17268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:DC
17278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
17298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:DC, described in sec 8.3.3.3
17308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
17328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
17338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
17358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
17368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
17388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
17398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
17418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
17428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ** @param[in] ngbr_avail
17448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  availability of neighbouring pixels
17458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
17478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
17498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
17508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
17518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
17528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_16x16_mode_dc(UWORD8 *pu1_src,
17548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         UWORD8 *pu1_dst,
17558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 src_strd,
17568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 dst_strd,
17578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                         WORD32 ngbr_avail)
17588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
17598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD8 u1_useleft; /* availability of left predictors (only for DC) */
17608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_usetop; /* availability of top predictors (only for DC) */
17618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
17628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
17638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 rows; /* loop variables*/
17648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 val = 0;
17658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
17668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_useleft = BOOLEAN(ngbr_avail & LEFT_MB_AVAILABLE_MASK);
17688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    u1_usetop = BOOLEAN(ngbr_avail & TOP_MB_AVAILABLE_MASK);
17698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + MB_SIZE + 1;
17708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + MB_SIZE - 1;
17718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u1_useleft)
17728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
17738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(rows = 0; rows < 16; rows++)
17748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            val += *(pu1_left - rows);
17758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += 8;
17768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    if(u1_usetop)
17788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
17798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(rows = 0; rows < 16; rows++)
17808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            val += *(pu1_top + rows);
17818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        val += 8;
17828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Since 8 is added if either left/top pred is there,
17848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     val still being zero implies both preds are not there */
17858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    val = (val) ? (val >> (3 + u1_useleft + u1_usetop)) : 128;
17868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    for(rows = 0; rows < 16; rows += 4, pu1_dst += dst_strd)
17888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
17898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, val, 16);
17908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
17918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, val, 16);
17928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
17938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, val, 16);
17948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_dst += dst_strd;
17958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        memset(pu1_dst, val, 16);
17968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
17978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
17988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
18008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************
18018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *ih264_intra_pred_luma_16x16_mode_plane
18038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief
18058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:PLANE
18068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @par Description:
18088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  Perform Intra prediction for  luma_16x16 mode:PLANE, described in sec 8.3.3.4
18098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] pu1_src
18118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the source
18128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[out] pu1_dst
18148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  UWORD8 pointer to the destination
18158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] src_strd
18178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer source stride
18188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] dst_strd
18208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  integer destination stride
18218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @param[in] ngbr_avail
18238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * availability of neighbouring pixels(Not used in this function)
18248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @returns
18268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @remarks
18288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  None
18298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
18308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *******************************************************************************/
18318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264_intra_pred_luma_16x16_mode_plane(UWORD8 *pu1_src,
18338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD8 *pu1_dst,
18348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 src_strd,
18358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 dst_strd,
18368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 ngbr_avail)
18378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
18388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*! Written with no multiplications */
18398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_left = NULL; /* Pointer to start of left predictors */
18408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top = NULL; /* Pointer to start of top predictors */
18418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_topleft = NULL;
18428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 a, b, c, tmp;
18438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_tmp1, *pu1_tmp2;
18448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 shift;
18458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(src_strd);
18468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UNUSED(ngbr_avail);
18478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_top = pu1_src + MB_SIZE + 1;
18488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_left = pu1_src + MB_SIZE - 1;
18498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pu1_topleft = pu1_src + MB_SIZE;
18508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
18528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        a = (*(pu1_top + 15) + *(pu1_left - 15)) << 4;
18538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*! Implement Sum(x*(P((x+7),-1) - P((x-7),-1))) x=1...8 */
18558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1 = pu1_top + 8;
18568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2 = pu1_tmp1 - 2;
18578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Pixel diffs are only 9 bits;
18598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S         so sign extension allows shifts to be used even for signed */
18608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b = ((*pu1_tmp1++) - (*pu1_tmp2--)); /* x=1 */
18618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += ((*pu1_tmp1++) - (*pu1_tmp2--)) << 1; /* x=2 */
18628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1++) - (*pu1_tmp2--));
18638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += (tmp << 1) + tmp; /* x=3 */
18648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += ((*pu1_tmp1++) - (*pu1_tmp2--)) << 2; /* x=4 */
18658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1++) - (*pu1_tmp2--));
18678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += (tmp << 2) + tmp; /* x=5 */
18688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1++) - (*pu1_tmp2--));
18698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += (tmp << 2) + (tmp << 1); /* x=6 */
18708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1++) - (*pu1_tmp2--));
18718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += (tmp << 3) - tmp; /* x=7 */
18728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b += ((*pu1_tmp1) - (*pu1_topleft)) << 3; /* x=8 */
18738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        b = ((b << 2) + b + 32) >> 6; /*! (5*H + 32)>>6 */
18758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /*! Implement Sum(y*(P(-1,(y+7)) - P(-1,(y-7)))) y=1...8 */
18778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1 = pu1_left - 8;
18788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2 = pu1_tmp1 + 2;
18798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c = ((*pu1_tmp1) - (*pu1_tmp2)); /* y=1 */
18818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--;
18828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2++;
18838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += ((*pu1_tmp1) - (*pu1_tmp2)) << 1; /* y=2 */
18848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--;
18858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2++;
18868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1) - (*pu1_tmp2));
18878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += (tmp << 1) + tmp; /* y=3 */
18888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--;
18898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2++;
18908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += ((*pu1_tmp1) - (*pu1_tmp2)) << 2; /* y=4 */
18918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--;
18928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2++;
18938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1) - (*pu1_tmp2));
18958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += (tmp << 2) + tmp; /* y=5 */
18968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--;
18978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2++;
18988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1) - (*pu1_tmp2));
18998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += (tmp << 2) + (tmp << 1); /* y=6 */
19008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--;
19018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp2++;
19028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = ((*pu1_tmp1) - (*pu1_tmp2));
19038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += (tmp << 3) - tmp; /* y=7 */
19048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        pu1_tmp1--; //pu1_tmp2 ++;
19058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        /* Modified to get (-1,-1) location as *(pu1_top - 1) instead of (pu1_left - ui4_stride) */
19068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        //c += ((*pu1_tmp1) - (*(pu1_top - 1)))<<3;      /* y=8 */
19078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c += ((*pu1_tmp1) - (*pu1_topleft)) << 3; /* y=8 */
19088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        c = ((c << 2) + c + 32) >> 6; /*! (5*V + 32)>>32 */
19108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        shift = 3;
19118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
19128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*! Now from the plane parameters a, b, and c,
19148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     compute the fitted plane values over the block */
19158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    {
19168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 tmp1, tmpx, tmpx_init, j, i;
19178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmpx_init = -(b << shift); /* -8b */
19198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        tmp = a - (c << shift) + 16; /* a-((4or8)*c)+16 */
19208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        for(i = 0; i < 16; i++)
19218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        {
19228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            tmp += c; /*increment every time by c to get c*(y-7or3)*/
19238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            tmpx = tmpx_init; /* Init to -8b */
19248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            for(j = 0; j < 16; j++)
19258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            {
19268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                tmpx += b; /* increment every time by b to get b*(x-7or3) */
19278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                tmp1 = (tmp + tmpx) >> 5;
19288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                *pu1_dst++ = CLIP_U8(tmp1);
19298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            }
19308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            pu1_dst += (dst_strd - 16);
19318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        }
19328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    }
19338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}
1934