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