1aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/****************************************************************************** 2aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 3aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Copyright (C) 2015 The Android Open Source Project 4aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 5aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Licensed under the Apache License, Version 2.0 (the "License"); 6aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * you may not use this file except in compliance with the License. 7aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * You may obtain a copy of the License at: 8aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 9aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * http://www.apache.org/licenses/LICENSE-2.0 10aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 11aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Unless required by applicable law or agreed to in writing, software 12aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * distributed under the License is distributed on an "AS IS" BASIS, 13aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * See the License for the specific language governing permissions and 15aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * limitations under the License. 16aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 17aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ***************************************************************************** 18aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 20aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef __IMPEG2D_STRUCTS_H__ 21aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define __IMPEG2D_STRUCTS_H__ 22aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 23903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar/* Decoder needs at least 4 reference buffers in order to support format conversion in a thread and 24903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakarto support B pictures. Because of format conversion in a thread, codec delay is now 2 frames instead of 1. 25903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish MahendrakarTo reduce this delay, format conversion has to wait for MB status before converting for B pictures. 26903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish MahendrakarTo avoid this check the delay is increased to 2 and hence number of reference frames minimum is 4. 27903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish MahendrakarBecause of temporal dependency in deinterlacer one additional buffer is also needed */ 288520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define NUM_INT_FRAME_BUFFERS 5 29903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 30903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 31903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define MAX_WIDTH 4096 32903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define MAX_HEIGHT 2160 33903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 34903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define MIN_WIDTH 16 35903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define MIN_HEIGHT 16 36903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 37903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 38903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define MAX_FRM_SIZE (MAX_WIDTH * MAX_HEIGHT * 2) /* Supports only 420P and 422ILE */ 39903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 40903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define DEC_ORDER 0 41903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 42903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar#define MAX_BITSTREAM_BUFFER_SIZE 2000 * 1024 43903fd2be3063609dd3cd7ad0691de46c1b52b7d1Harish Mahendrakar 448520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar/* Flag to signal that buffer is held by deinterlacing */ 458520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define MPEG2_BUF_MGR_DEINT (BUF_MGR_DISP << 1) 468520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 47aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef enum 48aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 49aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CMD_PROCESS, 50aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CMD_FMTCONV, 51aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}e_jobq_cmd_t; 52aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 53aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/** 54aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Structure to represent a processing job entry 55aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 56aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct 57aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 58aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 59aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Command 60aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Currently: PROCESS, FMTCONV are the only two jobs 61aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 62aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_cmd; 63aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 64aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 65aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * MB y of the starting MB 66aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 67aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 i2_start_mb_y; 68aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 69aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 70aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * MB y of the last MB 71aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 72aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 73aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 i2_end_mb_y; 74aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 75aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 76aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Bitstream offset for the current job 77aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 78aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_bistream_ofst; 79aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 80aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}job_t; 81aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 82aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct 83aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 84aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Params of the reference buffer used as input to MC */ 85aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_src_wd; 86aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_src_offset; 87aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 88aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Params of the buffer where MC output will be written */ 89aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_dst_wd_res_buf; 90aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_dst_wd_cur_frm; 91aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_dst_offset_res_buf; 92aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_dst_offset_cur_frm; 93aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 94aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Operation Parameters */ 95aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_rows; 96aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_cols; 97aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_mode; 98aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}comp_mc_params_t; 99aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct 101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t s_ref; 103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani comp_mc_params_t s_luma; 104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani comp_mc_params_t s_chroma; 105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}mb_mc_params_t; 106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistruct _dec_mb_params_t; 108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef UWORD8 pf_inv_quant_t (WORD16 *blk, 110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *weighting_matrix, 111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 quant_scale, 112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 intra_flag, 113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_num_coeffs, 114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 *pi2_coeffs, 115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *pu1_pos, 116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani const UWORD8 *scan, 117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 *u2_def_dc_pred, 118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_intra_dc_precision); 119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef IMPEG2D_ERROR_CODES_T pf_vld_inv_quant_t (void *dec, 121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 *out_addr, 122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani const UWORD8 *scan, 123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 intra_flag, 124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 colr_comp, 125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 d_picture); 126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef void pf_mc_t(void *, UWORD8 *, UWORD32 , UWORD8 *, UWORD32 , 128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 , UWORD32 ); 129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct dec_state_struct_t 131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 ai2_vld_buf[NUM_PELS_IN_BLOCK]; 133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 ai2_idct_stg1[NUM_PELS_IN_BLOCK]; 134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 136aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 au1_intra_quant_matrix[NUM_PELS_IN_BLOCK]; 137aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 au1_inter_quant_matrix[NUM_PELS_IN_BLOCK]; 138aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 139aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IMPEG2D_ERROR_CODES_T (*pf_decode_slice)(struct dec_state_struct_t *); 140aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 141aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_vld_inv_quant_t *pf_vld_inv_quant; 142aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 143aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_idct_recon_t *pf_idct_recon[4]; 144aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 145aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_mc_t *pf_mc[4]; 146aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_interpred_t *pf_fullx_halfy_8x8; 147aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_interpred_t *pf_halfx_fully_8x8; 148aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_interpred_t *pf_halfx_halfy_8x8; 149aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_interpred_t *pf_fullx_fully_8x8; 150aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 151aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 152aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_interpolate_t *pf_interpolate; 153aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_copy_mb_t *pf_copy_mb; 154aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 155aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_memset0_one_16bit_buf_t *pf_memset_16bit_8x8_linear_block; 156aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_memset_8bit_t *pf_memset_8bit_8x8_block; 157aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_copy_yuv420p_buf_t *pf_copy_yuv420p_buf; 158aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_fmt_conv_yuv420p_to_yuv422ile_t *pf_fmt_conv_yuv420p_to_yuv422ile; 159aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_fmt_conv_yuv420p_to_yuv420sp_t *pf_fmt_conv_yuv420p_to_yuv420sp_uv; 160aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pf_fmt_conv_yuv420p_to_yuv420sp_t *pf_fmt_conv_yuv420p_to_yuv420sp_vu; 161aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 162aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani stream_t s_bit_stream; 163aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* @ */ 164aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 165aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_is_mpeg2; /* 0 if stream is MPEG1 1 otherwise */ 166aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frame_width; /* Width of the frame */ 167aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frame_height; /* Height of the frame */ 168aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_picture_width; 169aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_horizontal_size; 170aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_vertical_size; 171aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_create_max_width; 172aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_create_max_height; 173aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_reinit_max_width; 174aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_reinit_max_height; 175aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_header_done; 176aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_decode_header; 177aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 178aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_mb_x; 179aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_mb_y; 180aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_num_horiz_mb; 181aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_num_vert_mb; 182aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_num_flds_decoded; 183aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_pic_buf_mg; 184aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 185aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_frm_buf_stride; /* for display Buffer */ 186aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 187aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_field_dct; 188aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_read_dct_type; 189aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 190aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_read_motion_type; 191aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_motion_type; 192aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 193aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani const UWORD16 *pu2_mb_type; 194aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_fld_pic; 195aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frm_pic; 196aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 197aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t s_cur_frm_buf; 198aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 199aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_fld_parity; 200aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_def_dc_pred[MAX_COLR_COMPS]; 201aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 202aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Variables related to Motion Vector predictors */ 203aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 204aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 ai2_pred_mv[2][2][2]; 205aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_pred_direction_t e_mb_pred; 206aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 au2_fcode_data[2]; 207aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 208aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Variables related to reference pictures */ 209aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t as_recent_fld[2][2]; 210aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 211aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 u1_quant_scale; 212aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_num_mbs_left; 213aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_first_mb; 214aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_num_skipped_mbs; 215aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 216aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *pu1_inv_scan_matrix; 217aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 218aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_progressive_sequence; 219aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_pic_type_t e_pic_type; 220aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 221aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_full_pel_forw_vector; 222aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_forw_f_code; 223aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_full_pel_back_vector; 224aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_back_f_code; 225aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 226aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD16 ai2_mv[2][2][2]; /* Motion vectors */ 227aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 228aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Bitstream code present in Picture coding extension */ 229aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 au2_f_code[2][2]; 230aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_intra_dc_precision; 231aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_picture_structure; 232aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_top_field_first; 233aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frame_pred_frame_dct; 234aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_concealment_motion_vectors; 235aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_q_scale_type; 236aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_intra_vlc_format; 237aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_alternate_scan; 238aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_repeat_first_field; 239aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_progressive_frame; 240aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 241aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 242aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Bitstream code related to frame rate of the bitstream */ 243aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frame_rate_code; 244aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frame_rate_extension_n; 245aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_frame_rate_extension_d; 246aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_framePeriod; /* Frame period in milli seconds */ 247aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 248aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Members related to display dimensions of bitstream */ 249aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* The size values may not be returned right now. But they are read */ 250aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* and can be returned if there is a requirement. */ 251aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_display_horizontal_size; 252aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_display_vertical_size; 253aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_aspect_ratio_info; 254aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 255aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Members related to motion compensation */ 256aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t s_mc_fw_buf; 257aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t s_mc_bk_buf; 258aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t s_mc_buf; 259aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani mb_mc_params_t as_mb_mc_params[2][2]; 260aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t as_ref_buf[2][2]; 261aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_mb_type_t s_mb_type; 262aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 263aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani yuv_buf_t s_dest_buf; 264aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 265aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Variable to handle intra MB */ 266aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_prev_intra_mb; 267aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_coded_mb; 268aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 269aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Bidirect function pointers */ 270aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani const struct _dec_mb_params_t *ps_func_bi_direct; 271aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 272aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Forw or Back function pointers */ 273aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani const struct _dec_mb_params_t *ps_func_forw_or_back; 274aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 275aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 276aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* CBP of the current MB */ 277aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_cbp; 278aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_video_scratch; 279aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 280aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 281aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* For global error handling */ 282aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_stack_cntxt; 283aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 284aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* @ */ 285aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_chromaFormat; 286aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_xdmBufID; 287aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_num_mem_records; 288aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* For holding memRecords */ 289aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_memTab; 290aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 291aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 u1_flushfrm; 292aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 u1_flushcnt; 293aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_yuv_buf_t as_frame_buf[MAX_FRAME_BUFFER]; 294aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_yuv_buf_t ps_yuv_buf; 295aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 296aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_get_display_frame_op_t s_disp_op; 297aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 298aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 299aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_non_zero_cols; 300aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_non_zero_rows; 301aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 302aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_num_frames_decoded; 303aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 304aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Adding error code variable to signal benign errors. */ 305aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_error_code; 306aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 307aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_num_cores; 308aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 309aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 u1_first_frame_done; 310aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 311aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_codec_thread_handle; 312aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *ps_dec_state_multi_core; 313aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_inp_ts; 314aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pic_buf_t *ps_cur_pic; 315aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pic_buf_t *ps_disp_pic; 316aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pic_buf_t *aps_ref_pics[2]; 317aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 318aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_disp_buf_id; 319aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_cur_buf_id; 320aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_yuv_buf_t *ps_disp_frm_buf; 321aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 322aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_share_disp_buf; 323aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_pic_buf_base; 324aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 325aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani disp_mgr_t s_disp_mgr; 326aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *pu1_chroma_ref_buf[BUF_MGR_MAX_CNT]; 327aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_out_bufdesc_t as_disp_buffers[BUF_MGR_MAX_CNT]; 328aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 329aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Flag to signal last coeff in a 8x8 block is one 330aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani after mismatch contol */ 331aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_last_value_one; 332aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 333aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_start_mb_y; 334aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_end_mb_y; 335aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 336aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 337aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Job queue buffer base 338aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 339aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_jobq_buf; 340aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 341aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 342aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Job Queue mem tab size 343aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 344aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_jobq_buf_size; 345aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 346aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /** 347aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Job Queue context 348aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani */ 349aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_jobq; 350aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 351aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Pointer to input bitstream */ 352aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *pu1_inp_bits_buf; 353aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 354aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Number of bytes in the input bitstream */ 355aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_num_inp_bytes; 356aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 357aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Bytes consumed */ 358aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_bytes_consumed; 359aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 360aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IVD_ARCH_T e_processor_arch; 361aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 362aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IVD_SOC_T e_processor_soc; 363aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 364aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_frame_decoded; 365aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3668520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar /** Flag to enable deinterlace */ 3678520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar UWORD32 u4_deinterlace; 3688520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 3698520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar /** Deinterlacer context */ 3708520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar void *pv_deinterlacer_ctxt; 3718520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 3728520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar /** Picture buffer held by deinterlacer */ 3738520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar pic_buf_t *ps_deint_pic; 3748520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 3758520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar /** Buffer used after deinterlacer for format conversion */ 3768520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar UWORD8 *pu1_deint_fmt_buf; 3778520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 378aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}dec_state_t; 379aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 380aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 381aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 382aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 383aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef void (*func_decmb_params)(dec_state_t *); 384aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef void (*mc_funcs)(dec_state_t *); 385aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct _dec_mb_params_t 386aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 387aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani func_decmb_params pf_func_mb_params; 388aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_mb_type_t s_mb_type; 389aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani mc_funcs pf_mc; 390aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}dec_mb_params_t; 391aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 392aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 393aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 394aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_THREADS 4 395aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 396aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 397aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_MB_ROWS (MAX_HEIGHT / 16) // number of rows for 1080p 398aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 399aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct _dec_state_multi_core 400aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 401aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani // contains the decoder state of decoder for each thread 402aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani dec_state_t *ps_dec_state[MAX_THREADS]; 403aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 au4_thread_launched[MAX_THREADS]; 404aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani // number of rows: first thread will populate the row offsets and update 405aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani // row_offset_cnt. Other threads should pick up offset from this thread 406aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani // and start decoding 407aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 au4_row_offset[MAX_MB_ROWS]; 408aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani volatile UWORD32 u4_row_offset_cnt; 409aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}dec_state_multi_core_t; 410aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 411aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 412aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 413aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif /* #ifndef __IMPEG2D_STRUCTS_H__ */ 414