10d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/****************************************************************************** 20d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 40d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 50d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Licensed under the Apache License, Version 2.0 (the "License"); 60d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* you may not use this file except in compliance with the License. 70d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* You may obtain a copy of the License at: 80d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 90d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* http://www.apache.org/licenses/LICENSE-2.0 100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Unless required by applicable law or agreed to in writing, software 120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* distributed under the License is distributed on an "AS IS" BASIS, 130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* See the License for the specific language governing permissions and 150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* limitations under the License. 160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************/ 180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @file 210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* ihevcd_api.c 220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Contains api functions definitions for HEVC decoder 250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @author 270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Harish 280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par List of Functions: 300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - api_check_struct_sanity() 310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_get_version() 320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_set_default_params() 330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_init() 340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_get_num_rec() 350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_fill_num_mem_rec() 360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_init_mem_rec() 370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_retrieve_memrec() 380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_set_display_frame() 390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_set_flush_mode() 400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_get_status() 410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_get_buf_info() 420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_set_params() 430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_reset() 440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_rel_display_frame() 450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_disable_deblk() 460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_get_frame_dimensions() 470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_set_num_cores() 480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_ctl() 490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* - ihevcd_cxa_api_function() 500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* File Includes */ 580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stdio.h> 600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stddef.h> 610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <stdlib.h> 620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include <string.h> 630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_typedefs.h" 650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "iv.h" 660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ivd.h" 670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_cxa.h" 680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ithread.h" 690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_defs.h" 710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_debug.h" 720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_structs.h" 740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_macros.h" 750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_platform_macros.h" 760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_buf_mgr.h" 780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_dpb_mgr.h" 790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_disp_mgr.h" 800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_common_tables.h" 810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_cabac_tables.h" 820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevc_error.h" 830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_defs.h" 850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_trace.h" 860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_function_selector.h" 880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_structs.h" 890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_error.h" 900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_utils.h" 910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_decode.h" 920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_job_queue.h" 930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#include "ihevcd_statistics.h" 940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/* Function Prototypes */ 970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/*****************************************************************************/ 980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarIV_API_CALL_STATUS_T ihevcd_get_version(CHAR *pc_version_string, 990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 u4_version_buffer_size); 1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Used to test arguments for corresponding API call 1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* For each command the arguments are validated 1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_handle 1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Codec handle at API level 1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input structure 1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output structure 1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status of error checking 1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarstatic IV_API_CALL_STATUS_T api_check_struct_sanity(iv_obj_t *ps_handle, 1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_API_COMMAND_TYPE_T e_cmd; 1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 *pu4_api_ip; 1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 *pu4_api_op; 1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i, j; 1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(NULL == pv_api_op) 1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(NULL == pv_api_ip) 1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_api_ip = (UWORD32 *)pv_api_ip; 1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_api_op = (UWORD32 *)pv_api_op; 1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar e_cmd = (IVD_API_COMMAND_TYPE_T)*(pu4_api_ip + 1); 1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) = 0; 1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* error checks on handle */ 1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar switch((WORD32)e_cmd) 1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_GET_NUM_MEM_REC: 1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_FILL_NUM_MEM_REC: 1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_INIT: 1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_handle == NULL) 1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_HANDLE_NULL; 1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_handle->u4_size != sizeof(iv_obj_t)) 1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_HANDLE_STRUCT_SIZE_INCORRECT; 1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Sizes do not match. Expected: %d, Got: %d", 1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sizeof(iv_obj_t), ps_handle->u4_size); 1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_REL_DISPLAY_FRAME: 1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_SET_DISPLAY_FRAME: 1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_GET_DISPLAY_FRAME: 1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_VIDEO_DECODE: 1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_RETRIEVE_MEMREC: 1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_VIDEO_CTL: 1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_handle == NULL) 1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_HANDLE_NULL; 1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_handle->u4_size != sizeof(iv_obj_t)) 1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_HANDLE_STRUCT_SIZE_INCORRECT; 1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_handle->pv_codec_handle == NULL) 1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_INVALID_HANDLE_NULL; 1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar default: 2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_INVALID_API_CMD; 2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar switch((WORD32)e_cmd) 2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_GET_NUM_MEM_REC: 2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_num_mem_rec_ip_t *ps_ip = 2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_num_mem_rec_ip_t *)pv_api_ip; 2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_num_mem_rec_op_t *ps_op = 2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_num_mem_rec_op_t *)pv_api_op; 2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_num_mem_rec_op_t.u4_error_code = 0; 2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_num_mem_rec_ip_t.u4_size 2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_num_mem_rec_ip_t)) 2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_num_mem_rec_op_t.u4_error_code |= 1 2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_num_mem_rec_op_t.u4_error_code |= 2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_num_mem_rec_op_t.u4_size 2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_num_mem_rec_op_t)) 2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_num_mem_rec_op_t.u4_error_code |= 1 2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_num_mem_rec_op_t.u4_error_code |= 2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_FILL_NUM_MEM_REC: 2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_fill_mem_rec_ip_t *ps_ip = 2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_fill_mem_rec_ip_t *)pv_api_ip; 2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_fill_mem_rec_op_t *ps_op = 2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_fill_mem_rec_op_t *)pv_api_op; 2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec; 2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_wd = ps_ip->s_ivd_fill_mem_rec_ip_t.u4_max_frm_wd; 2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_ht = ps_ip->s_ivd_fill_mem_rec_ip_t.u4_max_frm_ht; 2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_wd = ALIGN64(max_wd); 2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ht = ALIGN64(max_ht); 2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code = 0; 2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->s_ivd_fill_mem_rec_ip_t.u4_size 2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > sizeof(ihevcd_cxa_fill_mem_rec_ip_t)) 2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_ip->s_ivd_fill_mem_rec_ip_t.u4_size 2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar < sizeof(iv_fill_mem_rec_ip_t))) 2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_op->s_ivd_fill_mem_rec_op_t.u4_size 2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_fill_mem_rec_op_t)) 2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_op->s_ivd_fill_mem_rec_op_t.u4_size 2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(iv_fill_mem_rec_op_t))) 2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(max_wd < MIN_WD) 2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 2810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_REQUESTED_WIDTH_NOT_SUPPPORTED; 2820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 2830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(max_wd > MAX_WD) 2860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 2880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 2900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_REQUESTED_WIDTH_NOT_SUPPPORTED; 2910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 2920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 2930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(max_ht < MIN_HT) 2950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 2970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 2980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 2990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED; 3000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((max_ht * max_wd) > (MAX_HT * MAX_WD)) 3040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 3070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 3090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED; 3100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(NULL == ps_ip->s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location) 3140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 3160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 3180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_NUM_REC_NOT_SUFFICIENT; 3190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* check memrecords sizes are correct */ 3230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = ps_ip->s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location; 3240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MEM_REC_CNT; i++) 3250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].u4_size != sizeof(iv_mem_rec_t)) 3270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 1 3290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 3310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_MEM_REC_STRUCT_SIZE_INCORRECT; 3320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 3330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 3370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_INIT: 3390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_init_ip_t *ps_ip = (ihevcd_cxa_init_ip_t *)pv_api_ip; 3410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_init_op_t *ps_op = (ihevcd_cxa_init_op_t *)pv_api_op; 3420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec; 3430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_wd = ps_ip->s_ivd_init_ip_t.u4_frm_max_wd; 3440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_ht = ps_ip->s_ivd_init_ip_t.u4_frm_max_ht; 3450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_wd = ALIGN64(max_wd); 3470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ht = ALIGN64(max_ht); 3480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code = 0; 3500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->s_ivd_init_ip_t.u4_size > sizeof(ihevcd_cxa_init_ip_t)) 3520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_ip->s_ivd_init_ip_t.u4_size 3530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar < sizeof(ivd_init_ip_t))) 3540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 3560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 3580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 3590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 3600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_op->s_ivd_init_op_t.u4_size != sizeof(ihevcd_cxa_init_op_t)) 3640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_op->s_ivd_init_op_t.u4_size 3650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_init_op_t))) 3660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 3680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 3700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 3710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 3720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_num_mem_rec != MEM_REC_CNT) 3760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 3780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 3800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_NOT_SUFFICIENT; 3810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 3820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(max_wd < MIN_WD) 3860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 3880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 3900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED; 3910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 3920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 3930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(max_wd > MAX_WD) 3960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 3980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 3990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED; 4010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 4020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 4030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(max_ht < MIN_HT) 4060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED; 4110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 4120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 4130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((max_ht * max_wd) > (MAX_HT * MAX_WD)) 4160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED; 4220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 4230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 4240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(NULL == ps_ip->s_ivd_init_ip_t.pv_mem_rec_location) 4270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_NUM_REC_NOT_SUFFICIENT; 4320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 4330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 4340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->s_ivd_init_ip_t.e_output_format != IV_YUV_420P) 4370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_init_ip_t.e_output_format 4380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_YUV_422ILE) 4390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_init_ip_t.e_output_format 4400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_RGB_565) 4410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_init_ip_t.e_output_format 4420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_RGBA_8888) 4430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_init_ip_t.e_output_format 4440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_YUV_420SP_UV) 4450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_init_ip_t.e_output_format 4460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_YUV_420SP_VU)) 4470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED; 4520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 4530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 4540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* verify number of mem records */ 4570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_num_mem_rec < MEM_REC_CNT) 4580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT; 4630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\n"); 4640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 4650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = ps_ip->s_ivd_init_ip_t.pv_mem_rec_location; 4680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* check memrecords sizes are correct */ 4690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < (WORD32)ps_ip->s_ivd_init_ip_t.u4_num_mem_rec; i++) 4700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].u4_size != sizeof(iv_mem_rec_t)) 4720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_MEM_REC_STRUCT_SIZE_INCORRECT; 4770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d\n", i); 4780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 4790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* check memrecords pointers are not NULL */ 4810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].pv_base == NULL) 4830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 4860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 4870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 4880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_BASE_NULL; 4890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d\n", i); 4900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 4910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 4950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* verify memtabs for overlapping regions */ 4970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 4980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *start[MEM_REC_CNT]; 4990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *end[MEM_REC_CNT]; 5000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar start[0] = (ps_mem_rec[0].pv_base); 5020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar end[0] = (UWORD8 *)(ps_mem_rec[0].pv_base) 5030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar + ps_mem_rec[0].u4_mem_size - 1; 5040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 1; i < MEM_REC_CNT; i++) 5050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* This array is populated to check memtab overlapp */ 5070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar start[i] = (ps_mem_rec[i].pv_base); 5080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar end[i] = (UWORD8 *)(ps_mem_rec[i].pv_base) 5090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar + ps_mem_rec[i].u4_mem_size - 1; 5100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < i; j++) 5120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((start[i] >= start[j]) && (start[i] <= end[j])) 5140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 5160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 5170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 5180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_OVERLAP_ERR; 5190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d, j: %d\n", i, j); 5200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 5210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((end[i] >= start[j]) && (end[i] <= end[j])) 5240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 5260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 5270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 5280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_OVERLAP_ERR; 5290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d, j: %d\n", i, j); 5300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 5310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((start[i] < start[j]) && (end[i] > end[j])) 5340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 5360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 5370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 5380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_OVERLAP_ERR; 5390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d, j: %d\n", i, j); 5400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 5410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t mem_rec_ittiam_api[MEM_REC_CNT]; 5490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_fill_mem_rec_ip_t s_fill_mem_rec_ip; 5500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_fill_mem_rec_op_t s_fill_mem_rec_op; 5510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T e_status; 5520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 5540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.e_cmd = 5550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_CMD_FILL_NUM_MEM_REC; 5560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location = 5570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mem_rec_ittiam_api; 5580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.u4_max_frm_wd = 5590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_wd; 5600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.u4_max_frm_ht = 5610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ht; 5620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_size 5640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, i4_level)) 5650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.i4_level = ps_ip->i4_level; 5670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 5690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.i4_level = IHEVC_LEVEL_31; 5710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_size 5740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, 5750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_num_ref_frames)) 5760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_num_ref_frames = 5780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->u4_num_ref_frames; 5790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 5810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_num_ref_frames = (MAX_REF_CNT + 1); 5830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_size 5860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, 5870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_num_reorder_frames)) 5880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_num_reorder_frames = 5900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->u4_num_reorder_frames; 5910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 5930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 5940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_num_reorder_frames = (MAX_REF_CNT + 1); 5950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 5960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 5970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_size 5980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, 5990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_num_extra_disp_buf)) 6000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_num_extra_disp_buf = 6020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->u4_num_extra_disp_buf; 6030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 6050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_num_extra_disp_buf = 0; 6070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_init_ip_t.u4_size 6100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, 6110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_share_disp_buf)) 6120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifndef LOGO_EN 6140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_share_disp_buf = 6150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->u4_share_disp_buf; 6160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#else 6170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_share_disp_buf = 0; 6180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif 6190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 6210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_share_disp_buf = 0; 6230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.e_output_format = 6260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->s_ivd_init_ip_t.e_output_format; 6270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((s_fill_mem_rec_ip.e_output_format != IV_YUV_420P) 6290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (s_fill_mem_rec_ip.e_output_format 6300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_YUV_420SP_UV) 6310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (s_fill_mem_rec_ip.e_output_format 6320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != IV_YUV_420SP_VU)) 6330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.u4_share_disp_buf = 0; 6350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.u4_size = 6380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sizeof(ihevcd_cxa_fill_mem_rec_ip_t); 6390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_op.s_ivd_fill_mem_rec_op_t.u4_size = 6400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sizeof(ihevcd_cxa_fill_mem_rec_op_t); 6410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MEM_REC_CNT; i++) 6430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mem_rec_ittiam_api[i].u4_size = sizeof(iv_mem_rec_t); 6440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar e_status = ihevcd_cxa_api_function(NULL, 6460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)&s_fill_mem_rec_ip, 6470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)&s_fill_mem_rec_op); 6480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(IV_FAIL == e_status) 6490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code = 6510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_fill_mem_rec_op.s_ivd_fill_mem_rec_op_t.u4_error_code; 6520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Fail\n"); 6530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 6540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MEM_REC_CNT; i++) 6570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef ARMRVDS 6590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((UWORD32)(ps_mem_rec[i].pv_base) & (mem_rec_ittiam_api[i].u4_mem_alignment - 1)) 6600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 6620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR; 6630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Fail\n"); 6640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 6650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif 6670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].u4_mem_size 6690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar < mem_rec_ittiam_api[i].u4_mem_size) 6700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 6720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 6730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 6740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE; 6750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d \n", i); 6760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 6770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].u4_mem_alignment 6790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != mem_rec_ittiam_api[i].u4_mem_alignment) 6800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 6820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 6830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 6840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR; 6850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d \n", i); 6860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 6870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 6880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].e_mem_type 6890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != mem_rec_ittiam_api[i].e_mem_type) 6900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 6910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 check = IV_SUCCESS; 6920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 diff = mem_rec_ittiam_api[i].e_mem_type 6930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar - ps_mem_rec[i].e_mem_type; 6940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 6950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_mem_rec[i].e_mem_type 6960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar <= IV_EXTERNAL_CACHEABLE_SCRATCH_MEM) 6970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (mem_rec_ittiam_api[i].e_mem_type 6980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >= IV_INTERNAL_NONCACHEABLE_PERSISTENT_MEM)) 6990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar check = IV_FAIL; 7010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(3 != (mem_rec_ittiam_api[i].e_mem_type % 4)) 7030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 7050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * It is not IV_EXTERNAL_NONCACHEABLE_PERSISTENT_MEM or IV_EXTERNAL_CACHEABLE_PERSISTENT_MEM 7060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 7070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((diff < 1) || (diff > 3)) 7080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // Difference between 1 and 3 is okay for all cases other than the two filtered 7100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // with the MOD condition above 7110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar check = IV_FAIL; 7120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 7150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(diff == 1) 7170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 7190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This particular case is when codec asked for External Persistent, but got 7200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Internal Scratch. 7210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 7220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar check = IV_FAIL; 7230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((diff != 2) && (diff != 3)) 7250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar check = IV_FAIL; 7270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(check == IV_FAIL) 7300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 1 7320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 7330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_init_op_t.u4_error_code |= 7340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE; 7350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("i: %d \n", i); 7360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 7370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 7440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_GET_DISPLAY_FRAME: 7460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_get_display_frame_ip_t *ps_ip = 7480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_get_display_frame_ip_t *)pv_api_ip; 7490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_get_display_frame_op_t *ps_op = 7500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_get_display_frame_op_t *)pv_api_op; 7510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_get_display_frame_op_t.u4_error_code = 0; 7530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->s_ivd_get_display_frame_ip_t.u4_size 7550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_get_display_frame_ip_t)) 7560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_get_display_frame_ip_t.u4_size 7570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_get_display_frame_ip_t))) 7580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_get_display_frame_op_t.u4_error_code |= 1 7600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 7610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_get_display_frame_op_t.u4_error_code |= 7620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 7630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 7640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_op->s_ivd_get_display_frame_op_t.u4_size 7670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_get_display_frame_op_t)) 7680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_op->s_ivd_get_display_frame_op_t.u4_size 7690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_get_display_frame_op_t))) 7700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_get_display_frame_op_t.u4_error_code |= 1 7720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 7730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_get_display_frame_op_t.u4_error_code |= 7740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 7750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 7760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 7790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 7800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_REL_DISPLAY_FRAME: 7820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_rel_display_frame_ip_t *ps_ip = 7840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_rel_display_frame_ip_t *)pv_api_ip; 7850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_rel_display_frame_op_t *ps_op = 7860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_rel_display_frame_op_t *)pv_api_op; 7870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_rel_display_frame_op_t.u4_error_code = 0; 7890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 7900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->s_ivd_rel_display_frame_ip_t.u4_size 7910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_rel_display_frame_ip_t)) 7920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_rel_display_frame_ip_t.u4_size 7930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_rel_display_frame_ip_t))) 7940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 7950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_rel_display_frame_op_t.u4_error_code |= 1 7960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 7970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_rel_display_frame_op_t.u4_error_code |= 7980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 7990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 8000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_op->s_ivd_rel_display_frame_op_t.u4_size 8030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_rel_display_frame_op_t)) 8040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_op->s_ivd_rel_display_frame_op_t.u4_size 8050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_rel_display_frame_op_t))) 8060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_rel_display_frame_op_t.u4_error_code |= 1 8080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_rel_display_frame_op_t.u4_error_code |= 8100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 8110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 8120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 8160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_SET_DISPLAY_FRAME: 8180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_set_display_frame_ip_t *ps_ip = 8200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_set_display_frame_ip_t *)pv_api_ip; 8210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_set_display_frame_op_t *ps_op = 8220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_set_display_frame_op_t *)pv_api_op; 8230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 j; 8240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code = 0; 8260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->s_ivd_set_display_frame_ip_t.u4_size 8280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_set_display_frame_ip_t)) 8290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_ip->s_ivd_set_display_frame_ip_t.u4_size 8300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_set_display_frame_ip_t))) 8310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 1 8330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 8350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 8360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 8370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_op->s_ivd_set_display_frame_op_t.u4_size 8400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_set_display_frame_op_t)) 8410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && (ps_op->s_ivd_set_display_frame_op_t.u4_size 8420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ivd_set_display_frame_op_t))) 8430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 1 8450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 8470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 8480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 8490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_set_display_frame_ip_t.num_disp_bufs == 0) 8520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 1 8540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 8560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_DISP_FRM_ZERO_OP_BUFS; 8570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 8580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(j = 0; j < ps_ip->s_ivd_set_display_frame_ip_t.num_disp_bufs; 8610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar j++) 8620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_set_display_frame_ip_t.s_disp_buffer[j].u4_num_bufs 8640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar == 0) 8650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 1 8670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 8690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_DISP_FRM_ZERO_OP_BUFS; 8700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 8710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; 8740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i 8750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar < (WORD32)ps_ip->s_ivd_set_display_frame_ip_t.s_disp_buffer[j].u4_num_bufs; 8760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar i++) 8770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_set_display_frame_ip_t.s_disp_buffer[j].pu1_bufs[i] 8790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar == NULL) 8800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 1 8820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 8840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_DISP_FRM_OP_BUF_NULL; 8850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 8860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 8880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_set_display_frame_ip_t.s_disp_buffer[j].u4_min_out_buf_size[i] 8890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar == 0) 8900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 8910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 1 8920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 8930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_set_display_frame_op_t.u4_error_code |= 8940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_DISP_FRM_ZERO_OP_BUF_SIZE; 8950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 8960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 8990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 9010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_VIDEO_DECODE: 9030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_video_decode_ip_t *ps_ip = 9050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_video_decode_ip_t *)pv_api_ip; 9060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_video_decode_op_t *ps_op = 9070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_video_decode_op_t *)pv_api_op; 9080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("The input bytes is: %d", 9100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->s_ivd_video_decode_ip_t.u4_num_Bytes); 9110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_video_decode_op_t.u4_error_code = 0; 9120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_video_decode_ip_t.u4_size 9140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_video_decode_ip_t) 9150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && ps_ip->s_ivd_video_decode_ip_t.u4_size 9160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != offsetof(ivd_video_decode_ip_t, 9170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_out_buffer)) 9180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_video_decode_op_t.u4_error_code |= 1 9200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 9210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_video_decode_op_t.u4_error_code |= 9220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 9230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 9240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_video_decode_op_t.u4_size 9270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_video_decode_op_t) 9280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar && ps_op->s_ivd_video_decode_op_t.u4_size 9290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != offsetof(ivd_video_decode_op_t, 9300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_output_present)) 9310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_video_decode_op_t.u4_error_code |= 1 9330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 9340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_video_decode_op_t.u4_error_code |= 9350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 9360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 9370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 9410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_RETRIEVE_MEMREC: 9430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_retrieve_mem_rec_ip_t *ps_ip = 9450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_retrieve_mem_rec_ip_t *)pv_api_ip; 9460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_retrieve_mem_rec_op_t *ps_op = 9470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_retrieve_mem_rec_op_t *)pv_api_op; 9480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec; 9490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code = 0; 9510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_retrieve_mem_rec_ip_t.u4_size 9530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_retrieve_mem_rec_ip_t)) 9540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code |= 1 9560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 9570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code |= 9580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 9590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 9600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_retrieve_mem_rec_op_t.u4_size 9630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_retrieve_mem_rec_op_t)) 9640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code |= 1 9660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 9670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code |= 9680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 9690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 9700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = ps_ip->s_ivd_retrieve_mem_rec_ip_t.pv_mem_rec_location; 9730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* check memrecords sizes are correct */ 9740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MEM_REC_CNT; i++) 9750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_rec[i].u4_size != sizeof(iv_mem_rec_t)) 9770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code |= 1 9790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 9800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_retrieve_mem_rec_op_t.u4_error_code |= 9810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_MEM_REC_STRUCT_SIZE_INCORRECT; 9820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 9830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 9860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 9870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_VIDEO_CTL: 9890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 *pu4_ptr_cmd; 9910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 sub_command; 9920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_ptr_cmd = (UWORD32 *)pv_api_ip; 9940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_ptr_cmd += 2; 9950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub_command = *pu4_ptr_cmd; 9960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 9970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar switch(sub_command) 9980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 9990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_SETPARAMS: 10000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_config_ip_t *ps_ip; 10020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_config_op_t *ps_op; 10030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_set_config_ip_t *)pv_api_ip; 10040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_set_config_op_t *)pv_api_op; 10050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_ctl_set_config_ip_t.u4_size 10070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_set_config_ip_t)) 10080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_set_config_op_t.u4_error_code |= 1 10100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 10110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_set_config_op_t.u4_error_code |= 10120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 10130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 10140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar //no break; is needed here 10170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_SETDEFAULT: 10180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_config_op_t *ps_op; 10200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_set_config_op_t *)pv_api_op; 10210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_ctl_set_config_op_t.u4_size 10220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_set_config_op_t)) 10230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_set_config_op_t.u4_error_code |= 1 10250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 10260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_set_config_op_t.u4_error_code |= 10270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 10280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 10290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 10320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_GETPARAMS: 10340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_getstatus_ip_t *ps_ip; 10360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_getstatus_op_t *ps_op; 10370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_getstatus_ip_t *)pv_api_ip; 10390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_getstatus_op_t *)pv_api_op; 10400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_ctl_getstatus_ip_t.u4_size 10410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_getstatus_ip_t)) 10420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getstatus_op_t.u4_error_code |= 1 10440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 10450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getstatus_op_t.u4_error_code |= 10460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 10470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 10480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 1049707042fda96ebede81408b854385173483798bcdHarish Mahendrakar if((ps_op->s_ivd_ctl_getstatus_op_t.u4_size 1050707042fda96ebede81408b854385173483798bcdHarish Mahendrakar != sizeof(ihevcd_cxa_ctl_getstatus_op_t)) && 1051707042fda96ebede81408b854385173483798bcdHarish Mahendrakar (ps_op->s_ivd_ctl_getstatus_op_t.u4_size 1052707042fda96ebede81408b854385173483798bcdHarish Mahendrakar != sizeof(ivd_ctl_getstatus_op_t))) 10530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getstatus_op_t.u4_error_code |= 1 10550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 10560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getstatus_op_t.u4_error_code |= 10570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 10580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 10590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 10620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_GETBUFINFO: 10640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_getbufinfo_ip_t *ps_ip; 10660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_getbufinfo_op_t *ps_op; 10670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_getbufinfo_ip_t *)pv_api_ip; 10680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_getbufinfo_op_t *)pv_api_op; 10690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_ctl_getbufinfo_ip_t.u4_size 10710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_getbufinfo_ip_t)) 10720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getbufinfo_op_t.u4_error_code |= 1 10740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 10750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getbufinfo_op_t.u4_error_code |= 10760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 10770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 10780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_ctl_getbufinfo_op_t.u4_size 10800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_getbufinfo_op_t)) 10810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getbufinfo_op_t.u4_error_code |= 1 10830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 10840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getbufinfo_op_t.u4_error_code |= 10850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 10860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 10870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 10890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 10900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 10910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_GETVERSION: 10920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 10930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_getversioninfo_ip_t *ps_ip; 10940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_getversioninfo_op_t *ps_op; 10950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_getversioninfo_ip_t *)pv_api_ip; 10960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_getversioninfo_op_t *)pv_api_op; 10970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_ctl_getversioninfo_ip_t.u4_size 10980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_getversioninfo_ip_t)) 10990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getversioninfo_op_t.u4_error_code |= 1 11010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 11020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getversioninfo_op_t.u4_error_code |= 11030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 11040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_ctl_getversioninfo_op_t.u4_size 11070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_getversioninfo_op_t)) 11080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getversioninfo_op_t.u4_error_code |= 1 11100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 11110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_getversioninfo_op_t.u4_error_code |= 11120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 11130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 11170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_FLUSH: 11190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_flush_ip_t *ps_ip; 11210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_flush_op_t *ps_op; 11220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_flush_ip_t *)pv_api_ip; 11230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_flush_op_t *)pv_api_op; 11240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_ctl_flush_ip_t.u4_size 11250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_flush_ip_t)) 11260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_flush_op_t.u4_error_code |= 1 11280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 11290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_flush_op_t.u4_error_code |= 11300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 11310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_ctl_flush_op_t.u4_size 11340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_flush_op_t)) 11350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_flush_op_t.u4_error_code |= 1 11370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 11380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_flush_op_t.u4_error_code |= 11390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 11400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 11440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_RESET: 11460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_reset_ip_t *ps_ip; 11480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_reset_op_t *ps_op; 11490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_reset_ip_t *)pv_api_ip; 11500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_reset_op_t *)pv_api_op; 11510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->s_ivd_ctl_reset_ip_t.u4_size 11520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_reset_ip_t)) 11530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_reset_op_t.u4_error_code |= 1 11550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 11560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_reset_op_t.u4_error_code |= 11570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 11580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->s_ivd_ctl_reset_op_t.u4_size 11610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_reset_op_t)) 11620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_reset_op_t.u4_error_code |= 1 11640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar << IVD_UNSUPPORTEDPARAM; 11650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->s_ivd_ctl_reset_op_t.u4_error_code |= 11660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 11670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 11710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_DEGRADE: 11720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_degrade_ip_t *ps_ip; 11740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_degrade_op_t *ps_op; 11750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_degrade_ip_t *)pv_api_ip; 11770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_degrade_op_t *)pv_api_op; 11780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->u4_size 11800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_degrade_ip_t)) 11810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 11830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 11840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 11850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->u4_size 11890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_degrade_op_t)) 11900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 11910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 11920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 11930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 11940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 11950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 11960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 11970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->i4_degrade_pics < 0) || 11980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ps_ip->i4_degrade_pics > 4) || 11990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ps_ip->i4_nondegrade_interval < 0) || 12000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ps_ip->i4_degrade_type < 0) || 12010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ps_ip->i4_degrade_type > 15)) 12020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 12080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS: 12110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_frame_dimensions_ip_t *ps_ip; 12130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_frame_dimensions_op_t *ps_op; 12140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = 12160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_ctl_get_frame_dimensions_ip_t *)pv_api_ip; 12170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = 12180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_ctl_get_frame_dimensions_op_t *)pv_api_op; 12190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->u4_size 12210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_get_frame_dimensions_ip_t)) 12220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 12250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 12260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->u4_size 12300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_get_frame_dimensions_op_t)) 12310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 12340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 12350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 12390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS: 12420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_vui_params_ip_t *ps_ip; 12440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_vui_params_op_t *ps_op; 12450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = 12470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_ctl_get_vui_params_ip_t *)pv_api_ip; 12480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = 12490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ihevcd_cxa_ctl_get_vui_params_op_t *)pv_api_op; 12500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->u4_size 12520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_get_vui_params_ip_t)) 12530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 12560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 12570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->u4_size 12610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_get_vui_params_op_t)) 12620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 12650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 12660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 12700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_SET_NUM_CORES: 12720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_num_cores_ip_t *ps_ip; 12740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_num_cores_op_t *ps_op; 12750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_set_num_cores_ip_t *)pv_api_ip; 12770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_set_num_cores_op_t *)pv_api_op; 12780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->u4_size 12800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_set_num_cores_ip_t)) 12810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 12840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 12850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->u4_size 12890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_set_num_cores_op_t)) 12900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 12910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 12920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 12930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 12940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 12950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 12960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 12970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef MULTICORE 12980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_ip->u4_num_cores < 1) || (ps_ip->u4_num_cores > MAX_NUM_CORES)) 12990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#else 13000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->u4_num_cores != 1) 13010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif 13020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 13030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 13040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 13050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 13070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_SET_PROCESSOR: 13090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 13100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_processor_ip_t *ps_ip; 13110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_processor_op_t *ps_op; 13120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_set_processor_ip_t *)pv_api_ip; 13140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_set_processor_op_t *)pv_api_op; 13150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_ip->u4_size 13170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_set_processor_ip_t)) 13180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 13190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 13200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 13210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_IP_API_STRUCT_SIZE_INCORRECT; 13220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 13230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_op->u4_size 13260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar != sizeof(ihevcd_cxa_ctl_set_processor_op_t)) 13270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 13280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM; 13290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code |= 13300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IVD_OP_API_STRUCT_SIZE_INCORRECT; 13310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 13320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 13350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar default: 13370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 13380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_UNSUPPORTED_API_CMD; 13390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 13400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 13430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar default: 13440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM; 13450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar *(pu4_api_op + 1) |= IVD_UNSUPPORTED_API_CMD; 13460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 13470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 13480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 13500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 13510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 13540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 13550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 13570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets default dynamic parameters 13580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 13600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets default dynamic parameters. Will be called in ihevcd_init() to ensure 13610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* that even if set_params is not called, codec continues to work 13620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 13640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 13650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 13670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 13680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 13700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 13710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 13730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 13750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 13770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 13780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 13790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_default_params(codec_t *ps_codec) 13800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 13810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ret = IV_SUCCESS; 13830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_pic_skip_mode = IVD_SKIP_NONE; 13850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_strd = 0; 13860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_disp_strd = 0; 13870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_header_mode = 0; 13880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_pic_out_order = IVD_DISPLAY_FRAME_OUT; 13890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return ret; 13900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 13910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevcd_update_function_ptr(codec_t *ps_codec) 13930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 13940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 13950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Init inter pred function array */ 13960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[0] = NULL; 13970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[1] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_copy_fptr; 13980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[2] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_fptr; 13990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[3] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_fptr; 14000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[4] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr; 14010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[5] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_copy_w16out_fptr; 14020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[6] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16out_fptr; 14030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[7] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr; 14040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[8] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr; 14050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[9] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_fptr; 14060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[10] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_w16out_fptr; 14070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[11] = NULL; 14080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[12] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_copy_fptr; 14090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[13] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_fptr; 14100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[14] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_fptr; 14110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[15] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr; 14120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[16] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_copy_w16out_fptr; 14130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[17] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16out_fptr; 14140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[18] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr; 14150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[19] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr; 14160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[20] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_fptr; 14170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_inter_pred[21] = (pf_inter_pred)ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_w16out_fptr; 14180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Init intra pred function array */ 14200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[0] = (pf_intra_pred)NULL; 14210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[1] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_planar_fptr; 14220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[2] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_dc_fptr; 14230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[3] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode2_fptr; 14240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[4] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_3_to_9_fptr; 14250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[5] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_horz_fptr; 14260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[6] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_11_to_17_fptr; 14270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[7] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_18_34_fptr; 14280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[8] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_19_to_25_fptr; 14290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[9] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_ver_fptr; 14300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_luma[10] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_27_to_33_fptr; 14310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[0] = (pf_intra_pred)NULL; 14330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[1] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_planar_fptr; 14340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[2] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_dc_fptr; 14350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[3] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode2_fptr; 14360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[4] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_3_to_9_fptr; 14370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[5] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_horz_fptr; 14380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[6] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_11_to_17_fptr; 14390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[7] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_18_34_fptr; 14400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[8] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_19_to_25_fptr; 14410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[9] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_ver_fptr; 14420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_intra_pred_chroma[10] = (pf_intra_pred)ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_27_to_33_fptr; 14430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Init itrans_recon function array */ 14450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[0] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_4x4_ttype1_fptr; 14460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[1] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_4x4_fptr; 14470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[2] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_8x8_fptr; 14480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[3] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_16x16_fptr; 14490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[4] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_itrans_recon_32x32_fptr; 14500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[5] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_chroma_itrans_recon_4x4_fptr; 14510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[6] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_chroma_itrans_recon_8x8_fptr; 14520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon[7] = (pf_itrans_recon)ps_codec->s_func_selector.ihevc_chroma_itrans_recon_16x16_fptr; 14530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Init recon function array */ 14550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[0] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_4x4_ttype1_fptr; 14560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[1] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_4x4_fptr; 14570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[2] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_8x8_fptr; 14580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[3] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_16x16_fptr; 14590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[4] = (pf_recon)ps_codec->s_func_selector.ihevc_recon_32x32_fptr; 14600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[5] = (pf_recon)ps_codec->s_func_selector.ihevc_chroma_recon_4x4_fptr; 14610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[6] = (pf_recon)ps_codec->s_func_selector.ihevc_chroma_recon_8x8_fptr; 14620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_recon[7] = (pf_recon)ps_codec->s_func_selector.ihevc_chroma_recon_16x16_fptr; 14630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Init itrans_recon_dc function array */ 14650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon_dc[0] = (pf_itrans_recon_dc)ps_codec->s_func_selector.ihevcd_itrans_recon_dc_luma_fptr; 14660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_itrans_recon_dc[1] = (pf_itrans_recon_dc)ps_codec->s_func_selector.ihevcd_itrans_recon_dc_chroma_fptr; 14670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Init sao function array */ 14690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_luma[0] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class0_fptr; 14700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_luma[1] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class1_fptr; 14710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_luma[2] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class2_fptr; 14720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_luma[3] = (pf_sao_luma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class3_fptr; 14730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 14740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_chroma[0] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class0_chroma_fptr; 14750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_chroma[1] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class1_chroma_fptr; 14760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_chroma[2] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class2_chroma_fptr; 14770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apf_sao_chroma[3] = (pf_sao_chroma)ps_codec->s_func_selector.ihevc_sao_edge_offset_class3_chroma_fptr; 14780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 14790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 14800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 14810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 14830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Initialize the context. This will be called by init_mem_rec and during 14840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* reset 14850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 14870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Initializes the context 14880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec 14900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Codec context pointer 14910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 14930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 14950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 14970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 14980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 14990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_init(codec_t *ps_codec) 15000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 15010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 status = IV_SUCCESS; 15020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 15030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_disp_bufs = 1; 15060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_flush_mode = 0; 15070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_ht = ps_codec->i4_disp_ht = ps_codec->i4_max_ht; 15090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_wd = ps_codec->i4_disp_wd = ps_codec->i4_max_wd; 15100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_strd = 0; 15110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_disp_strd = 0; 15120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_cores = 1; 15130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_pic_cnt = 0; 15150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_disp_cnt = 0; 15160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_header_mode = 0; 15180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_header_in_slice_mode = 0; 15190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_sps_done = 0; 15200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_pps_done = 0; 15210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_done = 1; 15220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_first_pic_done = 0; 15230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.i4_first_pic_init = 0; 15240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_error_code = 0; 15250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_reset_flag = 0; 1526221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_cra_as_first_pic = 1; 1527221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_rasl_output_flag = 0; 15280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_prev_poc_msb = 0; 15300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_prev_poc_lsb = -1; 15310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_max_prev_poc_lsb = -1; 15320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.i4_abs_pic_order_cnt = -1; 15330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Set ref chroma format by default to 420SP UV interleaved */ 15350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_ref_chroma_fmt = IV_YUV_420SP_UV; 15360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* If the codec is in shared mode and required format is 420 SP VU interleaved then change 15380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * reference buffers chroma format 15390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 15400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(IV_YUV_420SP_VU == ps_codec->e_chroma_fmt) 15410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 15420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_ref_chroma_fmt = IV_YUV_420SP_VU; 15430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 15440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_disable_deblk_pic = 0; 15480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_degrade_pic_cnt = 0; 15500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_degrade_pics = 0; 15510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_degrade_type = 0; 15520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_disable_sao_pic = 0; 15530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_fullpel_inter_pred = 0; 15540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_enable_fmt_conv_ahead = 0; 1555221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_share_disp_buf_cnt = 0; 15560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 15580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sps_t *ps_sps = ps_codec->ps_sps_base; 15590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pps_t *ps_pps = ps_codec->ps_pps_base; 15600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_SPS_CNT; i++) 15620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 15630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps->i1_sps_valid = 0; 15640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps++; 15650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 15660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PPS_CNT; i++) 15680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 15690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pps->i1_pps_valid = 0; 15700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pps++; 15710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 15720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 15730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_set_default_params(ps_codec); 15750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_proc_jobq = ihevcd_jobq_init(ps_codec->pv_proc_jobq_buf, ps_codec->i4_proc_jobq_buf_size); 15760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar RETURN_IF((ps_codec->pv_proc_jobq == NULL), IV_FAIL); 15770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Update the jobq context to all the threads */ 15790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pv_proc_jobq = ps_codec->pv_proc_jobq; 15800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 15810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 15820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pv_proc_jobq = ps_codec->pv_proc_jobq; 15830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].i4_id = i; 15840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].ps_codec = ps_codec; 15850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Set the following to zero assuming it is a single core solution 15870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * When threads are launched these will be set appropriately 15880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 15890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].i4_check_parse_status = 0; 15900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].i4_check_proc_status = 0; 15910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 15920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Initialize MV Bank buffer manager */ 15930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevc_buf_mgr_init((buf_mgr_t *)ps_codec->pv_mv_buf_mgr); 15940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Initialize Picture buffer manager */ 15960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevc_buf_mgr_init((buf_mgr_t *)ps_codec->pv_pic_buf_mgr); 15970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 15980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_pic_buf = (pic_buf_t *)ps_codec->pv_pic_buf_base; 15990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(ps_codec->ps_pic_buf, 0, BUF_MGR_MAX_CNT * sizeof(pic_buf_t)); 16010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Initialize display buffer manager */ 16050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevc_disp_mgr_init((disp_mgr_t *)ps_codec->pv_disp_buf_mgr); 16060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Initialize dpb manager */ 16080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevc_dpb_mgr_init((dpb_mgr_t *)ps_codec->pv_dpb_mgr); 16090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_processor_soc = SOC_GENERIC; 16110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* The following can be over-ridden using soc parameter as a hack */ 16120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_nctb = 0x7FFFFFFF; 16130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_init_arch(ps_codec); 16140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_init_function_ptr(ps_codec); 16160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_update_function_ptr(ps_codec); 16180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return status; 16200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 16210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 16230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 16240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 16260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets number of memory records required by the codec 16270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 16290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets codec mem record requirements and adds concealment modules 16300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* requirements 16310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 16330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 16340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 16360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 16370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 16390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 16410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 16440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 16450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_get_num_rec(void *pv_api_ip, void *pv_api_op) 16460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 16470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_num_mem_rec_op_t *ps_mem_q_op; 16490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pv_api_ip); 16510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op = (iv_num_mem_rec_op_t *)pv_api_op; 16520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->u4_num_mem_rec = MEM_REC_CNT; 16530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Get num mem records without concealment %d\n", 16540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->u4_num_mem_rec); 16550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef APPLY_CONCEALMENT 16560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 16570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T status; 16580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_num_mem_rec_ip_t cncl_mem_ip; 16590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_num_mem_rec_op_t cncl_mem_op; 16600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_mem_ip.s_ivd_num_rec_ip_t.e_cmd = IV_CMD_GET_NUM_MEM_REC; 16620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_mem_ip.s_ivd_num_rec_ip_t.u4_size = sizeof(icncl_num_mem_rec_ip_t); 16630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = icncl_api_function(NULL, (void *)&cncl_mem_ip, (void *)&cncl_mem_op); 16650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(status == IV_SUCCESS) 16670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 16680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Add the concealment library's memory requirements */ 16690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->u4_num_mem_rec += cncl_mem_op.s_ivd_num_mem_rec_op_t.u4_num_mem_rec; 16700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Get num mem records %d\n", ps_mem_q_op->u4_num_mem_rec); 16710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return status; /* Nothing else to do, return */ 16720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 16730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 16740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 16750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 16760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Something went wrong with the concealment library call. 16770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 16780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("ERROR: Get num mem records %d\n", ps_mem_q_op->u4_num_mem_rec); 16790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return status; 16800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 16810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 16830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif //APPLY_CONCEALMENT 16840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 16870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 16890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 16900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 16910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 16920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 16940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Fills memory requirements of the codec 16950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 16960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 16970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets codec mem record requirements and adds concealment modules 16980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* requirements 16990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 17000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 17010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 17020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 17030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 17040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 17050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 17060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 17070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 17080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 17090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 17100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 17110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 17120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 17130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_fill_num_mem_rec(void *pv_api_ip, void *pv_api_op) 17140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 17150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_fill_mem_rec_ip_t *ps_mem_q_ip; 17170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_fill_mem_rec_op_t *ps_mem_q_op; 17180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 level; 17190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 num_reorder_frames; 17200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 num_ref_frames; 17210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 num_extra_disp_bufs; 17220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_dpb_size; 17230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec; 17250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec_base; 17260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 no_of_mem_rec_filled; 17270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 chroma_format, share_disp_buf; 17280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_ctb_cnt; 17290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_wd_luma, max_wd_chroma; 17300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_ht_luma, max_ht_chroma; 17310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_tile_cols, max_tile_rows; 17320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_ctb_rows, max_ctb_cols; 17330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_num_cu_cols; 17340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 17350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_num_4x4_cols; 17360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T status = IV_SUCCESS; 17370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar no_of_mem_rec_filled = 0; 17380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar //TODO: Remove as and when the following are used 17400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(num_extra_disp_bufs); 17410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(no_of_mem_rec_filled); 17420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(max_wd_chroma); 17430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(max_ht_chroma); 17440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_ip = (ihevcd_cxa_fill_mem_rec_ip_t *)pv_api_ip; 17460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op = (ihevcd_cxa_fill_mem_rec_op_t *)pv_api_op; 17470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size 17490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_fill_mem_rec_ip_t, i4_level)) 17500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level = ps_mem_q_ip->i4_level; 17520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Spec requires level should be multiplied by 30 17530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * API has values where level is multiplied by 10. This keeps it consistent with H264 17540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Because of the above differences, level is multiplied by 3 here. 17550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 17560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level *= 3; 17570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 17590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level = MAX_LEVEL; 17610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size 17640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_fill_mem_rec_ip_t, 17650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_num_reorder_frames)) 17660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_reorder_frames = ps_mem_q_ip->u4_num_reorder_frames; 17680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 17700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_reorder_frames = MAX_REF_CNT; 17720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size 17750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_fill_mem_rec_ip_t, u4_num_ref_frames)) 17760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_ref_frames = ps_mem_q_ip->u4_num_ref_frames; 17780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 17800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_ref_frames = MAX_REF_CNT; 17820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size 17850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_fill_mem_rec_ip_t, 17860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar u4_num_extra_disp_buf)) 17870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_extra_disp_bufs = ps_mem_q_ip->u4_num_extra_disp_buf; 17890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 17910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_extra_disp_bufs = 0; 17930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 17940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 17950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size 17960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_fill_mem_rec_ip_t, u4_share_disp_buf)) 17970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 17980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifndef LOGO_EN 17990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar share_disp_buf = ps_mem_q_ip->u4_share_disp_buf; 18000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#else 18010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar share_disp_buf = 0; 18020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif 18030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 18050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar share_disp_buf = 0; 18070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size 18100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_fill_mem_rec_ip_t, e_output_format)) 18110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar chroma_format = ps_mem_q_ip->e_output_format; 18130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 18150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar chroma_format = -1; 18170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Shared disp buffer mode is supported only for 420SP formats */ 18200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((chroma_format != IV_YUV_420P) && 18210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (chroma_format != IV_YUV_420SP_UV) && 18220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (chroma_format != IV_YUV_420SP_VU)) 18230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar share_disp_buf = 0; 18250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ht_luma = ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_max_frm_ht; 18300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_wd_luma = ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_max_frm_wd; 18310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ht_luma = ALIGN64(max_ht_luma); 18330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_wd_luma = ALIGN64(max_wd_luma); 18340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_tile_cols = (max_wd_luma + MIN_TILE_WD - 1) / MIN_TILE_WD; 18380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_tile_rows = (max_ht_luma + MIN_TILE_HT - 1) / MIN_TILE_HT; 18390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ctb_rows = max_ht_luma / MIN_CTB_SIZE; 18400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ctb_cols = max_wd_luma / MIN_CTB_SIZE; 18410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_ctb_cnt = max_ctb_rows * max_ctb_cols; 18420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_num_cu_cols = max_wd_luma / MIN_CU_SIZE; 18430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_num_4x4_cols = max_wd_luma / 4; 18440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 18460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * If level is lesser than 31 and the resolution required is higher, 18470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * then make the level at least 31. 18480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 18490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* if (num_mbs > MAX_NUM_MBS_3_0 && level < MAX_LEVEL) 18500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level = MAX_LEVEL; 18520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 18540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((level < MIN_LEVEL) || (level > MAX_LEVEL)) 18550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 18570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IHEVCD_LEVEL_UNSUPPORTED; 18580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level = MAX_LEVEL; 18590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(num_ref_frames > MAX_REF_CNT) 18610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 18630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IHEVCD_NUM_REF_UNSUPPORTED; 18640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_ref_frames = MAX_REF_CNT; 18650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(num_reorder_frames > MAX_REF_CNT) 18680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->s_ivd_fill_mem_rec_op_t.u4_error_code |= 18700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IHEVCD_NUM_REORDER_UNSUPPORTED; 18710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_reorder_frames = MAX_REF_CNT; 18720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_dpb_size = ihevcd_get_dpb_size(level, max_wd_luma * max_ht_luma); 18750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec_base = ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location; 18760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Set all memory reconds as persistent and alignment as 128 18780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * by default 18790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 18800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = ps_mem_rec_base; 18810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MEM_REC_CNT; i++) 18820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 18830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_alignment = 128; 18840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->e_mem_type = IV_EXTERNAL_CACHEABLE_PERSISTENT_MEM; 18850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec++; 18860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 18870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Request memory for HEVCD object */ 18890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_IV_OBJ]; 18900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(iv_obj_t); 18910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_IV_OBJ, 18930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 18940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 18950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Request memory for HEVC Codec context */ 18960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_CODEC]; 18970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(codec_t); 18980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_CODEC, 18990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Request memory for buffer which holds bitstream after emulation prevention */ 19020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_BITSBUF]; 19030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX((max_wd_luma * max_ht_luma), MIN_BITSBUF_SIZE); 19040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_BITSBUF, 19050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Request memory for buffer which holds TU structures and coeff data for 19080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * a set of CTBs in the current picture */ 19090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*TODO Currently the buffer is allocated at a frame level. Reduce this to 19100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * allocate for s set of CTBs and add appropriate synchronization logic to 19110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * ensure that this is data is not overwritten before consumption 19120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 19130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TU_DATA]; 19140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = ihevcd_get_tu_data_size(max_wd_luma * max_ht_luma); 19150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_TU_DATA, 19160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_MVBANK]; 19190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(buf_mgr_t); 19210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Size for holding mv_buf_t for each MV Bank */ 19230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Note this allocation is done for BUF_MGR_MAX_CNT instead of 19240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * max_dpb_size or MAX_DPB_SIZE for following reasons 19250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * max_dpb_size will be based on max_wd and max_ht 19260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * For higher max_wd and max_ht this number will be smaller than MAX_DPB_SIZE 19270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * But during actual initialization number of buffers allocated can be more 19280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 19290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * One extra MV Bank is needed to hold current pics MV bank. 19300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Since this is only a structure allocation and not actual buffer allocation, 1931221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy * it is allocated for (MAX_DPB_SIZE + 1) entries 19320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 1933221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_mem_rec->u4_mem_size += (MAX_DPB_SIZE + 1) * sizeof(mv_buf_t); 19340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 19360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Allocate for pu_map, pu_t and pic_pu_idx for each MV bank */ 19370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Note: Number of luma samples is not max_wd * max_ht here, instead it is 19380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * set to maximum number of luma samples allowed at the given level. 19390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This is done to ensure that any stream with width and height lesser 19400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * than max_wd and max_ht is supported. Number of buffers required can be greater 19410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * for lower width and heights at a given level and this increased number of buffers 19420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * might require more memory than what max_wd and max_ht buffer would have required 19430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Also note one extra buffer is allocted to store current pictures MV bank 19440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * In case of asynchronous parsing and processing, number of buffers should increase here 19450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * based on when parsing and processing threads are synchronized 19460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 19470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 lvl_idx = ihevcd_get_lvl_idx(level); 19480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_luma_samples = gai4_ihevc_max_luma_pic_size[lvl_idx]; 19490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size += (max_dpb_size + 1) * 19500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_get_pic_mv_bank_size(max_luma_samples); 19510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_MVBANK, 19520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 19540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // TODO GPU : Have to creat ping-pong view for VPS,SPS,PPS. 19550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_VPS]; 19560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX_VPS_CNT * sizeof(vps_t); 19570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_VPS, 19580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SPS]; 19610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX_SPS_CNT * sizeof(sps_t); 19620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_SPS, 19630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PPS]; 19660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX_PPS_CNT * sizeof(pps_t); 19670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PPS, 19680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SLICE_HDR]; 19710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX_SLICE_HDR_CNT * sizeof(slice_header_t); 19720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_SLICE_HDR, 19730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TILE]; 19760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 19770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 tile_size; 19780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar tile_size = max_tile_cols * max_tile_rows; 19800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar tile_size *= sizeof(tile_t); 19810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX_PPS_CNT * tile_size; 19840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 19850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_TILE, 19880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 19890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_ENTRY_OFST]; 19910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 19920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 num_entry_points; 19930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* One entry point per tile */ 19950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_entry_points = max_tile_cols * max_tile_rows; 19960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 19970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* One entry point per row of CTBs */ 19980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*********************************************************************/ 19990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Only tiles or entropy sync is enabled at a time in main */ 20000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* profile, but since memory required does not increase too much, */ 20010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* this allocation is done to handle both cases */ 20020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*********************************************************************/ 20030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_entry_points += max_ctb_rows; 20040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(WORD32) * num_entry_points; 20070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 20080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_ENTRY_OFST, 20110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SCALING_MAT]; 20150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 20160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 scaling_mat_size; 20170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SCALING_MAT_SIZE(scaling_mat_size) 20190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = (MAX_SPS_CNT + MAX_PPS_CNT) * scaling_mat_size * sizeof(WORD16); 20200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 20210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_SCALING_MAT, 20220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Holds one row skip_flag at 8x8 level used during parsing */ 20250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_SKIP_FLAG]; 20260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 1 bit per 8x8 */ 20280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = max_num_cu_cols / 8; 20290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PARSE_SKIP_FLAG, 20300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Holds one row skip_flag at 8x8 level used during parsing */ 20330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_CT_DEPTH]; 20340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 2 bits per 8x8 */ 20360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = max_num_cu_cols / 4; 20370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PARSE_CT_DEPTH, 20380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Holds one row skip_flag at 8x8 level used during parsing */ 20410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_INTRA_PRED_MODE]; 20420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 8 bits per 4x4 */ 20440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 16 bytes each for top and left 64 pixels and 16 bytes for default mode */ 20450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = 3 * 16 * sizeof(UWORD8); 20460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PARSE_INTRA_PRED_MODE, 20470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Holds one intra mode at 8x8 level for entire picture */ 20500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_INTRA_FLAG]; 20510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 1 bit per 8x8 */ 20530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = (max_wd_luma / MIN_CU_SIZE) * (max_ht_luma / MIN_CU_SIZE) / 8; 20540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_INTRA_FLAG, 20550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Holds one transquant bypass flag at 8x8 level for entire picture */ 20580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TRANSQUANT_BYPASS_FLAG]; 20590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 1 bit per 8x8 */ 20610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Extra row and column are allocated for easy processing of top and left blocks while loop filtering */ 20620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = ((max_wd_luma + 64) / MIN_CU_SIZE) * ((max_ht_luma + 64) / MIN_CU_SIZE) / 8; 20630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_TRANSQUANT_BYPASS_FLAG, 20640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Request memory to hold thread handles for each processing thread */ 20670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_THREAD_HANDLE]; 20680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MAX_PROCESS_THREADS * ithread_get_handle_size(); 20690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_THREAD_HANDLE, 20700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 20740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 job_queue_size; 20750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 num_jobs; 20760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PROC_JOBQ]; 20770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* One job per row of CTBs */ 20800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_jobs = max_ctb_rows; 20810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* One each tile a row of CTBs, num_jobs has to incremented */ 20830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_jobs *= max_tile_cols; 20840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* One format convert/frame copy job per row of CTBs for non-shared mode*/ 20860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_jobs += max_ctb_rows; 20870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar job_queue_size = ihevcd_jobq_ctxt_size(); 20900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar job_queue_size += num_jobs * sizeof(proc_job_t); 20910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = job_queue_size; 20920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PROC_JOBQ, 20930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 20940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 20950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 20970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_MAP]; 20980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = max_ctb_cnt; 20990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PARSE_MAP, 21000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 21010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PROC_MAP]; 21030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = max_ctb_cnt; 21040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PROC_MAP, 21050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 21060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_DISP_MGR]; 21090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* size for holding display manager context */ 21110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(buf_mgr_t); 21120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_DISP_MGR, 21130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 21140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_DPB_MGR]; 21160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* size for holding dpb manager context */ 21180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(dpb_mgr_t); 21190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_DPB_MGR, 21200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 21210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /** Holds top and left neighbor's pu idx into picture level pu array */ 21230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Only one top row is enough but left has to be replicated for each process context */ 21240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PIC_PU_IDX_NEIGHBOR]; 21250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = (max_num_4x4_cols /* left */ + MAX_PROCESS_THREADS * (MAX_CTB_SIZE / 4)/* top */ + 1/* top right */) * sizeof(WORD32); 21270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PIC_PU_IDX_NEIGHBOR, 21280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 21290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* TO hold scratch buffers needed for each process context */ 21330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PROC_SCRATCH]; 21340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 21350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 size = 0; 21360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 inter_pred_tmp_buf_size; 21370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ntaps_luma; 21380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pu_map_size; 21390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 sao_size = 0; 21400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ntaps_luma = 8; 21410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max inter pred size (number of bytes) */ 21430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar inter_pred_tmp_buf_size = sizeof(WORD16) * (MAX_CTB_SIZE + ntaps_luma) * MAX_CTB_SIZE; 21440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar inter_pred_tmp_buf_size = ALIGN64(inter_pred_tmp_buf_size); 21450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold pu_index w.r.t. frame level pu_t array for a CTB at 4x4 level*/ 21480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 16 x 16 4x4 in a CTB of size 64 x 64 and two extra needed for holding 21490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * neighbors 21500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 21510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu_map_size = sizeof(WORD32) * (18 * 18); 21520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu_map_size = ALIGN64(pu_map_size); 21540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += pu_map_size; 21550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold inter pred temporary buffers */ 21570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += 2 * inter_pred_tmp_buf_size; 21580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Allocate for each process context */ 21610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= MAX_PROCESS_THREADS; 21620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO left buffer for luma */ 21650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * (MAX(max_ht_luma, max_wd_luma)); 21660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO left buffer for chroma */ 21680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * (MAX(max_ht_luma, max_wd_luma)); 21690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top buffer for luma */ 21710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_wd_luma; 21720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top buffer for chroma */ 21740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_wd_luma; 21750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top left luma pixel value for last output ctb in a row*/ 21770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_rows; 21780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top left chroma pixel value last output ctb in a row*/ 21800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_rows * 2; 21810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top left pixel luma for current ctb - column array*/ 21830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_rows; 21840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top left pixel chroma for current ctb-column array*/ 21860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_rows * 2; 21870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top right pixel luma pixel value last output ctb in a row*/ 21890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_cols; 21900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold SAO top right pixel chroma pixel value last output ctb in a row*/ 21920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_cols * 2; 21930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*To hold SAO botton bottom left pixels for luma*/ 21950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_rows; 21960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 21970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*To hold SAO botton bottom left pixels for luma*/ 21980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size += sizeof(UWORD8) * max_ctb_rows * 2; 21990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sao_size = ALIGN64(sao_size); 22000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += sao_size; 22010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = size; 22020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 22030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_PROC_SCRATCH, 22040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 22050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* TO hold scratch buffers needed for each SAO context */ 22070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SAO_SCRATCH]; 22080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 22090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 size = 0; 22100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size = 4 * MAX_CTB_SIZE * MAX_CTB_SIZE; 22120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 2 temporary buffers*/ 22140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= 2; 22150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= MAX_PROCESS_THREADS; 22170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = size; 22190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 22200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_SAO_SCRATCH, 22210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 22220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_BS_QP]; 22240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 22250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 size = 0; 22260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 vert_bs_size, horz_bs_size; 22270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 qp_const_flag_size; 22280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 qp_size, num_8x8; 22290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of vertical edges */ 2231707042fda96ebede81408b854385173483798bcdHarish Mahendrakar vert_bs_size = max_wd_luma / 8 + 2 * MAX_CTB_SIZE / 8; 22320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of horizontal edges - extra MAX_CTB_SIZE / 8 to handle the last 4 rows separately(shifted CTB processing) */ 22340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vert_bs_size *= (max_ht_luma + MAX_CTB_SIZE) / MIN_TU_SIZE; 22350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Number of bytes */ 22370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vert_bs_size /= 8; 22380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Two bits per edge */ 22400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vert_bs_size *= 2; 22410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of horizontal edges */ 22430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size = max_ht_luma / 8 + MAX_CTB_SIZE / 8; 22440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of vertical edges - extra MAX_CTB_SIZE / 8 to handle the last 4 columns separately(shifted CTB processing) */ 22460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size *= (max_wd_luma + MAX_CTB_SIZE) / MIN_TU_SIZE; 22470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Number of bytes */ 22490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size /= 8; 22500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Two bits per edge */ 22520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size *= 2; 22530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max CTBs in a row */ 22550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_const_flag_size = max_wd_luma / MIN_CTB_SIZE + 1 /* The last ctb row deblk is done in last ctb + 1 row.*/; 22560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max CTBs in a column */ 22580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_const_flag_size *= max_ht_luma / MIN_CTB_SIZE; 22590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Number of bytes */ 22610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_const_flag_size = (qp_const_flag_size + 7) >> 3; 22620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* QP changes at CU level - So store at 8x8 level */ 22640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_8x8 = (max_ht_luma * max_wd_luma) / (MIN_CU_SIZE * MIN_CU_SIZE); 22650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_size = num_8x8; 22660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold vertical boundary strength */ 22680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += vert_bs_size; 22690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold horizontal boundary strength */ 22710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += horz_bs_size; 22720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold QP */ 22740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += qp_size; 22750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold QP const in CTB flags */ 22770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size += qp_const_flag_size; 22780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = size; 22800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 22810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_BS_QP, 22830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 22840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TILE_IDX]; 22860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 22870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 size = 0; 22880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max CTBs in a row */ 22890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size = max_wd_luma / MIN_CTB_SIZE + 2 /* Top row and bottom row extra. This ensures accessing left,top in first row 22900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar and right in last row will not result in invalid access*/; 22910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max CTBs in a column */ 22920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= max_ht_luma / MIN_CTB_SIZE; 22930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 22940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= sizeof(UWORD16); 22950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = size; 22960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 22970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_TILE_IDX, 22980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 22990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SAO]; 23010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 23020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 size; 23030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 4 bytes per color component per CTB */ 23050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size = 3 * 4; 23060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* MAX number of CTBs in a row */ 23080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= max_wd_luma / MIN_CTB_SIZE; 23090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* MAX number of CTBs in a column */ 23110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar size *= max_ht_luma / MIN_CTB_SIZE; 23120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = size; 23130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 23140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_SAO, 23160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 23170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_REF_PIC]; 23200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* size for holding buffer manager context */ 23220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = sizeof(buf_mgr_t); 23230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Size for holding pic_buf_t for each reference picture */ 23250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Note this allocation is done for BUF_MGR_MAX_CNT instead of 23260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * max_dpb_size or MAX_DPB_SIZE for following reasons 23270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * max_dpb_size will be based on max_wd and max_ht 23280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * For higher max_wd and max_ht this number will be smaller than MAX_DPB_SIZE 23290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * But during actual initialization number of buffers allocated can be more 23300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * 23310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Also to handle display depth application can allocate more than what 23320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * codec asks for in case of non-shared mode 23330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Since this is only a structure allocation and not actual buffer allocation, 23340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * it is allocated for BUF_MGR_MAX_CNT entries 23350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 23360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size += BUF_MGR_MAX_CNT * sizeof(pic_buf_t); 23370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* In case of non-shared mode allocate for reference picture buffers */ 2339221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy /* In case of shared and 420p output, allocate for chroma samples */ 2340221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy if((0 == share_disp_buf) || (chroma_format == IV_YUV_420P)) 23410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 2342221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy UWORD32 init_num_bufs; 2343221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy UWORD32 init_extra_bufs; 2344221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy WORD32 chroma_only; 2345221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 2346221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy chroma_only = 0; 2347221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy init_extra_bufs = 0; 2348221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy init_num_bufs = num_reorder_frames + num_ref_frames + 1; 2349221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 2350221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy /* In case of shared display buffers and chroma format 420P 2351221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy * Allocate for chroma in reference buffers, luma buffer will be display buffer 2352221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy */ 2353221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 2354221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy if((1 == share_disp_buf) && (chroma_format == IV_YUV_420P)) 2355221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy { 2356221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy chroma_only = 1; 2357221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy init_extra_bufs = num_extra_disp_bufs; 2358221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy } 2359221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 23600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Note: Number of luma samples is not max_wd * max_ht here, instead it is 23610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * set to maximum number of luma samples allowed at the given level. 23620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * This is done to ensure that any stream with width and height lesser 23630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * than max_wd and max_ht is supported. Number of buffers required can be greater 23640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * for lower width and heights at a given level and this increased number of buffers 23650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * might require more memory than what max_wd and max_ht buffer would have required 23660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Number of buffers is doubled in order to return one frame at a time instead of sending 23670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * multiple outputs during dpb full case. 23680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * Also note one extra buffer is allocted to store current picture 23690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * In case of asynchronous parsing and processing, number of buffers should increase here 23700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * based on when parsing and processing threads are synchronized 23710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 23720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size += 23730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_get_total_pic_buf_size(max_wd_luma * max_ht_luma, level, PAD_WD, PAD_HT, 2374221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy init_num_bufs, init_extra_bufs, chroma_only); 23750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 23760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_REF_PIC, 23770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 23780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Request memory to hold mem records to be returned during retrieve call */ 23800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_BACKUP]; 23810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = MEM_REC_CNT * sizeof(iv_mem_rec_t); 23820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nMemory record Id %d = %d \n", MEM_REC_BACKUP, 23830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size); 23840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 23850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Each memtab size is aligned to next multiple of 128 bytes */ 23860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* This is to ensure all the memtabs start at different cache lines */ 23870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = ps_mem_rec_base; 23880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MEM_REC_CNT; i++) 23890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 23900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec->u4_mem_size = ALIGN128(ps_mem_rec->u4_mem_size); 23910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec++; 23920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 23930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->s_ivd_fill_mem_rec_op_t.u4_num_mem_rec_filled = MEM_REC_CNT; 23940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef APPLY_CONCEALMENT 23950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 23960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T status; 23970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_fill_mem_rec_ip_t cncl_fill_ip; 23980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_fill_mem_rec_op_t cncl_fill_op; 23990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 mem_loc = MEM_REC_CNT; 24000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.e_cmd = IV_CMD_FILL_NUM_MEM_REC; 24020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location = &(memTab[mem_loc]); 24030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.u4_size = ps_mem_q_ip->s_ivd_fill_mem_rec_ip_t.u4_size; 24040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.u4_max_frm_wd = max_wd_luma; 24050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.u4_max_frm_ht = max_ht_luma; 24060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = icncl_api_function(NULL, (void *)&cncl_fill_ip, (void *)&cncl_fill_op); 24080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(IV_SUCCESS == status) 24100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 24110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_num_mem_rec_ip_t cncl_mem_ip; 24120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_num_mem_rec_op_t cncl_mem_op; 24130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_mem_ip.s_ivd_num_rec_ip_t.e_cmd = IV_CMD_GET_NUM_MEM_REC; 24150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_mem_ip.s_ivd_num_rec_ip_t.u4_size = sizeof(icncl_num_mem_rec_ip_t); 24160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = icncl_api_function(NULL, (void *)&cncl_mem_ip, (void *)&cncl_mem_op); 24180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(IV_SUCCESS == status) 24190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 24200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->s_ivd_fill_mem_rec_op_t.u4_num_mem_rec_filled += cncl_mem_op.s_ivd_num_mem_rec_op_t.u4_num_mem_rec; 24210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 24220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 24230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return status; 24250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 24270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif //APPLY_CONCEALMENT 24280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Num mem recs in fill call : %d\n", 24290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_q_op->s_ivd_fill_mem_rec_op_t.u4_num_mem_rec_filled); 24300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (status); 24330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 24340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 24370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 24380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 24400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Initializes from mem records passed to the codec 24410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 24430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Initializes pointers based on mem records passed 24440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 24460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 24470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 24490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 24500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 24520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 24530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 24550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 24570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 24590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 24600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 24610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_init_mem_rec(iv_obj_t *ps_codec_obj, 24620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 24630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 24640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 24650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_init_ip_t *dec_init_ip; 24670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_init_op_t *dec_init_op; 24680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 24690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec, *ps_mem_rec_base; 24700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 status = IV_SUCCESS; 24710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 24720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_tile_cols, max_tile_rows; 24730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_ip = (ihevcd_cxa_init_ip_t *)pv_api_ip; 24750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_op = (ihevcd_cxa_init_op_t *)pv_api_op; 24760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec_base = dec_init_ip->s_ivd_init_ip_t.pv_mem_rec_location; 24780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_CODEC]; 24800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec_obj->pv_codec_handle = ps_mem_rec->pv_base; 24810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 24830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Note this memset can not be done in init() call, since init will called 24850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar during reset as well. And calling this during reset will mean all pointers 24860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar need to reinitialized*/ 24870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(ps_codec, 0, sizeof(codec_t)); 24880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(dec_init_ip->s_ivd_init_ip_t.u4_size 24900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, i4_level)) 24910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 24920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_level = dec_init_ip->i4_level; 24930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 24940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_level *= 3; 24950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 24960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 24970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 24980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_level = MAX_LEVEL; 24990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(dec_init_ip->s_ivd_init_ip_t.u4_size 25020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, u4_num_ref_frames)) 25030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_ref = dec_init_ip->u4_num_ref_frames; 25050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 25070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_ref = MAX_REF_CNT; 25090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(dec_init_ip->s_ivd_init_ip_t.u4_size 25120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, u4_num_reorder_frames)) 25130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_reorder = dec_init_ip->u4_num_reorder_frames; 25150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 25170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_reorder = MAX_REF_CNT; 25190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(dec_init_ip->s_ivd_init_ip_t.u4_size 25220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, u4_num_extra_disp_buf)) 25230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_extra_disp_buf = 25250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_ip->u4_num_extra_disp_buf; 25260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 25280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_extra_disp_buf = 0; 25300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(dec_init_ip->s_ivd_init_ip_t.u4_size 25330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar > offsetof(ihevcd_cxa_init_ip_t, u4_share_disp_buf)) 25340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifndef LOGO_EN 25360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_share_disp_buf = dec_init_ip->u4_share_disp_buf; 25370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#else 25380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_share_disp_buf = 0; 25390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif 25400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 25420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_share_disp_buf = 0; 25440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Shared display mode is supported only for 420SP and 420P formats */ 25460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((dec_init_ip->s_ivd_init_ip_t.e_output_format != IV_YUV_420P) && 25470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (dec_init_ip->s_ivd_init_ip_t.e_output_format != IV_YUV_420SP_UV) && 25480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (dec_init_ip->s_ivd_init_ip_t.e_output_format != IV_YUV_420SP_VU)) 25490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_share_disp_buf = 0; 25510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_codec->i4_init_level < MIN_LEVEL) 25540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_codec->i4_init_level > MAX_LEVEL)) 25550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_op->s_ivd_init_op_t.u4_error_code |= IHEVCD_LEVEL_UNSUPPORTED; 25570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_FAIL); 25580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_init_num_ref > MAX_REF_CNT) 25610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_op->s_ivd_init_op_t.u4_error_code |= 25630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IHEVCD_NUM_REF_UNSUPPORTED; 25640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_ref = MAX_REF_CNT; 25650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_init_num_reorder > MAX_REF_CNT) 25680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_op->s_ivd_init_op_t.u4_error_code |= 25700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IHEVCD_NUM_REORDER_UNSUPPORTED; 25710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_reorder = MAX_REF_CNT; 25720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_init_num_extra_disp_buf > MAX_REF_CNT) 25750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 25760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_init_op->s_ivd_init_op_t.u4_error_code |= 25770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IHEVCD_NUM_EXTRA_DISP_UNSUPPORTED; 25780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_init_num_extra_disp_buf = 0; 25790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 25800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_chroma_fmt = dec_init_ip->s_ivd_init_ip_t.e_output_format; 25820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_max_wd = dec_init_ip->s_ivd_init_ip_t.u4_frm_max_wd; 25840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_max_ht = dec_init_ip->s_ivd_init_ip_t.u4_frm_max_ht; 25850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_max_wd = ALIGN64(ps_codec->i4_max_wd); 25870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_max_ht = ALIGN64(ps_codec->i4_max_ht); 25880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2589707042fda96ebede81408b854385173483798bcdHarish Mahendrakar ps_codec->i4_new_max_wd = ps_codec->i4_max_wd; 2590707042fda96ebede81408b854385173483798bcdHarish Mahendrakar ps_codec->i4_new_max_ht = ps_codec->i4_max_ht; 2591707042fda96ebede81408b854385173483798bcdHarish Mahendrakar 25920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_tile_cols = (ps_codec->i4_max_wd + MIN_TILE_WD - 1) / MIN_TILE_WD; 25930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_tile_rows = (ps_codec->i4_max_ht + MIN_TILE_HT - 1) / MIN_TILE_HT; 25940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_BACKUP]; 25960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_mem_rec_backup = (iv_mem_rec_t *)ps_mem_rec->pv_base; 25970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 25980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memcpy(ps_codec->ps_mem_rec_backup, ps_mem_rec_base, 25990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar MEM_REC_CNT * sizeof(iv_mem_rec_t)); 26000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_BITSBUF]; 26020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pu1_bitsbuf = (UWORD8 *)ps_mem_rec->pv_base; 26030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_bitsbuf_size = ps_mem_rec->u4_mem_size; 26040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TU_DATA]; 26060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_tu_data = ps_mem_rec->pv_base; 26070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_MVBANK]; 26080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_mv_buf_mgr = ps_mem_rec->pv_base; 26090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_mv_bank_buf_base = (UWORD8 *)ps_codec->pv_mv_buf_mgr + sizeof(buf_mgr_t); 26100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_total_mv_bank_size = ps_mem_rec->u4_mem_size - sizeof(buf_mgr_t); 26120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_VPS]; 26150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_vps_base = (vps_t *)ps_mem_rec->pv_base; 26160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.ps_vps_base = ps_codec->ps_vps_base; 26170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SPS]; 26190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_sps_base = (sps_t *)ps_mem_rec->pv_base; 26200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.ps_sps_base = ps_codec->ps_sps_base; 26210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PPS]; 26230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_pps_base = (pps_t *)ps_mem_rec->pv_base; 26240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.ps_pps_base = ps_codec->ps_pps_base; 26250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SLICE_HDR]; 26270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_slice_hdr_base = (slice_header_t *)ps_mem_rec->pv_base; 26280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.ps_slice_hdr_base = ps_codec->ps_slice_hdr_base; 26290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TILE]; 26310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_tile = (tile_t *)ps_mem_rec->pv_base; 26320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_ENTRY_OFST]; 26340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pi4_entry_ofst = (WORD32 *)ps_mem_rec->pv_base; 26350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SCALING_MAT]; 26370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pi2_scaling_mat = (WORD16 *)ps_mem_rec->pv_base; 26380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_SKIP_FLAG]; 26400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pu4_skip_cu_top = (UWORD32 *)ps_mem_rec->pv_base; 26410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_CT_DEPTH]; 26430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pu4_ct_depth_top = (UWORD32 *)ps_mem_rec->pv_base; 26440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_INTRA_PRED_MODE]; 26460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pu1_luma_intra_pred_mode_left = 26470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (UWORD8 *)ps_mem_rec->pv_base; 26480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pu1_luma_intra_pred_mode_top = 26490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (UWORD8 *)ps_mem_rec->pv_base + 16; 26500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_INTRA_FLAG]; 26520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(ps_mem_rec->pv_base, 0, (ps_codec->i4_max_wd / MIN_CU_SIZE) * (ps_codec->i4_max_ht / MIN_CU_SIZE) / 8); 26540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pu1_pic_intra_flag = (UWORD8 *)ps_mem_rec->pv_base; 26560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pu1_pic_intra_flag = ps_codec->pu1_pic_intra_flag; 26570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TRANSQUANT_BYPASS_FLAG]; 26580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 26600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 loop_filter_size = ((ps_codec->i4_max_wd + 64) / MIN_CU_SIZE) * ((ps_codec->i4_max_ht + 64) / MIN_CU_SIZE) / 8; 26610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 loop_filter_strd = (ps_codec->i4_max_wd + 63) >> 6; 26620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(ps_mem_rec->pv_base, 0, loop_filter_size); 26640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* The offset is added for easy processing of top and left blocks while loop filtering */ 26660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pu1_pic_no_loop_filter_flag = (UWORD8 *)ps_mem_rec->pv_base + loop_filter_strd + 1; 26670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.pu1_pic_no_loop_filter_flag = ps_codec->pu1_pic_no_loop_filter_flag; 26680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_deblk_ctxt.pu1_pic_no_loop_filter_flag = ps_codec->pu1_pic_no_loop_filter_flag; 26690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_pic_no_loop_filter_flag = ps_codec->pu1_pic_no_loop_filter_flag; 26700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 26710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Initialize pointers in PPS structures */ 26730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 26740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sps_t *ps_sps = ps_codec->ps_sps_base; 26750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pps_t *ps_pps = ps_codec->ps_pps_base; 26760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar tile_t *ps_tile = ps_codec->ps_tile; 26770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD16 *pi2_scaling_mat = ps_codec->pi2_scaling_mat; 26780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 scaling_mat_size; 26790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar SCALING_MAT_SIZE(scaling_mat_size); 26810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_SPS_CNT; i++) 26830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 26840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps->pi2_scaling_mat = pi2_scaling_mat; 26850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_scaling_mat += scaling_mat_size; 26860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps++; 26870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 26880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PPS_CNT; i++) 26900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 26910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pps->ps_tile = ps_tile; 26920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_tile += (max_tile_cols * max_tile_rows); 26930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pps->pi2_scaling_mat = pi2_scaling_mat; 26950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pi2_scaling_mat += scaling_mat_size; 26960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pps++; 26970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 26980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 26990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_THREAD_HANDLE]; 27020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 handle_size = ithread_get_handle_size(); 27050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->apv_process_thread_handle[i] = 27060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (UWORD8 *)ps_mem_rec->pv_base + (i * handle_size); 27070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PROC_JOBQ]; 27100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_proc_jobq_buf = ps_mem_rec->pv_base; 27110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_proc_jobq_buf_size = ps_mem_rec->u4_mem_size; 27120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PARSE_MAP]; 27140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pu1_parse_map = (UWORD8 *)ps_mem_rec->pv_base; 27150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PROC_MAP]; 27170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pu1_proc_map = (UWORD8 *)ps_mem_rec->pv_base; 27180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_DISP_MGR]; 27190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_disp_buf_mgr = ps_mem_rec->pv_base; 27200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_DPB_MGR]; 27220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_dpb_mgr = ps_mem_rec->pv_base; 27230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PIC_PU_IDX_NEIGHBOR]; 27260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 *pu4_buf = (UWORD32 *)ps_mem_rec->pv_base; 27300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pu4_pic_pu_idx_left = pu4_buf + i * (MAX_CTB_SIZE / 4); 27310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(ps_codec->as_process[i].pu4_pic_pu_idx_left, 0, sizeof(UWORD32) * MAX_CTB_SIZE / 4); 27320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pu4_pic_pu_idx_top = pu4_buf + MAX_PROCESS_THREADS * (MAX_CTB_SIZE / 4); 27330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(ps_codec->as_process[0].pu4_pic_pu_idx_top, 0, sizeof(UWORD32) * (ps_codec->i4_max_wd / 4 + 1)); 27350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_PROC_SCRATCH]; 27380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_buf = (UWORD8 *)ps_mem_rec->pv_base; 27400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pic_pu_idx_map_size; 27410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 inter_pred_tmp_buf_size, ntaps_luma; 27430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max inter pred size */ 27450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ntaps_luma = 8; 27460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar inter_pred_tmp_buf_size = sizeof(WORD16) * (MAX_CTB_SIZE + ntaps_luma) * MAX_CTB_SIZE; 27470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar inter_pred_tmp_buf_size = ALIGN64(inter_pred_tmp_buf_size); 27490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* To hold pu_index w.r.t. frame level pu_t array for a CTB */ 27510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_pu_idx_map_size = sizeof(WORD32) * (18 * 18); 27520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_pu_idx_map_size = ALIGN64(pic_pu_idx_map_size); 27530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pi2_inter_pred_tmp_buf1 = (WORD16 *)pu1_buf; 27560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += inter_pred_tmp_buf_size; 27570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pi2_inter_pred_tmp_buf2 = (WORD16 *)pu1_buf; 27590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += inter_pred_tmp_buf_size; 27600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Inverse transform intermediate and inverse scan output buffers reuse inter pred scratch buffers */ 27620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pi2_itrans_intrmd_buf = 27630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pi2_inter_pred_tmp_buf2; 27640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pi2_invscan_out = 27650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pi2_inter_pred_tmp_buf1; 27660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pu4_pic_pu_idx_map = (UWORD32 *)pu1_buf; 27680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_bs_ctxt.pu4_pic_pu_idx_map = 27690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (UWORD32 *)pu1_buf; 27700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += pic_pu_idx_map_size; 27710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // ps_codec->as_process[i].pi2_inter_pred_tmp_buf3 = (WORD16 *)pu1_buf; 27730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar // pu1_buf += inter_pred_tmp_buf_size; 27740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].i4_inter_pred_tmp_buf_strd = MAX_CTB_SIZE; 27760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_left_luma = (UWORD8 *)pu1_buf; 27810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_left_luma = (UWORD8 *)pu1_buf; 27830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += MAX(ps_codec->i4_max_ht, ps_codec->i4_max_wd); 27840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_left_chroma = (UWORD8 *)pu1_buf; 27880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_left_chroma = (UWORD8 *)pu1_buf; 27900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += MAX(ps_codec->i4_max_ht, ps_codec->i4_max_wd); 27910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 27930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_luma = (UWORD8 *)pu1_buf; 27940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 27950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_luma = (UWORD8 *)pu1_buf; 27960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += ps_codec->i4_max_wd; 27970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 27980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 27990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_chroma = (UWORD8 *)pu1_buf; 28010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_chroma = (UWORD8 *)pu1_buf; 28030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += ps_codec->i4_max_wd; 28040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_luma_top_left_ctb = (UWORD8 *)pu1_buf; 28070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_luma_top_left_ctb = (UWORD8 *)pu1_buf; 28090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += ps_codec->i4_max_ht / MIN_CTB_SIZE; 28100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_chroma_top_left_ctb = (UWORD8 *)pu1_buf; 28140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_chroma_top_left_ctb = (UWORD8 *)pu1_buf; 28160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE) * 2; 28170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_luma_curr_ctb = (UWORD8 *)pu1_buf; 28210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_luma_curr_ctb = (UWORD8 *)pu1_buf; 28230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += ps_codec->i4_max_ht / MIN_CTB_SIZE; 28240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_chroma_curr_ctb = (UWORD8 *)pu1_buf; 28280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_chroma_curr_ctb = (UWORD8 *)pu1_buf; 28300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE) * 2; 28320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_luma_top_right = (UWORD8 *)pu1_buf; 28350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_luma_top_right = (UWORD8 *)pu1_buf; 28370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += ps_codec->i4_max_wd / MIN_CTB_SIZE; 28390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_chroma_top_right = (UWORD8 *)pu1_buf; 28420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_chroma_top_right = (UWORD8 *)pu1_buf; 28440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += (ps_codec->i4_max_wd / MIN_CTB_SIZE) * 2; 28460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*Per CTB, Store 1 value for luma , 2 values for chroma*/ 28480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_luma_bot_left = (UWORD8 *)pu1_buf; 28510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_luma_bot_left = (UWORD8 *)pu1_buf; 28530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE); 28550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_left_chroma_bot_left = (UWORD8 *)pu1_buf; 28590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_left_chroma_bot_left = (UWORD8 *)pu1_buf; 28610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += (ps_codec->i4_max_ht / MIN_CTB_SIZE) * 2; 28630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SAO_SCRATCH]; 28660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_buf = (UWORD8 *)ps_mem_rec->pv_base; 28680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 28690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_tmp_buf_luma = (UWORD8 *)pu1_buf; 28710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += 4 * MAX_CTB_SIZE * MAX_CTB_SIZE * sizeof(UWORD8); 28720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.pu1_tmp_buf_chroma = (UWORD8 *)pu1_buf; 28740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += 4 * MAX_CTB_SIZE * MAX_CTB_SIZE * sizeof(UWORD8); 28750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 28770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_BS_QP]; 28790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 28800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_buf = (UWORD8 *)ps_mem_rec->pv_base; 28810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 vert_bs_size, horz_bs_size; 28820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 qp_const_flag_size; 28830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 qp_size; 28840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 num_8x8; 28850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of vertical edges */ 2887707042fda96ebede81408b854385173483798bcdHarish Mahendrakar vert_bs_size = ps_codec->i4_max_wd / 8 + 2 * MAX_CTB_SIZE / 8; 28880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of horizontal edges - extra MAX_CTB_SIZE / 8 to handle the last 4 rows separately(shifted CTB processing) */ 28900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vert_bs_size *= (ps_codec->i4_max_ht + MAX_CTB_SIZE) / MIN_TU_SIZE; 28910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Number of bytes */ 28930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vert_bs_size /= 8; 28940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Two bits per edge */ 28960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vert_bs_size *= 2; 28970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 28980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of horizontal edges */ 28990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size = ps_codec->i4_max_ht / 8 + MAX_CTB_SIZE / 8; 29000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max Number of vertical edges - extra MAX_CTB_SIZE / 8 to handle the last 4 columns separately(shifted CTB processing) */ 29020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size *= (ps_codec->i4_max_wd + MAX_CTB_SIZE) / MIN_TU_SIZE; 29030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Number of bytes */ 29050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size /= 8; 29060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Two bits per edge */ 29080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar horz_bs_size *= 2; 29090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max CTBs in a row */ 29110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_const_flag_size = ps_codec->i4_max_wd / MIN_CTB_SIZE + 1 /* The last ctb row deblk is done in last ctb + 1 row.*/; 29120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Max CTBs in a column */ 29140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_const_flag_size *= ps_codec->i4_max_ht / MIN_CTB_SIZE; 29150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Number of bytes */ 29170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_const_flag_size /= 8; 29180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* QP changes at CU level - So store at 8x8 level */ 29200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_8x8 = (ps_codec->i4_max_ht * ps_codec->i4_max_wd) / (MIN_CU_SIZE * MIN_CU_SIZE); 29210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar qp_size = num_8x8; 29220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memset(pu1_buf, 0, vert_bs_size + horz_bs_size + qp_size + qp_const_flag_size); 29230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 29250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 29260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf; 29270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf; 29280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf; 29290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += vert_bs_size; 29300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf; 29320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf; 29330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf; 29340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += horz_bs_size; 29350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf; 29370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf; 29380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf; 29390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += qp_size; 29400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf; 29420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf; 29430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_deblk_ctxt.s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf; 29440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += qp_const_flag_size; 29450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf -= (vert_bs_size + horz_bs_size + qp_size + qp_const_flag_size); 29470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 29480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_bs_ctxt.pu4_pic_vert_bs = (UWORD32 *)pu1_buf; 29490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += vert_bs_size; 29500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_bs_ctxt.pu4_pic_horz_bs = (UWORD32 *)pu1_buf; 29520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += horz_bs_size; 29530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_bs_ctxt.pu1_pic_qp = (UWORD8 *)pu1_buf; 29550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += qp_size; 29560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_bs_ctxt.pu1_pic_qp_const_in_ctb = (UWORD8 *)pu1_buf; 29580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf += qp_const_flag_size; 29590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 29610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_TILE_IDX]; 29630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 29640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_buf = (UWORD8 *)ps_mem_rec->pv_base; 29650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 29670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 29680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].pu1_tile_idx = (UWORD16 *)pu1_buf + ps_codec->i4_max_wd / MIN_CTB_SIZE /* Offset 1 row */; 29690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 29700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 29710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_SAO]; 29730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.ps_pic_sao = (sao_t *)ps_mem_rec->pv_base; 29740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->s_parse.s_sao_ctxt.ps_pic_sao = (sao_t *)ps_mem_rec->pv_base; 29750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < MAX_PROCESS_THREADS; i++) 29760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 29770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->as_process[i].s_sao_ctxt.ps_pic_sao = ps_codec->s_parse.ps_pic_sao; 29780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 29790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = &ps_mem_rec_base[MEM_REC_REF_PIC]; 29810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_pic_buf_mgr = ps_mem_rec->pv_base; 29820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->pv_pic_buf_base = (UWORD8 *)ps_codec->pv_pic_buf_mgr + sizeof(buf_mgr_t); 29830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_total_pic_buf_size = ps_mem_rec->u4_mem_size - sizeof(buf_mgr_t); 2984221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->pu1_cur_chroma_ref_buf = (UWORD8 *)ps_codec->pv_pic_buf_base + BUF_MGR_MAX_CNT * sizeof(pic_buf_t); 2985221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_remaining_pic_buf_size = ps_codec->i4_total_pic_buf_size - BUF_MGR_MAX_CNT * sizeof(pic_buf_t); 29860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef APPLY_CONCEALMENT 29910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 29920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 mem_loc; 29940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 29950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_init_ip_t cncl_init_ip; 29960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_init_op_t cncl_init_op; 29970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec; 29980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DecStruct *ps_codec; 29990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = dec_init_ip->s_ivd_init_ip_t.pv_mem_rec_location; 30010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mem_loc = MEM_REC_CNT; 30020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->ps_conceal = (iv_obj_t *)ps_mem_rec[mem_loc].pv_base; 30040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_first_frame_done = 0; 30050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_init_ip.u4_size = sizeof(icncl_init_ip_t); 30070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_init_ip.pv_mem_rec_location = &(ps_mem_rec[mem_loc]); 30080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_init_ip.e_cmd = IV_CMD_INIT; 30090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = icncl_api_function(ps_codec->ps_conceal, (void *)&cncl_init_ip, (void *)&cncl_init_op); 30110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 30130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif //APPLY_CONCEALMENT 30140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = ihevcd_init(ps_codec); 30160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar TRACE_INIT(NULL); 30180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar STATS_INIT(); 30190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return status; 30200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 30210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 30220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 30230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 30250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Retrieves mem records passed to the codec 30260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 30280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Retrieves memrecs passed earlier 30290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 30310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 30320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 30340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 30350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 30370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 30380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 30400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 30420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 30450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 30460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_retrieve_memrec(iv_obj_t *ps_codec_obj, 30470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 30480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 30490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 30500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_retrieve_mem_rec_ip_t *dec_clr_ip; 30520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_retrieve_mem_rec_op_t *dec_clr_op; 30530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 30540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_ip = (iv_retrieve_mem_rec_ip_t *)pv_api_ip; 30550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_op = (iv_retrieve_mem_rec_op_t *)pv_api_op; 30560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 30570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_init_done != 1) 30590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 30600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_op->u4_error_code |= 1 << IVD_FATALERROR; 30610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_op->u4_error_code |= IHEVCD_INIT_NOT_DONE; 30620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 30630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 30640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar memcpy(dec_clr_ip->pv_mem_rec_location, ps_codec->ps_mem_rec_backup, 30660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar MEM_REC_CNT * (sizeof(iv_mem_rec_t))); 30670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_op->u4_num_mem_rec_filled = MEM_REC_CNT; 30680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef APPLY_CONCEALMENT 30700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 30710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T status; 30720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_fill_mem_rec_ip_t cncl_fill_ip; 30730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar icncl_fill_mem_rec_op_t cncl_fill_op; 30740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar iv_mem_rec_t *ps_mem_rec; 30760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 mem_loc = MEM_REC_CNT; 30780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 num_cncl_mem = 0; 30790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_mem_rec = dec_clr_ip->pv_mem_rec_location; 30810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.e_cmd = IV_CMD_FILL_NUM_MEM_REC; 30830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location = &(ps_mem_rec[mem_loc]); 30840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.u4_size = sizeof(icncl_fill_mem_rec_ip_t); 30850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = icncl_api_function(NULL, (void *)&cncl_fill_ip, (void *)&cncl_fill_op); 30870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_ip.s_ivd_fill_mem_rec_ip_t.e_cmd = IV_CMD_RETRIEVE_MEMREC; 30890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cncl_fill_op.s_ivd_fill_mem_rec_op_t.u4_size = sizeof(icncl_fill_mem_rec_op_t); 30900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar status = icncl_api_function(ps_codec->ps_conceal, (void *)&cncl_fill_ip, (void *)&cncl_fill_op); 30920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 30930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(status == IV_SUCCESS) 30940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 30950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Add the concealment library's memory requirements */ 30960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_op->u4_num_mem_rec_filled += cncl_fill_op.s_ivd_fill_mem_rec_op_t.u4_num_mem_rec_filled; 30970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 30980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 30990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif //APPLY_CONCEALMENT 31000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("Retrieve num mem recs: %d\n", 31010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dec_clr_op->u4_num_mem_rec_filled); 31020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar STATS_PRINT(); 31030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_jobq_free((jobq_t *)ps_codec->pv_proc_jobq); 31040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 31080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 31100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 31110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 31120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 31140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Passes display buffer from application to codec 31150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 31170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Adds display buffer to the codec 31180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 31200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 31210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 31230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 31240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 31260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 31270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 31290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 31310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 31330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 31340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 31350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_display_frame(iv_obj_t *ps_codec_obj, 31360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 31370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 31380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 31390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ret = IV_SUCCESS; 31400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_set_display_frame_ip_t *ps_dec_disp_ip; 31420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_set_display_frame_op_t *ps_dec_disp_op; 31430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 31450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 31470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_dec_disp_ip = (ivd_set_display_frame_ip_t *)pv_api_ip; 31490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_dec_disp_op = (ivd_set_display_frame_op_t *)pv_api_op; 31500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_disp_bufs = 0; 31520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_share_disp_buf) 31530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 31540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 num_bufs = ps_dec_disp_ip->num_disp_bufs; 31550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_buf_t *ps_pic_buf; 31560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_buf; 31570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 buf_ret; 31580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 strd; 31590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = ps_codec->i4_strd; 31600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == strd) 31610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = ps_codec->i4_max_wd + PAD_WD; 31620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar num_bufs = MIN(num_bufs, BUF_MGR_MAX_CNT); 31630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_disp_bufs = num_bufs; 31640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pic_buf = (pic_buf_t *)ps_codec->ps_pic_buf; 31660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < (WORD32)num_bufs; i++) 31670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 31680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu1_buf = ps_dec_disp_ip->s_disp_buffer[i].pu1_bufs[0]; 31690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pic_buf->pu1_luma = pu1_buf + strd * PAD_TOP + PAD_LEFT; 31700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3171221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy if(ps_codec->e_chroma_fmt == IV_YUV_420P) 3172221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy { 3173221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy pu1_buf = ps_codec->pu1_cur_chroma_ref_buf; 3174221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->pu1_cur_chroma_ref_buf += strd * (ps_codec->i4_ht / 2 + PAD_HT / 2); 3175221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_remaining_pic_buf_size -= strd * (ps_codec->i4_ht / 2 + PAD_HT / 2); 3176221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 3177221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy if(0 > ps_codec->i4_remaining_pic_buf_size) 3178221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy { 3179221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_error_code = IHEVCD_BUF_MGR_ERROR; 3180221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy return IHEVCD_BUF_MGR_ERROR; 3181221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy } 3182221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 3183221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy } 3184221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy else 3185221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy { 3186221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy /* For YUV 420SP case use display buffer itself as chroma ref buffer */ 3187221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy pu1_buf = ps_dec_disp_ip->s_disp_buffer[i].pu1_bufs[1]; 3188221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy } 3189221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 31900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pic_buf->pu1_chroma = pu1_buf + strd * (PAD_TOP / 2) + PAD_LEFT; 31910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buf_ret = ihevc_buf_mgr_add((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, ps_pic_buf, i); 31930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 31940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 != buf_ret) 31950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 31960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_error_code = IHEVCD_BUF_MGR_ERROR; 31970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IHEVCD_BUF_MGR_ERROR; 31980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 31990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Mark pic buf as needed for display */ 32010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* This ensures that till the buffer is explicitly passed to the codec, 32020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * application owns the buffer. Decoder is allowed to use a buffer only 32030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * when application sends it through fill this buffer call in OMX 32040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 32050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevc_buf_mgr_set_status((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, i, BUF_MGR_DISP); 32060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_pic_buf++; 32080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 3209221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy /* Store display buffers in codec context. Needed for 420p output */ 3210221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy memcpy(&ps_codec->s_disp_buffer[ps_codec->i4_share_disp_buf_cnt], 3211221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy &ps_dec_disp_ip->s_disp_buffer[i], 3212221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy sizeof(ps_dec_disp_ip->s_disp_buffer[i])); 3213221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 3214221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy ps_codec->i4_share_disp_buf_cnt++; 3215221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy 32160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 32170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 32180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_dec_disp_op->u4_error_code = 0; 32200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return ret; 32210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 32230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 32250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 32260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 32280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets the decoder in flush mode. Decoder will come out of flush only 32290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* after returning all the buffers or at reset 32300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 32320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets the decoder in flush mode 32330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 32350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 32360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 32380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 32390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 32410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 32420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 32440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 32460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 32490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 32500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_flush_mode(iv_obj_t *ps_codec_obj, 32510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 32520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 32530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 32540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 32560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_flush_op_t *ps_ctl_op = (ivd_ctl_flush_op_t *)pv_api_op; 32570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pv_api_ip); 32580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 32590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Signal flush frame control call */ 32610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_flush_mode = 1; 32620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_error_code = 0; 32640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Set pic count to zero, so that decoder starts buffering again */ 32660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* once it comes out of flush mode */ 32670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_pic_cnt = 0; 32680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_disp_cnt = 0; 32690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 32700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 32730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 32740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 32750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 32760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 32780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets decoder status and buffer requirements 32790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 32810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets the decoder status 32820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 32840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 32850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 32870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 32880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 32900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 32910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 32930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 32950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 32970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 32980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 32990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_get_status(iv_obj_t *ps_codec_obj, 33010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 33020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 33030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 33040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 33060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 33070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd, ht; 33080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_getstatus_op_t *ps_ctl_op = (ivd_ctl_getstatus_op_t *)pv_api_op; 33090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pv_api_ip); 33110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_error_code = 0; 33130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 33150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_in_bufs = MIN_IN_BUFS; 33170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_chroma_fmt == IV_YUV_420P) 33180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_420; 33190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE) 33200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_422ILE; 33210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGB_565) 33220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_RGB565; 33230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGBA_8888) 33240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_RGBA8888; 33250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV) 33260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU)) 33270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_420SP; 33280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = 1; 33300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < (WORD32)ps_ctl_op->u4_min_num_in_bufs; i++) 33320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_in_buf_size[i] = MAX((ps_codec->i4_wd * ps_codec->i4_ht), MIN_BITSBUF_SIZE); 33340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_wd; 33370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht = ps_codec->i4_ht; 33380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_sps_done) 33400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 33420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_disp_wd; 33440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht = ps_codec->i4_disp_ht; 33450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 33480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_disp_strd; 33500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht = ps_codec->i4_ht + PAD_HT; 33510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 33540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 3355707042fda96ebede81408b854385173483798bcdHarish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 3356707042fda96ebede81408b854385173483798bcdHarish Mahendrakar { 3357707042fda96ebede81408b854385173483798bcdHarish Mahendrakar wd = ps_codec->i4_new_max_wd; 3358707042fda96ebede81408b854385173483798bcdHarish Mahendrakar ht = ps_codec->i4_new_max_ht; 3359707042fda96ebede81408b854385173483798bcdHarish Mahendrakar } 3360707042fda96ebede81408b854385173483798bcdHarish Mahendrakar else 33610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ALIGN32(wd + PAD_WD); 33630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht += PAD_HT; 33640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_disp_strd > wd) 33680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_disp_strd; 33690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 33710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = 1; 33720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 33730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pic_size; 33750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_dpb_size; 33760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_sps_done) 33780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sps_t *ps_sps = (ps_codec->s_parse.ps_sps_base + ps_codec->i4_sps_id); 33800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 reorder_pic_cnt; 33810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ref_pic_cnt; 33820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 level; 33830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar reorder_pic_cnt = MIN(ps_sps->ai1_sps_max_num_reorder_pics[0], ps_codec->i4_init_num_reorder); 33850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_size = ps_sps->i2_pic_width_in_luma_samples * ps_sps->i2_pic_height_in_luma_samples; 33860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level = ps_codec->i4_init_level; 33880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_dpb_size = ihevcd_get_dpb_size(level, pic_size); 33890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ref_pic_cnt = max_dpb_size; 33900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = reorder_pic_cnt; 33910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs += ref_pic_cnt + 1; 33930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 33940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 33950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 33960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 33970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_size = ps_codec->i4_max_wd * ps_codec->i4_max_ht; 33980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_dpb_size = ihevcd_get_dpb_size(ps_codec->i4_init_level, pic_size); 33990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = 2 * max_dpb_size; 34000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = MIN(ps_ctl_op->u4_num_disp_bufs, 3402707042fda96ebede81408b854385173483798bcdHarish Mahendrakar (UWORD32)(ps_codec->i4_init_num_ref + ps_codec->i4_init_num_reorder + 1)); 34030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = MIN( 34070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs, 32); 34080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*!*/ 34110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_chroma_fmt == IV_YUV_420P) 34120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 34130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht); 34140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = (wd * ht) >> 2; 34150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = (wd * ht) >> 2; 34160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE) 34180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 34190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht) * 2; 34200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = 34210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 34220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGB_565) 34240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 34250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht) * 2; 34260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = 34270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 34280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGBA_8888) 34300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 34310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht) * 4; 34320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = 34330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 34340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV) 34360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU)) 34370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 34380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht); 34390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = (wd * ht) >> 1; 34400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 34410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 34420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_pic_ht = ht; 34430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_pic_wd = wd; 34440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_frame_rate = 30000; 34450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_bit_rate = 1000000; 34460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->e_content_type = IV_PROGRESSIVE; 34470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->e_output_chroma_format = ps_codec->e_chroma_fmt; 34480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_disp_bufs = ps_ctl_op->u4_num_disp_bufs; 3449707042fda96ebede81408b854385173483798bcdHarish Mahendrakar 3450707042fda96ebede81408b854385173483798bcdHarish Mahendrakar if(ps_ctl_op->u4_size == sizeof(ihevcd_cxa_ctl_getstatus_op_t)) 3451707042fda96ebede81408b854385173483798bcdHarish Mahendrakar { 3452707042fda96ebede81408b854385173483798bcdHarish Mahendrakar ihevcd_cxa_ctl_getstatus_op_t *ps_ext_ctl_op = (ihevcd_cxa_ctl_getstatus_op_t *)ps_ctl_op; 3453707042fda96ebede81408b854385173483798bcdHarish Mahendrakar ps_ext_ctl_op->u4_coded_pic_wd = ps_codec->i4_wd; 3454707042fda96ebede81408b854385173483798bcdHarish Mahendrakar ps_ext_ctl_op->u4_coded_pic_wd = ps_codec->i4_ht; 3455707042fda96ebede81408b854385173483798bcdHarish Mahendrakar } 34560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 34570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 34580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 34590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 34600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 34620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets decoder buffer requirements 34630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 34650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets the decoder buffer requirements. If called before header decoder, 34660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* buffer requirements are based on max_wd and max_ht else actual width and 34670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* height will be used 34680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 34700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 34710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 34730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 34740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 34760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 34770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 34790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 34810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 34830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 34840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 34850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_get_buf_info(iv_obj_t *ps_codec_obj, 34860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 34870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 34880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 34890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 34910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 i = 0; 34920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 wd, ht; 34930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_getbufinfo_op_t *ps_ctl_op = 34940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ivd_ctl_getbufinfo_op_t *)pv_api_op; 34950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pv_api_ip); 34970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_error_code = 0; 34980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 34990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 35000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_in_bufs = MIN_IN_BUFS; 35020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_chroma_fmt == IV_YUV_420P) 35030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_420; 35040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE) 35050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_422ILE; 35060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGB_565) 35070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_RGB565; 35080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGBA_8888) 35090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_RGBA8888; 35100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV) 35110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU)) 35120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_num_out_bufs = MIN_OUT_BUFS_420SP; 35130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = 1; 35150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < ps_ctl_op->u4_min_num_in_bufs; i++) 35170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_in_buf_size[i] = MAX((ps_codec->i4_wd * ps_codec->i4_ht), MIN_BITSBUF_SIZE); 35190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_max_wd; 35220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht = ps_codec->i4_max_ht; 35230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_sps_done) 35250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 35270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_disp_wd; 35290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht = ps_codec->i4_disp_ht; 35300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 35330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_disp_strd; 35350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht = ps_codec->i4_ht + PAD_HT; 35360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 35390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(1 == ps_codec->i4_share_disp_buf) 35410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ALIGN32(wd + PAD_WD); 35430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ht += PAD_HT; 35440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_disp_strd > wd) 35480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar wd = ps_codec->i4_disp_strd; 35490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 35510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = 1; 35520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 35530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 pic_size; 35550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 max_dpb_size; 35560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_sps_done) 35580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sps_t *ps_sps = (ps_codec->s_parse.ps_sps_base + ps_codec->i4_sps_id); 35600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 reorder_pic_cnt; 35610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ref_pic_cnt; 35620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 level; 35630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar reorder_pic_cnt = MIN(ps_sps->ai1_sps_max_num_reorder_pics[0], ps_codec->i4_init_num_reorder); 35650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_size = ps_sps->i2_pic_width_in_luma_samples * ps_sps->i2_pic_height_in_luma_samples; 35660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar level = ps_codec->i4_init_level; 35680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_dpb_size = ihevcd_get_dpb_size(level, pic_size); 35690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ref_pic_cnt = max_dpb_size; 35700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = reorder_pic_cnt; 35710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs += ref_pic_cnt + 1; 35730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 35760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pic_size = ps_codec->i4_max_wd * ps_codec->i4_max_ht; 35780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar max_dpb_size = ihevcd_get_dpb_size(ps_codec->i4_init_level, pic_size); 35790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = 2 * max_dpb_size; 35800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = MIN(ps_ctl_op->u4_num_disp_bufs, 3582707042fda96ebede81408b854385173483798bcdHarish Mahendrakar (UWORD32)(ps_codec->i4_init_num_ref + ps_codec->i4_init_num_reorder + 1)); 35830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs = MIN( 35870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_num_disp_bufs, 32); 35880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 35910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /*!*/ 35920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_chroma_fmt == IV_YUV_420P) 35930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 35940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht); 35950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = (wd * ht) >> 2; 35960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = (wd * ht) >> 2; 35970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 35980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_YUV_422ILE) 35990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht) * 2; 36010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = 36020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 36030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGB_565) 36050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht) * 2; 36070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = 36080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 36090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(ps_codec->e_chroma_fmt == IV_RGBA_8888) 36110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht) * 4; 36130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = 36140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 36150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV) 36170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU)) 36180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[0] = (wd * ht); 36200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[1] = (wd * ht) >> 1; 36210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_min_out_buf_size[2] = 0; 36220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_disp_bufs = ps_ctl_op->u4_num_disp_bufs; 36240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 36260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 36270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 36300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 36310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 36330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets dynamic parameters 36340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 36360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets dynamic parameters. Note Frame skip, decode header mode are dynamic 36370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Dynamic change in stride is not supported 36380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 36400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 36410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 36430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 36440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 36460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 36470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 36490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 36510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 36530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 36540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 36550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_params(iv_obj_t *ps_codec_obj, 36560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 36570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 36580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 36590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 36610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ret = IV_SUCCESS; 36620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 strd; 36630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_set_config_ip_t *s_ctl_dynparams_ip = 36640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ivd_ctl_set_config_ip_t *)pv_api_ip; 36650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_set_config_op_t *s_ctl_dynparams_op = 36660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ivd_ctl_set_config_op_t *)pv_api_op; 36670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 36690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code = 0; 36710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_pic_skip_mode = s_ctl_dynparams_ip->e_frm_skip_mode; 36730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(s_ctl_dynparams_ip->e_frm_skip_mode != IVD_SKIP_NONE) 36750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((s_ctl_dynparams_ip->e_frm_skip_mode != IVD_SKIP_P) && 36780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (s_ctl_dynparams_ip->e_frm_skip_mode != IVD_SKIP_B) && 36790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (s_ctl_dynparams_ip->e_frm_skip_mode != IVD_SKIP_PB)) 36800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code = (1 << IVD_UNSUPPORTEDPARAM); 36820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 36830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = ps_codec->i4_disp_strd; 36870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(1 == ps_codec->i4_share_disp_buf) 36880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = ps_codec->i4_strd; 36900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 36910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 36930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((-1 != (WORD32)s_ctl_dynparams_ip->u4_disp_wd) && 36940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (0 != s_ctl_dynparams_ip->u4_disp_wd) && 36950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (0 != strd) && 36960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ((WORD32)s_ctl_dynparams_ip->u4_disp_wd < strd)) 36970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 36980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code |= (1 << IVD_UNSUPPORTEDPARAM); 36990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code |= IHEVCD_INVALID_DISP_STRD; 37000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 37010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 37030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((WORD32)s_ctl_dynparams_ip->u4_disp_wd >= ps_codec->i4_wd) 37050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = s_ctl_dynparams_ip->u4_disp_wd; 37070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 3708221aaccb7a9b501ce16ccc1fd7f7d44a8f73cd6eNaveen Kumar Ponnusamy else if(0 == ps_codec->i4_sps_done) 37090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = s_ctl_dynparams_ip->u4_disp_wd; 37110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(s_ctl_dynparams_ip->u4_disp_wd == 0) 37130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = ps_codec->i4_disp_strd; 37150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 37170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar strd = 0; 37190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code |= (1 << IVD_UNSUPPORTEDPARAM); 37200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code |= IHEVCD_INVALID_DISP_STRD; 37210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 37220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_disp_strd = strd; 37260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(1 == ps_codec->i4_share_disp_buf) 37270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_strd = strd; 37290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(s_ctl_dynparams_ip->e_vid_dec_mode == IVD_DECODE_FRAME) 37320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_header_mode = 0; 37330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else if(s_ctl_dynparams_ip->e_vid_dec_mode == IVD_DECODE_HEADER) 37340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_header_mode = 1; 37350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 37360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code = (1 << IVD_UNSUPPORTEDPARAM); 37390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_header_mode = 1; 37400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 37410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return ret; 37450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 37470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 37480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 37490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 37510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Resets the decoder state 37520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 37540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Resets the decoder state by calling ihevcd_init() 37550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 37570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 37580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 37600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 37610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 37630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 37640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 37660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 37680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 37710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 37720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_reset(iv_obj_t *ps_codec_obj, void *pv_api_ip, void *pv_api_op) 37730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 37740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec; 37750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_reset_op_t *s_ctl_reset_op = (ivd_ctl_reset_op_t *)pv_api_op; 37760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(pv_api_ip); 37770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle); 37780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec != NULL) 37800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nReset called \n"); 37820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_init(ps_codec); 37830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 37850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 37860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nReset called without Initializing the decoder\n"); 37870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_reset_op->u4_error_code = IHEVCD_INIT_NOT_DONE; 37880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 37890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 37910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 37920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 37930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 37940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 37950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 37960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 37970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Releases display buffer from application to codec to signal to the codec 37980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* that it can write to this buffer if required. Till release is called, 37990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* codec can not write to this buffer 38000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 38020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Marks the buffer as display done 38030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 38050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 38060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 38080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 38090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 38110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 38120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 38140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 38160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 38190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 38200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_rel_display_frame(iv_obj_t *ps_codec_obj, 38220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 38230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 38240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 38250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_rel_display_frame_ip_t *ps_dec_rel_disp_ip; 38270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_rel_display_frame_op_t *ps_dec_rel_disp_op; 38280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 38300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_dec_rel_disp_ip = (ivd_rel_display_frame_ip_t *)pv_api_ip; 38320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_dec_rel_disp_op = (ivd_rel_display_frame_op_t *)pv_api_op; 38330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(ps_dec_rel_disp_op); 38350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 38370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 38380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 38390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 38400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevc_buf_mgr_release((buf_mgr_t *)ps_codec->pv_pic_buf_mgr, ps_dec_rel_disp_ip->u4_disp_buf_id, BUF_MGR_DISP); 38420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 38440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 38450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 38460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 38470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 38490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets degrade params 38500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 38520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets degrade params. 38530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Refer to ihevcd_cxa_ctl_degrade_ip_t definition for details 38540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 38560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 38570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 38590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 38600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 38620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 38630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 38650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 38670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 38700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 38710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_degrade(iv_obj_t *ps_codec_obj, 38730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 38740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 38750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 38760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_degrade_ip_t *ps_ip; 38770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_degrade_op_t *ps_op; 38780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 38790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_degrade_ip_t *)pv_api_ip; 38810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_degrade_op_t *)pv_api_op; 38820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_degrade_type = ps_ip->i4_degrade_type; 38840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_nondegrade_interval = ps_ip->i4_nondegrade_interval; 38850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_degrade_pics = ps_ip->i4_degrade_pics; 38860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = 0; 38880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_degrade_pic_cnt = 0; 38890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 38910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 38920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 38940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 38950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 38960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 38970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 38980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets frame dimensions/offsets 38990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 39010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets frame buffer chararacteristics such a x & y offsets display and 39020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* buffer dimensions 39030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 39050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 39060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 39080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 39090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 39110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 39120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 39140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 39160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 39180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 39190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 39200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_get_frame_dimensions(iv_obj_t *ps_codec_obj, 39220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 39230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 39240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 39250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_frame_dimensions_ip_t *ps_ip; 39260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_frame_dimensions_op_t *ps_op; 39270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 39280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 disp_wd, disp_ht, buffer_wd, buffer_ht, x_offset, y_offset; 39290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_get_frame_dimensions_ip_t *)pv_api_ip; 39300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_get_frame_dimensions_op_t *)pv_api_op; 39310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(ps_ip); 39320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_sps_done) 39330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar disp_wd = ps_codec->i4_disp_wd; 39350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar disp_ht = ps_codec->i4_disp_ht; 39360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 39380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_wd = disp_wd; 39400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_ht = disp_ht; 39410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 39430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_wd = ps_codec->i4_strd; 39450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_ht = ps_codec->i4_ht + PAD_HT; 39460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 39490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar disp_wd = ps_codec->i4_max_wd; 39520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar disp_ht = ps_codec->i4_max_ht; 39530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 39550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_wd = disp_wd; 39570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_ht = disp_ht; 39580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 39600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_wd = ALIGN16(disp_wd) + PAD_WD; 39620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_ht = ALIGN16(disp_ht) + PAD_HT; 39630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_strd > buffer_wd) 39670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar buffer_wd = ps_codec->i4_strd; 39680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_share_disp_buf) 39700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar x_offset = 0; 39720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar y_offset = 0; 39730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 39750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 39760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar y_offset = PAD_TOP; 39770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar x_offset = PAD_LEFT; 39780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 39790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_wd[0] = disp_wd; 39810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_ht[0] = disp_ht; 39820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_wd[0] = buffer_wd; 39830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_ht[0] = buffer_ht; 39840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_x_offset[0] = x_offset; 39850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_y_offset[0] = y_offset; 39860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 39870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_wd[1] = ps_op->u4_disp_wd[2] = ((ps_op->u4_disp_wd[0] + 1) 39880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> 1); 39890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_ht[1] = ps_op->u4_disp_ht[2] = ((ps_op->u4_disp_ht[0] + 1) 39900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> 1); 39910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_wd[1] = ps_op->u4_buffer_wd[2] = (ps_op->u4_buffer_wd[0] 39920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> 1); 39930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_ht[1] = ps_op->u4_buffer_ht[2] = (ps_op->u4_buffer_ht[0] 39940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> 1); 39950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_x_offset[1] = ps_op->u4_x_offset[2] = (ps_op->u4_x_offset[0] 39960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> 1); 39970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_y_offset[1] = ps_op->u4_y_offset[2] = (ps_op->u4_y_offset[0] 39980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> 1); 39990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_codec->e_chroma_fmt == IV_YUV_420SP_UV) 40010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar || (ps_codec->e_chroma_fmt == IV_YUV_420SP_VU)) 40020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 40030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_wd[2] = 0; 40040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_ht[2] = 0; 40050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_wd[2] = 0; 40060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_ht[2] = 0; 40070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_x_offset[2] = 0; 40080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_y_offset[2] = 0; 40090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_disp_wd[1] <<= 1; 40110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_buffer_wd[1] <<= 1; 40120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_x_offset[1] <<= 1; 40130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 40140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 40160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 40180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 40210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 40220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 40240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets vui parameters 40250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 40270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Gets VUI parameters 40280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 40300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 40310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 40330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 40340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 40360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 40370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 40390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 40410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 40430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 40440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 40450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_get_vui_params(iv_obj_t *ps_codec_obj, 40460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 40470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 40480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 40490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_vui_params_ip_t *ps_ip; 40500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_get_vui_params_op_t *ps_op; 40510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 40520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sps_t *ps_sps; 40530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar vui_t *ps_vui; 40540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 i; 40550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_get_vui_params_ip_t *)pv_api_ip; 40570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_get_vui_params_op_t *)pv_api_op; 40580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_codec->i4_sps_done) 40600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 40610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = IHEVCD_VUI_PARAMS_NOT_FOUND; 40620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 40630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 40640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps = ps_codec->s_parse.ps_sps; 40660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(0 == ps_sps->i1_sps_valid || 0 == ps_sps->i1_vui_parameters_present_flag) 40670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 40680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 sps_idx = 0; 40690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps = ps_codec->ps_sps_base; 40700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar while((0 == ps_sps->i1_sps_valid) || (0 == ps_sps->i1_vui_parameters_present_flag)) 40720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 40730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sps_idx++; 40740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_sps++; 40750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(sps_idx == MAX_SPS_CNT - 1) 40770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 40780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = IHEVCD_VUI_PARAMS_NOT_FOUND; 40790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 40800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 40810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 40820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 40830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_vui = &ps_sps->s_vui_parameters; 40850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UNUSED(ps_ip); 40860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 40870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_aspect_ratio_info_present_flag = ps_vui->u1_aspect_ratio_info_present_flag; 40880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_aspect_ratio_idc = ps_vui->u1_aspect_ratio_idc; 40890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u2_sar_width = ps_vui->u2_sar_width; 40900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u2_sar_height = ps_vui->u2_sar_height; 40910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_overscan_info_present_flag = ps_vui->u1_overscan_info_present_flag; 40920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_overscan_appropriate_flag = ps_vui->u1_overscan_appropriate_flag; 40930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_video_signal_type_present_flag = ps_vui->u1_video_signal_type_present_flag; 40940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_video_format = ps_vui->u1_video_format; 40950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_video_full_range_flag = ps_vui->u1_video_full_range_flag; 40960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_colour_description_present_flag = ps_vui->u1_colour_description_present_flag; 40970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_colour_primaries = ps_vui->u1_colour_primaries; 40980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_transfer_characteristics = ps_vui->u1_transfer_characteristics; 40990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_matrix_coefficients = ps_vui->u1_matrix_coefficients; 41000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_chroma_loc_info_present_flag = ps_vui->u1_chroma_loc_info_present_flag; 41010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_chroma_sample_loc_type_top_field = ps_vui->u1_chroma_sample_loc_type_top_field; 41020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_chroma_sample_loc_type_bottom_field = ps_vui->u1_chroma_sample_loc_type_bottom_field; 41030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_neutral_chroma_indication_flag = ps_vui->u1_neutral_chroma_indication_flag; 41040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_field_seq_flag = ps_vui->u1_field_seq_flag; 41050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_frame_field_info_present_flag = ps_vui->u1_frame_field_info_present_flag; 41060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_default_display_window_flag = ps_vui->u1_default_display_window_flag; 41070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_def_disp_win_left_offset = ps_vui->u4_def_disp_win_left_offset; 41080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_def_disp_win_right_offset = ps_vui->u4_def_disp_win_right_offset; 41090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_def_disp_win_top_offset = ps_vui->u4_def_disp_win_top_offset; 41100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_def_disp_win_bottom_offset = ps_vui->u4_def_disp_win_bottom_offset; 41110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_vui_hrd_parameters_present_flag = ps_vui->u1_vui_hrd_parameters_present_flag; 41120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_vui_timing_info_present_flag = ps_vui->u1_vui_timing_info_present_flag; 41130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_vui_num_units_in_tick = ps_vui->u4_vui_num_units_in_tick; 41140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_vui_time_scale = ps_vui->u4_vui_time_scale; 41150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_poc_proportional_to_timing_flag = ps_vui->u1_poc_proportional_to_timing_flag; 41160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_num_ticks_poc_diff_one_minus1 = ps_vui->u1_num_ticks_poc_diff_one_minus1; 41170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_bitstream_restriction_flag = ps_vui->u1_bitstream_restriction_flag; 41180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_tiles_fixed_structure_flag = ps_vui->u1_tiles_fixed_structure_flag; 41190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_motion_vectors_over_pic_boundaries_flag = ps_vui->u1_motion_vectors_over_pic_boundaries_flag; 41200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_restricted_ref_pic_lists_flag = ps_vui->u1_restricted_ref_pic_lists_flag; 41210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_min_spatial_segmentation_idc = ps_vui->u4_min_spatial_segmentation_idc; 41220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_max_bytes_per_pic_denom = ps_vui->u1_max_bytes_per_pic_denom; 41230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_max_bits_per_mincu_denom = ps_vui->u1_max_bits_per_mincu_denom; 41240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_log2_max_mv_length_horizontal = ps_vui->u1_log2_max_mv_length_horizontal; 41250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_log2_max_mv_length_vertical = ps_vui->u1_log2_max_mv_length_vertical; 41260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* HRD parameters */ 41290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_timing_info_present_flag = ps_vui->s_vui_hrd_parameters.u1_timing_info_present_flag; 41300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_num_units_in_tick = ps_vui->s_vui_hrd_parameters.u4_num_units_in_tick; 41310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_time_scale = ps_vui->s_vui_hrd_parameters.u4_time_scale; 41320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_nal_hrd_parameters_present_flag = ps_vui->s_vui_hrd_parameters.u1_nal_hrd_parameters_present_flag; 41330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_vcl_hrd_parameters_present_flag = ps_vui->s_vui_hrd_parameters.u1_vcl_hrd_parameters_present_flag; 41340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_cpbdpb_delays_present_flag = ps_vui->s_vui_hrd_parameters.u1_cpbdpb_delays_present_flag; 41350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_sub_pic_cpb_params_present_flag = ps_vui->s_vui_hrd_parameters.u1_sub_pic_cpb_params_present_flag; 41360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_tick_divisor_minus2 = ps_vui->s_vui_hrd_parameters.u1_tick_divisor_minus2; 41370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_du_cpb_removal_delay_increment_length_minus1 = ps_vui->s_vui_hrd_parameters.u1_du_cpb_removal_delay_increment_length_minus1; 41380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_sub_pic_cpb_params_in_pic_timing_sei_flag = ps_vui->s_vui_hrd_parameters.u1_sub_pic_cpb_params_in_pic_timing_sei_flag; 41390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_dpb_output_delay_du_length_minus1 = ps_vui->s_vui_hrd_parameters.u1_dpb_output_delay_du_length_minus1; 41400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_bit_rate_scale = ps_vui->s_vui_hrd_parameters.u4_bit_rate_scale; 41410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_cpb_size_scale = ps_vui->s_vui_hrd_parameters.u4_cpb_size_scale; 41420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_cpb_size_du_scale = ps_vui->s_vui_hrd_parameters.u4_cpb_size_du_scale; 41430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_initial_cpb_removal_delay_length_minus1 = ps_vui->s_vui_hrd_parameters.u1_initial_cpb_removal_delay_length_minus1; 41440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_au_cpb_removal_delay_length_minus1 = ps_vui->s_vui_hrd_parameters.u1_au_cpb_removal_delay_length_minus1; 41450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u1_dpb_output_delay_length_minus1 = ps_vui->s_vui_hrd_parameters.u1_dpb_output_delay_length_minus1; 41460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar for(i = 0; i < 6; i++) 41480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 41490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->au1_fixed_pic_rate_general_flag[i] = ps_vui->s_vui_hrd_parameters.au1_fixed_pic_rate_general_flag[i]; 41500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->au1_fixed_pic_rate_within_cvs_flag[i] = ps_vui->s_vui_hrd_parameters.au1_fixed_pic_rate_within_cvs_flag[i]; 41510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->au1_elemental_duration_in_tc_minus1[i] = ps_vui->s_vui_hrd_parameters.au1_elemental_duration_in_tc_minus1[i]; 41520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->au1_low_delay_hrd_flag[i] = ps_vui->s_vui_hrd_parameters.au1_low_delay_hrd_flag[i]; 41530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->au1_cpb_cnt_minus1[i] = ps_vui->s_vui_hrd_parameters.au1_cpb_cnt_minus1[i]; 41540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 41550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 41580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 41590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 41610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 41620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 41640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets Processor type 41650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 41670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets Processor type 41680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 41700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 41710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 41730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 41740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 41760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 41770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 41790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 41810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 41830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 41840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 41850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_processor(iv_obj_t *ps_codec_obj, 41870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 41880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 41890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 41900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_processor_ip_t *ps_ip; 41910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_processor_op_t *ps_op; 41920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 41930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_set_processor_ip_t *)pv_api_ip; 41950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_set_processor_op_t *)pv_api_op; 41960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 41970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_processor_arch = (IVD_ARCH_T)ps_ip->u4_arch; 41980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_processor_soc = (IVD_SOC_T)ps_ip->u4_soc; 41990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_init_function_ptr(ps_codec); 42010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_update_function_ptr(ps_codec); 42030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_processor_soc && (ps_codec->e_processor_soc <= SOC_HISI_37X)) 42050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 42060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* 8th bit indicates if format conversion is to be done ahead */ 42070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_processor_soc & 0x80) 42080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_enable_fmt_conv_ahead = 1; 42090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Lower 7 bit indicate NCTB - if non-zero */ 42110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->e_processor_soc &= 0x7F; 42120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->e_processor_soc) 42140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_nctb = ps_codec->e_processor_soc; 42150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 42180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((ps_codec->e_processor_soc == SOC_HISI_37X) && (ps_codec->i4_num_cores == 2)) 42200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 42210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->u4_nctb = 2; 42220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 42230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = 0; 42260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 42270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 42280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 42300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 42310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 42330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets Number of cores that can be used in the codec. Codec uses these many 42340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* threads for decoding 42350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 42370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Sets number of cores 42380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 42400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 42410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 42430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 42440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 42460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 42470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 42490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 42510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 42540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 42550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_set_num_cores(iv_obj_t *ps_codec_obj, 42570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 42580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 42590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 42600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_num_cores_ip_t *ps_ip; 42610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ihevcd_cxa_ctl_set_num_cores_op_t *ps_op; 42620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 42630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ihevcd_cxa_ctl_set_num_cores_ip_t *)pv_api_ip; 42650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ihevcd_cxa_ctl_set_num_cores_op_t *)pv_api_op; 42660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 42670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifdef MULTICORE 42680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_cores = ps_ip->u4_num_cores; 42690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#else 42700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_codec->i4_num_cores = 1; 42710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif 42720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = 0; 42730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_SUCCESS; 42740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 42750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 42760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 42770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 42790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Codec control call 42800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 42820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Codec control call which in turn calls appropriate calls based on 42830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* subcommand 42840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_codec_obj 42860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to codec object at API level 42870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 42890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to input argument structure 42900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 42920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Pointer to output argument structure 42930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status 42950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 42970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 42990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 43000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 43010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_ctl(iv_obj_t *ps_codec_obj, void *pv_api_ip, void *pv_api_op) 43030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 43040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_set_config_ip_t *ps_ctl_ip; 43050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_set_config_op_t *ps_ctl_op; 43060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ret = 0; 43070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 subcommand; 43080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar codec_t *ps_codec = (codec_t *)ps_codec_obj->pv_codec_handle; 43090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_ip = (ivd_ctl_set_config_ip_t *)pv_api_ip; 43110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op = (ivd_ctl_set_config_op_t *)pv_api_op; 43120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ps_codec->i4_init_done != 1) 43140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_error_code |= 1 << IVD_FATALERROR; 43160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ctl_op->u4_error_code |= IHEVCD_INIT_NOT_DONE; 43170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 43180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 43190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar subcommand = ps_ctl_ip->e_sub_cmd; 43200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar switch(subcommand) 43220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_GETPARAMS: 43240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_get_status(ps_codec_obj, (void *)pv_api_ip, 43250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_SETPARAMS: 43280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_params(ps_codec_obj, (void *)pv_api_ip, 43290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_RESET: 43320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_reset(ps_codec_obj, (void *)pv_api_ip, 43330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_SETDEFAULT: 43360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_set_config_op_t *s_ctl_dynparams_op = 43380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (ivd_ctl_set_config_op_t *)pv_api_op; 43390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_default_params(ps_codec); 43410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(IV_SUCCESS == ret) 43420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar s_ctl_dynparams_op->u4_error_code = 0; 43430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 43450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_FLUSH: 43460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_flush_mode(ps_codec_obj, (void *)pv_api_ip, 43470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_GETBUFINFO: 43500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_get_buf_info(ps_codec_obj, (void *)pv_api_ip, 43510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_CTL_GETVERSION: 43540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_getversioninfo_ip_t *ps_ip; 43560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ivd_ctl_getversioninfo_op_t *ps_op; 43570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T ret; 43580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip = (ivd_ctl_getversioninfo_ip_t *)pv_api_ip; 43590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op = (ivd_ctl_getversioninfo_op_t *)pv_api_op; 43600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = IV_SUCCESS; 43620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 43630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if((WORD32)ps_ip->u4_version_buffer_size <= 0) 43640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = IHEVCD_CXA_VERS_BUF_INSUFFICIENT; 43660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 43670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 43680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar else 43690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_get_version((CHAR *)ps_ip->pv_version_buffer, 43710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_ip->u4_version_buffer_size); 43720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(ret != IV_SUCCESS) 43730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 43740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ps_op->u4_error_code = IHEVCD_CXA_VERS_BUF_INSUFFICIENT; 43750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 43760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 43770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 43780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 43790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_DEGRADE: 43810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_degrade(ps_codec_obj, (void *)pv_api_ip, 43820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_SET_NUM_CORES: 43850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_num_cores(ps_codec_obj, (void *)pv_api_ip, 43860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS: 43890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_get_frame_dimensions(ps_codec_obj, (void *)pv_api_ip, 43900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS: 43930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_get_vui_params(ps_codec_obj, (void *)pv_api_ip, 43940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 43960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IHEVCD_CXA_CMD_CTL_SET_PROCESSOR: 43970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_processor(ps_codec_obj, (void *)pv_api_ip, 43980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 43990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar default: 44010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("\nDo nothing\n"); 44020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 44040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return ret; 44060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 44070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 44090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 44100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 44120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Codecs entry point function. All the function calls to the codec are 44130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* done using this function with different values specified in command 44140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par Description: 44160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Arguments are tested for validity and then based on the command 44170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* appropriate function is called 44180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] ps_handle 44200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* API level handle for codec 44210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[in] pv_api_ip 44230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Input argument structure 44240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @param[out] pv_api_op 44260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Output argument structure 44270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @returns Status of the function corresponding to command 44290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 44310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 44330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 44340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 44350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarIV_API_CALL_STATUS_T ihevcd_cxa_api_function(iv_obj_t *ps_handle, 44360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_ip, 44370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar void *pv_api_op) 44380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ 44390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 command; 44400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 *pu4_ptr_cmd; 44410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar WORD32 ret = 0; 44420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar IV_API_CALL_STATUS_T e_status; 44430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar e_status = api_check_struct_sanity(ps_handle, pv_api_ip, pv_api_op); 44440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(e_status != IV_SUCCESS) 44460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 44470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar DEBUG("error code = %d\n", *((UWORD32 *)pv_api_op + 1)); 44480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return IV_FAIL; 44490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 44500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_ptr_cmd = (UWORD32 *)pv_api_ip; 44520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_ptr_cmd++; 44530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar command = *pu4_ptr_cmd; 44550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar switch(command) 44570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { 44580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_GET_NUM_MEM_REC: 44590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_get_num_rec((void *)pv_api_ip, (void *)pv_api_op); 44600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_FILL_NUM_MEM_REC: 44630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_fill_num_mem_rec((void *)pv_api_ip, (void *)pv_api_op); 44650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_INIT: 44670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_init_mem_rec(ps_handle, (void *)pv_api_ip, 44680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 44690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_VIDEO_DECODE: 44720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_decode(ps_handle, (void *)pv_api_ip, (void *)pv_api_op); 44730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_GET_DISPLAY_FRAME: 44760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar //ret = ihevcd_get_display_frame(ps_handle,(void *)pv_api_ip,(void *)pv_api_op); 44770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_SET_DISPLAY_FRAME: 44800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_set_display_frame(ps_handle, (void *)pv_api_ip, 44810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 44820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_REL_DISPLAY_FRAME: 44860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_rel_display_frame(ps_handle, (void *)pv_api_ip, 44870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 44880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IV_CMD_RETRIEVE_MEMREC: 44910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_retrieve_memrec(ps_handle, (void *)pv_api_ip, 44920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (void *)pv_api_op); 44930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 44950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar case IVD_CMD_VIDEO_CTL: 44960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = ihevcd_ctl(ps_handle, (void *)pv_api_ip, (void *)pv_api_op); 44970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 44980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar default: 44990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret = IV_FAIL; 45000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar break; 45010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } 45020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 45030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar return (IV_API_CALL_STATUS_T)ret; 45040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 45050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 4506