18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/******************************************************************************
28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project
48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License");
68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License.
78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at:
88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0
108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software
128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS,
138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and
158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License.
168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *****************************************************************************
188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @file
248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  ih264e_structs.h
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Structure definitions used in the encoder
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @author
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Harish
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  None
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef IH264E_STRUCTS_H_
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IH264E_STRUCTS_H_
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
42134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/* Structure definitions                                                    */
43134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/*****************************************************************************/
44134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
45134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/* Early declaration of structs */
46134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Ktypedef struct _codec_t codec_t;
47134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Ktypedef struct _proc_t process_ctxt_t;
48134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
49134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
50134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/*****************************************************************************/
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Extern Function type definitions                                          */
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      intra prediction filters leaf level
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_intra_pred)(UWORD8 *pu1_src, UWORD8 *pu1_dst,
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                              WORD32 src_strd, WORD32 dst_strd,
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                              WORD32 ui_neighboravailability);
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      inter prediction filters leaf level
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_inter_pred_luma_bilinear)(UWORD8 *pu1_src1, UWORD8 *pu1_src2, UWORD8 *pu1_dst,
708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 src_strd1, WORD32 src_strd2, WORD32 dst_strd,
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 height, WORD32 width);
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      fwd transform leaf level
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_trans_quant)(UWORD8*pu1_src, UWORD8 *pu1_pred, WORD16 *pi2_out,
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 i4_src_stride, UWORD32 u4_pred_stride, UWORD32 u4_dst_stride,
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               const UWORD16 *pu2_scale_mat, const UWORD16 *pu2_thresh_mat,
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD32 u4_qbit, UWORD32 u4_round_fact, UWORD8 *pu1_nnz);
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_iquant_itrans)(WORD16 *pi2_src, UWORD8 *pu1_pred, UWORD8 *pu1_out,
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                 WORD32 i4_src_stride, UWORD32 u4_pred_stride, UWORD32 u4_out_stride,
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                 const UWORD16 *pu2_iscale_mat, const UWORD16 *pu2_weigh_mat,
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                 UWORD32 qp_div, WORD32 *pi4_tmp);
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Padding leaf level
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_pad)(UWORD8 *pu1_src, WORD32 src_strd, WORD32 wd, WORD32 pad_size);
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      memory handling leaf level
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_memcpy)(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_memset)(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_memcpy_mul8)(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_memset_mul8)(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Sad computation
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_compute_sad)(UWORD8 *pu1_src, UWORD8 *pu1_est,
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD32 src_strd, UWORD32 est_strd,
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 i4_max_sad, WORD32 *pi4_mb_distortion);
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief     Intra mode eval:encoder level
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_evaluate_intra_modes)(UWORD8 *pu1_src, UWORD8 *pu1_ngbr_pels_i16, UWORD8 *pu1_dst,
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        UWORD32 src_strd, UWORD32 dst_strd,
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        WORD32 u4_n_avblty, UWORD32 *u4_intra_mode,
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        WORD32 *pu4_sadmin,
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                        UWORD32 u4_valid_intra_modes);
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_evaluate_intra_4x4_modes)(UWORD8 *pu1_src, UWORD8 *pu1_ngbr_pels, UWORD8 *pu1_dst,
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD32 src_strd, UWORD32 dst_strd,
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 u4_n_avblty, UWORD32 *u4_intra_mode,
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 *pu4_sadmin,
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD32 u4_valid_intra_modes, UWORD32 u4_lambda,
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD32 u4_predictd_mode);
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief     half_pel generation :encoder level
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_sixtapfilter_horz)(UWORD8 *pu1_src, UWORD8 *pu1_dst,
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                     WORD32 src_strd, WORD32 dst_strd);
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_sixtap_filter_2dvh_vert)(UWORD8 *pu1_src, UWORD8 *pu1_dst1, UWORD8 *pu1_dst2,
1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 src_strd, WORD32 dst_strd,
1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 *pi16_pred1,
1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                           WORD32 pi16_pred1_strd);
1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief     color space conversion
1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_fmt_conv_420p_to_420sp)(UWORD8 *pu1_y_src, UWORD8 *pu1_u_src, UWORD8 *pu1_v_src,
1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                          UWORD8 *pu1_y_dst, UWORD8 *pu1_uv_dst,
1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                          UWORD16 u2_height, UWORD16 u2_width,
1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                          UWORD16 src_y_strd, UWORD16 src_u_strd, UWORD16 src_v_strd,
1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                          UWORD16 dst_y_strd, UWORD16 dst_uv_strd,
1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                          UWORD32 convert_uv_only);
1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void (*pf_fmt_conv_422ile_to_420sp)(UWORD8 *pu1_y_buf, UWORD8 *pu1_u_buf, UWORD8 *pu1_v_buf,
1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            UWORD8 *pu1_422i_buf,
1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 u4_y_width, WORD32 u4_y_height, WORD32 u4_y_stride,
1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 u4_u_stride, WORD32 u4_v_stride,
1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                            WORD32 u4_422i_stride);
1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
166134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
167134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/**
168134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K******************************************************************************
169134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K *  @brief     ME evaluation
170134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K******************************************************************************
171134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */
172134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Ktypedef void ih264e_compute_me_ft(process_ctxt_t *);
173134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
174134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/**
175134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K******************************************************************************
176134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K *  @brief     SKIP decision
177134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K******************************************************************************
178134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */
179134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Ktypedef WORD32 ih264e_skip_params_ft(process_ctxt_t *, WORD32);
180134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
181134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Enums                                                                     */
1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @enum  CODEC_STATE_T
1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief codec state
1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef enum
1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    INIT_DONE,
1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    HEADER_DONE,
1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    FIRST_FRAME_DONE,
1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} CODEC_STATE_T;
1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @enum  JOBQ_CMD_T
2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief list of job commands (used during job instantiation)
2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef enum
2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    CMD_PROCESS,
2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    CMD_ENTROPY,
2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    CMD_FMTCONV,
2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    CMD_ME,
2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}JOBQ_CMD_T;
2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Structures                                                                */
2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * PU information
2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
224134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
225134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     *  Motion Vector
226134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
227134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    mv_t s_mv;
2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
230134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     *  Ref index
2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
232134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD8   i1_ref_idx;
233134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
234134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K} enc_pu_mv_t;
235134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
236134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
237134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/*
238134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K * Total Pu info for an MB
239134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */
240134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Ktypedef struct
241134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K{
242134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
243134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /* Array with ME info for all lists */
244134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t  s_me_info[2];
2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  PU X position in terms of min PU (4x4) units
2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32     b4_pos_x        : 4;
2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  PU Y position in terms of min PU (4x4) units
2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32     b4_pos_y        : 4;
2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  PU width in pixels = (b4_wd + 1) << 2
2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32     b4_wd           : 2;
2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  PU height in pixels = (b4_ht + 1) << 2
2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32     b4_ht           : 2;
2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
267134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     *  Intra or Inter flag for each partition - 0 or 1
268134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
269134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD32     b1_intra_flag   : 1;
270134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
271134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
272134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     *  PRED_L0, PRED_L1, PRED_BI
2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
274134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD32     b2_pred_mode    : 2;
275134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} enc_pu_t;
2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Descriptor of raw buffer                                     */
2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    iv_raw_buf_t                            s_raw_buf;
2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Lower 32bits of time stamp corresponding to the above buffer */
2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_timestamp_low;
2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Upper 32bits of time stamp corresponding to the above buffer */
2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_timestamp_high;
2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to indicate if the current buffer is last buffer */
2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_is_last;
2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to indicate if mb info is sent along with input buffer     */
2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_mb_info_type;
2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to indicate the size of mb info structure                  */
2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_mb_info_size;
2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Buffer containing mb info if mb_info_type is non-zero           */
3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void                                    *pv_mb_info;
3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to indicate if pic info is sent along with input buffer     */
3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_pic_info_type;
3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Buffer containing pic info if mb_info_type is non-zero           */
3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void                                    *pv_pic_info;
3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}inp_buf_t;
3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Descriptor of bitstream buffer                                     */
3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    iv_bits_buf_t                           s_bits_buf;
3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Lower 32bits of time stamp corresponding to the above buffer */
3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_timestamp_low;
3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Upper 32bits of time stamp corresponding to the above buffer */
3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_timestamp_high;
3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to indicate if the current buffer is last buffer */
3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_is_last;
3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}out_buf_t;
3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Descriptor of picture buffer                                     */
3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t                               s_pic_buf;
3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Lower 32bits of time stamp corresponding to the above buffer */
3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_timestamp_low;
3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Upper 32bits of time stamp corresponding to the above buffer */
3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_timestamp_high;
3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to indicate if the current buffer is last buffer */
3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                 u4_is_last;
3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Picture count corresponding to current picture */
3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32                                  i4_pic_cnt;
3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}rec_buf_t;
3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** maximum width for which codec should request memory requirements    */
3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_wd;
3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** maximum height for which codec should request memory requirements   */
3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_ht;
3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum number of reference frames                                  */
3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_ref_cnt;
3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum number of reorder frames                                    */
3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_reorder_cnt;
3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum level supported                                             */
3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_level;
3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input color format                                                  */
3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_COLOR_FORMAT_T                           e_inp_color_fmt;
3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable - To be used only for debugging/testing      */
3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_recon;
3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Recon color format                                                  */
3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_COLOR_FORMAT_T                           e_recon_color_fmt;
3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Encoder Speed preset - Value between 0 (slowest) and 100 (fastest)  */
3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IVE_SPEED_CONFIG                            u4_enc_speed_preset;
3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Rate control mode                                                   */
3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IVE_RC_MODE_T                               e_rc_mode;
3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum frame rate to be supported                                  */
3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_framerate;
3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum bitrate to be supported                                     */
3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_bitrate;
3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum number of consecutive  B frames                             */
385134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD32                                     u4_num_bframes;
3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Content type Interlaced/Progressive                                 */
3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_CONTENT_TYPE_T                           e_content_type;
3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum search range to be used in X direction                      */
3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_srch_rng_x;
3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum search range to be used in Y direction                      */
3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_max_srch_rng_y;
3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Slice Mode                                                          */
3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IVE_SLICE_MODE_T                            e_slice_mode;
3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Slice parameter                                                     */
4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_slice_param;
4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Processor architecture                                          */
4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_ARCH_T                                   e_arch;
4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** SOC details                                                     */
4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_SOC_T                                    e_soc;
4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input width to be sent in bitstream                                */
4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_disp_wd;
4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input height to be sent in bitstream                               */
4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_disp_ht;
4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input width                                                     */
4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_wd;
4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input height                                                    */
4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_ht;
4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input stride                                                    */
4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_strd;
4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Source frame rate                                               */
4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_src_frame_rate;
4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Target frame rate                                               */
4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_tgt_frame_rate;
4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Target bitrate in kilobits per second                           */
4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_target_bitrate;
4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Force current frame type                                        */
4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_PICTURE_CODING_TYPE_T                    e_frame_type;
4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Encoder mode                                                    */
4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IVE_ENC_MODE_T                              e_enc_mode;
4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set initial Qp for I pictures                                   */
4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_i_qp;
4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set initial Qp for P pictures                                   */
4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_p_qp;
4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set initial Qp for B pictures                                   */
4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_b_qp;
4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set minimum Qp for I pictures                                   */
4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_i_qp_min;
4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set maximum Qp for I pictures                                   */
4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_i_qp_max;
4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set minimum Qp for P pictures                                   */
4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_p_qp_min;
4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set maximum Qp for P pictures                                   */
4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_p_qp_max;
4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set minimum Qp for B pictures                                   */
4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_b_qp_min;
4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Set maximum Qp for B pictures                                   */
4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_b_qp_max;
4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Adaptive intra refresh mode                                     */
4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IVE_AIR_MODE_T                              e_air_mode;
4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Adaptive intra refresh period in frames                         */
4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_air_refresh_period;
4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** VBV buffer delay                                                */
4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_vbv_buffer_delay;
4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** VBV buffer size                                                 */
4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_vbv_buf_size;
4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Number of cores to be used                                      */
4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_num_cores;
4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** ME speed preset - Value between 0 (slowest) and 100 (fastest)      */
4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_me_speed_preset;
4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable half pel motion estimation               */
4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_hpel;
4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable quarter pel motion estimation            */
4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_qpel;
4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable intra 4x4 analysis                       */
4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_intra_4x4;
4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable intra 8x8 analysis                       */
4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_intra_8x8;
4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable intra 16x16 analysis                     */
4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_intra_16x16;
4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to enable/disable fast SAD approximation                   */
4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_fast_sad;
5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*flag to enable/disable alternate reference frames                 */
5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_alt_ref;
5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*Flag to enable/disable computation of SATDQ in ME*/
5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_enable_satqd;
5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*Minimum SAD to search for*/
5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32                                     i4_min_sad;
5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum search range in X direction for farthest reference      */
5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_srch_rng_x;
5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Maximum search range in Y direction for farthest reference      */
5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_srch_rng_y;
5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** I frame interval                                                */
5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_i_frm_interval;
5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** IDR frame interval                                              */
5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_idr_frm_interval;
5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Disable deblock level (0: Enable completely, 3: Disable completely */
5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_disable_deblock_level;
5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Profile                                                         */
5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_PROFILE_T                                e_profile;
5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Lower 32bits of time stamp corresponding to input buffer,
5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * from which this command takes effect                             */
5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_timestamp_low;
5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Upper 32bits of time stamp corresponding to input buffer,
5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * from which this command takes effect                             */
5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_timestamp_high;
5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Flag to say if the current config parameter set is valid
5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Will be zero to start with and will be set to 1, when configured
5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Once encoder uses the parameter set, this will be set to zero */
5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_is_valid;
5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Command associated with this config param set */
5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IVE_CONTROL_API_COMMAND_TYPE_T              e_cmd;
5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input width in mbs                                                    */
5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     i4_wd_mbs;
5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Input height in mbs                                                   */
5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     i4_ht_mbs;
5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** entropy coding mode flag                                              */
5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_entropy_coding_mode;
5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** enable weighted prediction                                            */
5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_weighted_prediction;
5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** enable constrained intra prediction                                   */
5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_constrained_intra_pred;
5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Pic info type */
5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_pic_info_type;
5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB info type
5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32                                     u4_mb_info_type;
5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
566983e1aecd4739d2a558228e3fb6f9895333f25d4Doney Alex    /** VUI structure                                                         */
567983e1aecd4739d2a558228e3fb6f9895333f25d4Doney Alex    vui_t                                       s_vui;
568983e1aecd4739d2a558228e3fb6f9895333f25d4Doney Alex
5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}cfg_params_t;
5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Structure to hold format conversion context */
5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Current row for which format conversion should be done */
5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_row;
5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Number of rows for which format conversion should be done */
5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_num_rows;
5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}fmt_conv_t;
5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Structure to represent a processing job entry
5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Command
5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cmd;
5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB x of the starting MB
5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_mb_x;
5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB y of the starting MB
6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_mb_y;
6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs that need to be processed in this job
6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_mb_cnt;
6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Process contexts base index
6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Will toggle between 0 and MAX_PROCESS_THREADS
6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_proc_base_idx;
6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} job_t;
6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Structure to represent a MV Bank buffer
6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pointer to hold num PUs each MB in a picture
6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_mb_pu_cnt;
6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to hold enc_pu_t for each PU in a picture
6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pic_pu;
6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to hold PU map for each MB in a picture
6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pic_pu_map;
6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to hold the Slice map
6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 *pu1_pic_slice_map;
6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Absolute POC for the current MV Bank
6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_abs_poc;
6498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer Id
6528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32     i4_buf_id;
6548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} mv_buf_t;
6568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
6598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Reference set containing pointers to MV buf and pic buf
6608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
6618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
6628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Picture count */
6648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32    i4_pic_cnt;
6658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** POC */
6678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32    i4_poc;
6688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** picture buffer */
6708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t *ps_pic_buf;
6718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** mv buffer */
6738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_buf_t  *ps_mv_buf;
6748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}ref_set_t;
6768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
6788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current PPS
6828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pps_t *ps_pps;
6848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current SPS
6878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    sps_t *ps_sps;
6898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current slice header structure
6928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr;
6948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
6978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
6998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
7028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
7058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current PU structure - set to MB enc_pu_t pointer at the start of MB processing and incremented
7088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * for every TU
7098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pu;
7118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to frame level enc_pu_t for the current frame being parsed
7148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * where MVs and Intra pred modes will be updated
7158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pic_pu;
7178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pointer to hold num PUs each MB in a picture
7208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_mb_pu_cnt;
7228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** PU Index map per MB. The indices in this map are w.r.t picture pu array and not
7248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * w.r.t MB pu array.
7258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This will be used during mv prediction and since neighbors will have different MB pu map
7268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * it will be easier if they all have indices w.r.t picture level PU array rather than MB level
7278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * PU array.
7288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pu1_pic_pu_map is map w.r.t MB's enc_pu_t array
7298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_pic_pu_idx_map;
7318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Pointer to pu_map for the current frame being parsed
7348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * where MVs and Intra pred modes will be updated
7358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 *pu1_pic_pu_map;
7378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  PU count in current MB
7408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 i4_mb_pu_cnt;
7428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  PU count in current MB
7458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 i4_mb_start_pu_idx;
7478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  Top availability for current MB level
7508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_top_mb_avail;
7528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  Top right availability for current MB level
7558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_top_rt_mb_avail;
7578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  Top left availability for current MB level
7598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_top_lt_mb_avail;
7618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  left availability for current MB level
7638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_left_mb_avail;
7658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}mv_ctxt_t;
7678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
7698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
7708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
7728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
7748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
7778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
7798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a Slice in raster scan in MB units
7828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_x;
7848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a Slice in raster scan in MB units
7878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_y;
7898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Vertical strength, Two bits per edge.
7928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stored in format. BS[15] | BS[14] | .. |BS[0]
7938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_pic_vert_bs;
7958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Boundary strength, Two bits per edge.
7988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stored in format. BS[15] | BS[14] | .. |BS[0]
7998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_pic_horz_bs;
8018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Qp array stored for each mb
8048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  *pu1_pic_qp;
8068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}bs_ctxt_t;
8088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
8108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
8138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
8158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
8188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
8208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * structure that contains BS and QP frame level arrays
8238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    bs_ctxt_t s_bs_ctxt;
8258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to 0th luma pixel in current pic
8288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_cur_pic_luma;
8308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to 0th chroma pixel in current pic
8338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_cur_pic_chroma;
8358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Points to the array of slice indices which is used to identify the slice
8388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  to which each MB in a frame belongs.
8398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_slice_idx;
8418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}deblk_ctxt_t;
8438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
8478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Structure to hold data and flags for 'n' mb processing for
8488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *                deblocking , padding and half pel generation.
8498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
8508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
8518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
8528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position last processed + 1
8558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
8578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position ,current processing.
8608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
8628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs processed in a stretch
8658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_n_mbs;
8678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}n_mb_process_ctxt_t;
8698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
8738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Structure to hold coefficient info for a 4x4 subblock.
8748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  The following can be used to type-cast coefficient data that is stored
8758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  per subblock. Note that though i2_level is shown as an array that
8768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  holds 16 coefficients, only the first few entries will be valid. Next
8778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  subblocks data starts after the valid number of coefficients. Number
8788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  of non-zero coefficients will be derived using number of non-zero bits
8798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  in sig coeff map
8808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
8818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
8828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
8838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * significant coefficient map and nnz are packed in
8868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * to msb (2 bytes) and lsb (2 bytes) respectively
8878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_sig_map_nnz;
8898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array of non zero residue coefficients
8928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16  ai2_residue[16];
8948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}tu_sblk_coeff_data_t;
8968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
8998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Structure contains few common state variables such as MB indices,
9008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  current SPS, PPS etc which are to be used in the entropy thread. By keeping
9018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  it a different structure it is being explicitly signaled that these
9028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * variables are specific to entropy threads context and other threads should
9038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * not update these elements
9048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
9058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
9068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
9078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
908134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
909134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Pointer to the cabac context
910134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
911134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    cabac_ctxt_t *ps_cabac;
9128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * start of frame / start of slice flag
9158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_sof;
9178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * end of frame / end of slice flag
9208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_eof;
9228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * generate header upon request
9258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_gen_header;
9278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  seq_parameter_set_id
9308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_sps_id;
9328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of sequence parameter set structure array
9358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    sps_t *ps_sps_base;
9378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  pic_parameter_set_id
9408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_pps_id;
9428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of Picture parameter set structure array
9458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pps_t *ps_pps_base;
9478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current slice idx
9508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_slice_idx;
9528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Points to the array of slice indices which is used to identify the independent slice
9558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * to which each MB in a frame belongs.
9568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_slice_idx;
9588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of slice header structure array
9618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr_base;
9638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * entropy status
9668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  *pu1_entropy_map;
9688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
9718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
9738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
9768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
9788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB start address
9818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_cnt;
9838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB start address
9868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_start_add;
9888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB end address
9918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_end_add;
9938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input width in mbs
9968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_wd_mbs;
9988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input height in mbs
10018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_ht_mbs;
10038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Bitstream structure
10068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    bitstrm_t *ps_bitstrm;
10088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  transform_8x8_mode_flag
10118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD8 i1_transform_8x8_mode_flag;
10138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  entropy_coding_mode_flag
10168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD8 u1_entropy_coding_mode_flag;
10188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the top row nnz for luma
10218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*pu1_top_nnz_luma)[4];
10238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left nnz for luma
10268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_left_nnz_luma;
10288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to zero runs before for the mb
10318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_zero_run[16];
10338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the top row nnz for chroma
10368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*pu1_top_nnz_cbcr)[4];
10388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left nnz for chroma
10418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u4_left_nnz_cbcr;
10438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb subblock coeff data
10468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_coeff_data;
10488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb subblock coeff data and number of subblocks and scan idx
10518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Incremented each time a coded subblock is processed
10528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_coeff_data;
10548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb header data
10578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_header_data;
10598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb header data and
10628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * incremented each time a coded mb is encoded
10638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_header_data;
10658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Error code during parse stage
10688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IH264E_ERROR_T i4_error_code;
10708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Void pointer to job context
10738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq, *pv_entropy_jobq;
10758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to signal end of frame
10788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_end_of_frame;
10808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Abs POC count of the frame
10838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 i4_abs_pic_order_cnt;
10858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * mb skip run
10888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
10898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 *pi4_mb_skip_run;
10908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Flag to signal end of sequence
10938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
10948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_is_last;
10958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Lower 32bits of time-stamp corresponding to the buffer being encoded
10988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
10998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_timestamp_low;
11008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Upper 32bits of time-stamp corresponding to the buffer being encoded
11038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_timestamp_high;
11058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Current Picture count - used for synchronization
11088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32  i4_pic_cnt;
11108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Number of bits consumed by header for I and P mb types
11138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_header_bits[MAX_MB_TYPE];
11158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Number of bits consumed by residue for I and P mb types
11188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_residue_bits[MAX_MB_TYPE];
11208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} entropy_ctxt_t;
11228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
11248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
11258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @brief      macro block info.
11268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
11278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
11288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
11298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb type
11328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_is_intra;
11348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb type
11378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_mb_type;
11398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * csbp
11428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_csbp;
11448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb distortion
11478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_distortion;
11498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}mb_info_t;
11518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
11538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
1154c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief     mb_hdr structures to access first few common elements of above
1155c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar* structures
1156c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1157c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1158c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1159c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1160c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1161c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1162c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * mb type and mode
1163c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1164c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    UWORD8 u1_mb_type_mode;
1165c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1166c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1167c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * CBP
1168c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1169c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    UWORD8 u1_cbp;
1170c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1171c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1172c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * MB qp delta
1173c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1174c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    UWORD8 u1_mb_qp_delta;
1175c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1176c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1177c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Element to align structure to 2 byte boundary
1178c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1179c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    UWORD8 u1_pad;
1180c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_common_t;
1181c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1182c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1183c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1184c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for I4x4 MB
1185c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1186c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1187c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1188c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1189c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1190c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1191c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1192c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1193c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1194c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1195c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Sub block modes, 2 modes per byte
1196c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1197c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    UWORD8 au1_sub_blk_modes[8];
1198c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_i4x4_t;
1199c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1200c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1201c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1202c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for I8x8 MB
1203c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1204c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1205c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1206c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1207c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1208c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1209c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1210c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1211c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1212c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1213c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1214c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Sub block modes, 2 modes per byte
1215c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1216c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    UWORD8 au1_sub_blk_modes[2];
1217c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_i8x8_t;
1218c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1219c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1220c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1221c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for I16x16 MB
1222c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1223c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1224c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1225c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1226c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1227c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1228c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1229c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1230c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1231c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_i16x16_t;
1232c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1233c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1234c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1235c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for P16x16 MB
1236c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1237c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1238c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1239c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1240c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1241c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1242c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1243c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1244c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1245c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1246c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * MV
1247c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1248c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    WORD16 ai2_mv[2];
1249c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_p16x16_t;
1250c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1251c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1252c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1253c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for PSKIP MB
1254c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1255c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1256c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1257c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1258c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1259c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1260c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1261c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1262c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1263c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_pskip_t;
1264c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1265c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1266c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1267c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for B16x16 MB
1268c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1269c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1270c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1271c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1272c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1273c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1274c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1275c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1276c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1277c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1278c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1279c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * MV
1280c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1281c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    WORD16 ai2_mv[2][2];
1282c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_b16x16_t;
1283c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1284c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1285c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1286c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for BDIRECT MB
1287c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1288c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1289c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1290c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1291c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1292c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1293c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1294c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1295c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1296c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_bdirect_t;
1297c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1298c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1299c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1300c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      macro block info for PSKIP MB
1301c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1302c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1303c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef struct
1304c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1305c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    /**
1306c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     * Common MB header params
1307c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar     */
1308c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_common_t common;
1309c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1310c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_bskip_t;
1311c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1312c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1313c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1314c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  @brief      Union of mb_hdr structures for size calculation
1315c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*  and to access first few common elements
1316c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
1317c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar*/
1318c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar
1319c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakartypedef union
1320c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar{
1321c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_i4x4_t       mb_hdr_i4x4;
1322c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_i8x8_t       mb_hdr_i8x8;
1323c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_i16x16_t     mb_hdr_i16x16;
1324c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_p16x16_t     mb_hdr_p16x16;
1325c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_pskip_t      mb_hdr_pskip;
1326c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_b16x16_t     mb_hdr_b16x16;
1327c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_bdirect_t    mb_hdr_bdirect;
1328c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar    mb_hdr_bskip_t      mb_hdr_bskip;
1329c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar}mb_hdr_t;
1330c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar/**
1331c7d9c91417bf69c783f390e48dbbe7aafb45bbdaHarish Mahendrakar******************************************************************************
13328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @brief      structure presenting the neighbor availability of a mb
13338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  or subblk or any other partition
13348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
13358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
13368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
13378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
13388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left blk/subblk/partition
13408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_a;
13428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top blk/subblk/partition
13458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_b;
13478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * topright blk/subblk/partition
13508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_c;
13528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * topleft blk/subblk/partition
13558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_d;
13578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}block_neighbors_t;
13598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
13618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
13628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      MB info  related variables used during NMB processing
13638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
13648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
13658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
13668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
13678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_mb_type;
13688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad;
13698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad_reached;
13708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_mb_cost;
13718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_mb_distortion;
13728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1373134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t as_skip_mv[4];
13748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1375134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t as_pred_mv[2];
13768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    block_neighbors_t s_ngbr_avbl;
13788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
13808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer to hold best subpel buffer in each MB of NMB
13818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_best_sub_pel_buf;
13838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
13858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stride for subpel buffer
13868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bst_spel_buf_strd;
13888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}mb_info_nmb_t;
13908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
13928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
13938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Pixel processing thread context
13948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
13958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1396134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Kstruct _proc_t
13978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
13988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * entropy context
14008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    entropy_ctxt_t s_entropy;
14028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * me context
14058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    me_ctxt_t s_me_ctxt;
14078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to codec context
14108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    codec_t *ps_codec;
14128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * N mb process contest
14158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    n_mb_process_ctxt_t s_n_mb_ctxt;
14178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Source pointer to current MB luma
14208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_luma;
14228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Source pointer to current MB chroma
14258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_chroma;
14278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Recon pointer to current MB luma
14308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_luma;
14328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Recon pointer to current MB chroma
14358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_chroma;
14378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Ref pointer to current MB luma
14408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1441134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_luma[MAX_REF_PIC_CNT];
14428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Ref pointer to current MB chroma
14458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1446134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_chroma[MAX_REF_PIC_CNT];
14478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to luma plane of input buffer (base :: mb (0,0))
14508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_luma_base;
14528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to luma plane of reconstructed buffer (base :: mb (0,0))
14558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_luma_base;
14578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to luma plane of ref buffer (base :: mb (0,0))
14608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1461134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_luma_base[MAX_REF_PIC_CNT];
14628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to  chroma plane of input buffer (base :: mb (0,0))
14658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_chroma_base;
14678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
14698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer for color space conversion of luma
14708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_y_csc_buf;
14728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
14748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer for color space conversion of luma
14758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_uv_csc_buf;
14788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to  chroma plane of reconstructed buffer (base :: mb (0,0))
14818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_chroma_base;
14838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to  chroma plane of reconstructed buffer (base :: mb (0,0))
14868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1487134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_chroma_base[MAX_REF_PIC_CNT];
14888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to ME NMB info
14918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_nmb_t *ps_nmb_info;
14938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_nmb_t *ps_cur_mb;
14958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
149753c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo     * source luma stride
14988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_src_strd;
15008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
150253c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo     * source chroma stride
150353c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo     */
150453c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo    WORD32 i4_src_chroma_strd;
150553c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo
150653c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo    /**
15078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * recon stride & ref stride
15088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * (strides for luma and chroma are the same)
15098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_rec_strd;
15118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Offset for half pel x plane from the pic buf
15148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_half_x_offset;
15168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Offset for half pel y plane from half x plane
15198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_half_y_offset;
15218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Offset for half pel xy plane from half y plane
15248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_half_xy_offset;
15268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (temp buffer 1)
15298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb;
15318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra 16x16
15348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_16x16;
15368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra 16x16_plane
15398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_16x16_plane;
15418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra chroma
15448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_chroma;
15468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra chroma plane
15498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_chroma_plane;
15518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * temp. reference buffer ptr for intra 4x4 when rdopt is on
15548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_ref_mb_intra_4x4;
15568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * prediction buffer stride
15598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pred_strd;
15618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * transform buffer pointer (temp buffer 2)
15648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 *pi2_res_buf;
15668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * temp. transform buffer ptr for intra 4x4 when rdopt is on
15698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 *pi2_res_buf_intra_4x4;
15718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * transform buffer stride
15748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_res_strd;
15768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * scratch buffer for inverse transform (temp buffer 3)
15798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_scratch_buff;
15818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame num
15848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_frame_num;
15868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * start address of frame / sub-frame
15898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_frame_strt_add;
15918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  IDR pic
15948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_idr;
15968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  idr_pic_id
15998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_idr_pic_id;
16018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input width in mbs
16048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_wd_mbs;
16068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input height in mbs
16098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_ht_mbs;
16118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  slice_type
16148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_slice_type;
16168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current slice idx
16198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_slice_idx;
16218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
16248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
16268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
16298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
16318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a Slice in raster scan in MB units
16348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_x;
16368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a Slice in raster scan in MB units
16398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_y;
16418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  mb type
16448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_mb_type;
16468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  is intra
16498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_intra;
16518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb neighbor availability pointer
16548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    block_neighbors_t *ps_ngbr_avbl;
16568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * lambda (lagrange multiplier for cost computation)
16598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_lambda;
16618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb distortion
16648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_distortion;
16668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb cost
16698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_cost;
16718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
16738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_mb_16 - ngbr avbl of curr mb                        */
16748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_sb_8 - ngbr avbl of all 8x8 sub blocks of curr mb   */
16758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_sb_4 - ngbr avbl of all 4x4 sub blocks of curr mb   */
16768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_mb_c - chroma ngbr avbl of curr mb                  */
16778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
16788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_ngbr_avbl_16x16_mb;
16798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  ai4_neighbor_avail_8x8_subblks[4];
16808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_ngbr_avbl_4x4_subblks[16];
16818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_chroma_neighbor_avail_8x8_mb;
16828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array to store the mode of mb sub blocks
16858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_intra_luma_mb_4x4_modes[16];
16878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array to store the predicted mode of mb sub blks
16908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_predicted_intra_luma_mb_4x4_modes[16];
16928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * macro block intra 16x16 mode
16958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  u1_l_i16_mode;
16978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array to store the mode of the macro block intra 8x8 4 modes
17008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_intra_luma_mb_8x8_modes[4];
17028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * intra chroma mb mode
17058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  u1_c_i8_mode;
17078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
17098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* array to store pixels from the neighborhood for intra prediction */
17108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i16 - 16 left pels + 1 top left pel + 16 top pels = 33 pels      */
17118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i8 - 8 lpels + 1 tlpels + 8 tpels + 8 tr pels = 25 pels          */
17128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4 - 4 lpels + 1 tlpels + 4 tpels + 4 tr pels = 13 pels          */
17138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* ic - 8 left pels + 1 top left pel + 8 top pels )*2               */
17148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
17158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 au1_ngbr_pels[34];
17168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array for 8x8 intra pels filtering (temp buff 4)
17198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 au1_neighbor_pels_i8x8_unfiltered[25];
17218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of sub partitons in the inter pred MB
17248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_num_sub_partitions;
17268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pointer to hold num PUs each MB in a picture
17298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_mb_pu_cnt;
17318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the array of structures having motion vectors, size
17348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  and position of sub partitions
17358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pu;
17378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1739134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Pointer to the pu of current co-located MB in list 1
1740134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
1741134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_t *ps_colpu;
1742134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
1743134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
17448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * predicted motion vector
17458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1746134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t *ps_skip_mv;
1747134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
1748134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
1749134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * predicted motion vector
1750134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
1751134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t *ps_pred_mv;
17528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row mb syntax information base
17558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In normal working scenarios, for a given context set,
17568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * the mb syntax info pointer is identical across all process threads.
17578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * But when the hard bound on slices are enabled, in multi core, frame
17588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * is partitioned in to sections equal to set number of cores and each
17598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partition is run independently. In this scenario, a ctxt set will alone
17608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * appear to run multiple frames at a time. For this to occur, the common
17618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointers across the proc ctxt should disappear.
17628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
17638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is done by allocating MAX_PROCESS_THREADS memory and distributing
17648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * across individual ctxts when byte bnd per slice is enabled.
17658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t *ps_top_row_mb_syntax_ele_base;
17678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row mb syntax information
17708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t *ps_top_row_mb_syntax_ele;
17728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left mb syntax information
17758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t s_left_mb_syntax_ele;
17778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb syntax information
17808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t s_top_left_mb_syntax_ele;
17828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb syntax information
17858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t s_top_left_mb_syntax_ME;
17888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left mb motion vector
17918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_left_mb_pu_ME;
17938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb motion vector
17968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_top_left_mb_pu_ME;
17988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb neighbor availability pointer
18018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    block_neighbors_t s_ngbr_avbl;
18038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In case the macroblock type is intra, the intra modes of all
18068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partitions for the left mb are stored in the array below
18078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 au1_left_mb_intra_modes[16];
18098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In case the macroblock type is intra, the intra modes of all
18128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partitions for the top mb are stored in the array below
18138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
18148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In normal working scenarios, for a given context set,
18158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * the mb syntax info pointer is identical across all process threads.
18168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * But when the hard bound on slices are enabled, in multi core, frame
18178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * is partitioned in to sections equal to set number of cores and each
18188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partition is run independently. In this scenario, a ctxt set will alone
18198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * appear to run multiple frames at a time. For this to occur, the common
18208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointers across the proc ctxt should disappear.
18218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
18228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is done by allocating MAX_PROCESS_THREADS memory and distributing
18238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * across individual ctxts when byte bnd per slice is enabled.
18248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top_mb_intra_modes_base;
18268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In case the macroblock type is intra, the intra modes of all
18298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partitions for the top mb are stored in the array below
18308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top_mb_intra_modes;
18328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left mb motion vector
18358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_left_mb_pu;
18378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb motion vector
18408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_top_left_mb_pu;
18428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row motion vector info
18458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
18468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In normal working scenarios, for a given context set,
18478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * the top row pu pointer is identical across all process threads.
18488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * But when the hard bound on slices are enabled, in multi core, frame
18498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * is partitioned in to sections equal to set number of cores and each
18508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partition is run independently. In this scenario, a ctxt set will alone
18518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * appear to run multiple frames at a time. For this to occur, the common
18528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointers across the proc ctxt should disappear.
18538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
18548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is done by allocating MAX_PROCESS_THREADS memory and distributing
18558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * across individual ctxts when byte bnd per slice is enabled.
18568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_top_row_pu_base;
18588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row motion vector info
18618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_top_row_pu;
18638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_top_row_pu_ME;
18658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * coded block pattern
18688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cbp;
18708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * csbp
18738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_csbp;
18758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  number of non zero coeffs
18788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 au4_nnz[5];
18808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  number of non zero coeffs for intra 4x4 when rdopt is on
18838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 au4_nnz_intra_4x4[4];
18858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame qp & mb qp
18888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_frame_qp, u4_mb_qp;
18908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb qp previous
18938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_mb_qp_prev;
18958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * quantization parameters for luma & chroma planes
18988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    quant_params_t *ps_qp_params[3];
19008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb subblock coeff data
19038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_coeff_data;
19058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb subblock coeff data and number of subblocks and scan idx
19088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Incremented each time a coded subblock is processed
19098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_coeff_data;
19118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb header data
19148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_header_data;
19168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb header data and
19198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * incremented each time a coded mb is encoded
19208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_header_data;
19228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Signal that pic_init is called first time
19258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_first_pic_init;
19278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current MV Bank's buffer ID
19308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_mv_bank_buf_id;
19328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Void pointer to job context
19358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq, *pv_entropy_jobq;
19378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs to be processed in the current Job
19408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_cnt;
19428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * ID for the current context - Used for debugging
19458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_id;
19478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current picture buffer structure
19508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t *ps_cur_pic;
19528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current picture's mv buffer structure
19558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_buf_t *ps_cur_mv_buf;
19578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to indicate if ps_proc was initialized at least once in a frame.
19608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is needed to handle cases where a core starts to handle format
19618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * conversion jobs directly
19628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_init_done;
19648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Process status: one byte per MB
19678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_proc_map;
19698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Deblk status: one byte per MB
19728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_deblk_map;
19748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Process status: one byte per MB
19778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_me_map;
19798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
19818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Intra refresh mask.
19828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Indicates if an Mb is coded in intra mode within the current AIR interval
19838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * NOTE Refreshes after each AIR period
19848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * NOTE The map is shared between process
19858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_is_intra_coded;
19878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Disable deblock level (0: Enable completely, 3: Disable completely
19908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_disable_deblock_level;
19928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the structure that contains deblock context
19958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblk_ctxt_t s_deblk_ctxt;
19978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Points to the array of slice indices which is used to identify the independent
20008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * slice to which each MB in a frame belongs.
20018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_slice_idx;
20038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of slice header structure array
20068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr_base;
20088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of mb's to process in one loop
20118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_nmb_ntrpy;
20138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of mb's to process in one loop
20168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_nmb_me;
20188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Structure for current input buffer
20218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    inp_buf_t s_inp_buf;
20238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * api call cnt
20268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_encode_api_call_cnt;
20288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current Picture count - used for synchronization
20318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pic_cnt;
20338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Intermediate buffer for interpred leaf level functions
20368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
20378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 ai16_pred1[HP_BUFF_WD * HP_BUFF_HT];
20388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Reference picture for the current picture
2041134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * TODO: Only 2 reference assumed currently
2042134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2043134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    pic_buf_t *aps_ref_pic[MAX_REF_PIC_CNT];
2044134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2045134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2046134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Reference MV buff for the current picture
20478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2048134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    mv_buf_t *aps_mv_buf[MAX_REF_PIC_CNT];
20498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame info used by RC
20528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    frame_info_t s_frame_info;
20548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
20568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * NOTE NOT PERSISTANT INSIDE FUNCTIONS
20578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Min sad for current MB
20588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * will be populated initially
20598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Once a sad less than eq to u4_min_sad is reached, the value will be copied to the cariable
20608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32  u4_min_sad;
20628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
20648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * indicates weather we have rached minimum sa or not
20658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad_reached;
20678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current error code
20708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_error_code;
20728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
20748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Enables or disables computation of recon
20758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_compute_recon;
20778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
2079134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Temporary buffers to be used for subpel computation
20808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2081134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_subpel_buffs[SUBPEL_BUFF_CNT];
20828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
20848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer holding best sub pel values
20858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_best_subpel_buf;
20878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
20898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stride for buffer holding best sub pel
20908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bst_spel_buf_strd;
20928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2093134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K};
20948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
20968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
20978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Rate control related variables
20988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
20998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
21008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
21018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
21028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_rate_control_api;
21038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_frame_time;
21058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_time_stamp;
21078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_pd_frm_rate;
21098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame rate pull down
21128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 pre_encode_skip[MAX_CTXT_SETS];
21148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * skip frame (cbr)
21178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 post_encode_skip[MAX_CTXT_SETS];
21198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * rate control type
21228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    rc_type_e e_rc_type;
21248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pic type
21278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    picture_type_e e_pic_type;
21298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * intra cnt in previous frame
21328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 num_intra_in_prev_frame;
21348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * avg activity of prev frame
21378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_avg_activity;
21398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}rate_control_ctxt_t;
21418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
21438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Codec context
21448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
21458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sstruct _codec_t
21468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
21478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
2148134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Id of current pic (input order)
21498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2150134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD32 i4_poc;
21518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of encode frame API calls made
2154134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * This variable must only be used for context selection [Read only]
21558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_encode_api_call_cnt;
21578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of pictures encoded
21608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pic_cnt;
21628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of threads created
21658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_proc_thread_cnt;
21678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Mutex used to keep the control calls thread-safe
21708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_ctl_mutex;
21728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current active config parameters
21758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    cfg_params_t s_cfg;
21778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Array containing the config parameter sets
21808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    cfg_params_t as_cfg[MAX_ACTIVE_CONFIG_PARAMS];
21828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Color format used by encoder internally
21858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_COLOR_FORMAT_T e_codec_color_format;
21878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * recon stride
21908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * (strides for luma and chroma are the same)
21918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_rec_strd;
21938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to enable/disable deblocking of a frame
21968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_disable_deblk_pic;
21988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of continuous frames where deblocking was disabled
22018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_disable_deblk_pic_cnt;
22038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame type
22068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PIC_TYPE_T pic_type;
22088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame qp
22118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_frame_qp;
22138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame num
22168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_frame_num;
22188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  slice_type
22218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_slice_type;
22238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
22258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Force current frame to specific type
22268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_PICTURE_CODING_TYPE_T force_curr_frame_type;
22288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  IDR pic
22318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_idr;
22338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  idr_pic_id
22368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_idr_pic_id;
22388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flush mode
22418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_flush_mode;
22438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Encode header mode
22468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_header_mode;
22488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to indicate if header has already
22518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * been generated when i4_api_call_cnt 0
22528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_header_generated;
22548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Encode generate header
22578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_gen_header;
22598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * To signal successful completion of init
22628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_init_done;
22648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * To signal that at least one picture was decoded
22678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_first_pic_done;
22698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Reset flag - Codec is reset if this flag is set
22728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_reset_flag;
22748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current error code
22778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_error_code;
22798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * threshold residue
22828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 u4_thres_resi;
22848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * disable intra inter gating
22878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_inter_gate;
22898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds mem records passed during init.
22928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This will be used to return the mem records during retrieve call
22938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    iv_mem_rec_t *ps_mem_rec_backup;
22958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to determine if the entropy thread is active
22988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    volatile UWORD32 au4_entropy_thread_active[MAX_CTXT_SETS];
23008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Mutex used to keep the entropy calls thread-safe
23038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_entropy_mutex;
23058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Job queue buffer base
23088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq_buf, *pv_entropy_jobq_buf;
23108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Job Queue mem tab size
23138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_proc_jobq_buf_size, i4_entropy_jobq_buf_size;
23158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for MV Bank buffer manager
23188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mv_buf_mgr_base;
23208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MV Bank buffer manager
23238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mv_buf_mgr;
23258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to MV Buf structure array
23288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *ps_mv_buf;
23308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Base address for Motion Vector bank buffer
23338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mv_bank_buf_base;
23358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MV Bank size allocated
23388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_total_mv_bank_size;
23408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for Picture buffer manager for reference pictures
23438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_ref_buf_mgr_base;
23458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Picture buffer manager for reference pictures
23488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_ref_buf_mgr;
23508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of reference buffers added to the buffer manager
23538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_ref_buf_cnt;
23558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to Pic Buf structure array
23588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *ps_pic_buf;
23608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Base address for Picture buffer
23638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_buf_base;
23658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Total pic buffer size allocated
23688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_total_pic_buf_size;
23708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for Buffer manager for output buffers
23738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_out_buf_mgr_base;
23758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer manager for output buffers
23788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_out_buf_mgr;
23808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current output buffer's buffer ID
23838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_out_buf_id;
23858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of output buffers added to the buffer manager
23888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_out_buf_cnt;
23908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for Picture buffer manager for input buffers
23938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_inp_buf_mgr_base;
23958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Picture buffer manager for input buffers
23988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_inp_buf_mgr;
24008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current input buffer's buffer ID
24038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_inp_buf_id;
24058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of input buffers added to the buffer manager
24088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_inp_buf_cnt;
24108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current input buffer
24138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t *ps_inp_buf;
24158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to dpb manager structure
24188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_dpb_mgr;
24208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of Sequence parameter set structure array
24238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    sps_t *ps_sps_base;
24258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of Picture parameter set structure array
24288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pps_t *ps_pps_base;
24308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  seq_parameter_set_id
24338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_sps_id;
24358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  pic_parameter_set_id
24388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pps_id;
24408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of slice header structure array
24438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr_base;
24458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * packed residue coeff data size for 1 row of mbs
24488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_size_coeff_data;
24508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * packed header data size for 1 row of mbs
24538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_size_header_data;
24558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Processing context - One for each processing thread
24588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Create two sets, each set used for alternate frames
24598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    process_ctxt_t as_process[MAX_PROCESS_CTXT];
24618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Thread handle for each of the processing threads
24648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *apv_proc_thread_handle[MAX_PROCESS_THREADS];
24668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Thread created flag for each of the processing threads
24698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 ai4_process_thread_created[MAX_PROCESS_THREADS];
24718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Void pointer to process job context
24748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq, *pv_entropy_jobq;
24768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs processed together for better instruction cache handling
24798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_proc_nmb;
24818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Previous POC lsb
24848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_prev_poc_lsb;
24868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Previous POC msb
24898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_prev_poc_msb;
24918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Max POC lsb that has arrived till now
24948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_max_prev_poc_lsb;
24968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Context for format conversion
24998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    fmt_conv_t s_fmt_conv;
25018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Absolute pic order count
25048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_abs_pic_order_cnt;
25068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pic order count of lsb
25098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pic_order_cnt_lsb;
25118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Array giving current picture being processed in each context set
25148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 ai4_pic_cnt[MAX_CTXT_SETS];
25168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
25188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Min sad to search for
25198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad;
25218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Reference picture set
25248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ref_set_t as_ref_set[MAX_DPB_SIZE + MAX_CTXT_SETS];
25268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2527134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
25288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
25298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Air pic cnt
25308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Contains the number of pictures that have been encoded with air
25318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This value is moudulo air refresh period
25328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_air_pic_cnt;
25348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
25368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Intra refresh map
25378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stores the frames at which intra refresh should occur for a MB
25388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 *pu2_intr_rfrsh_map;
25408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
25428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Indicates if the current frame is used as a reference frame
25438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_curr_frm_ref;
25458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
2547134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Indicates if there can be non reference frames in the stream
2548134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2549134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD32 i4_non_ref_frames_in_stream;
2550134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2551134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /*
25528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for color space conversion for luma plane
25538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_y_csc_buf_base;
25558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
25578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for color space conversion foe chroma plane
25588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_uv_csc_buf_base;
25608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Function pointers for intra pred leaf level functions luma
25638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_16_l[MAX_I16x16];
25658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_8_l[MAX_I8x8];
25668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_4_l[MAX_I4x4];
25678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Function pointers for intra pred leaf level functions chroma
25708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_c[MAX_CH_I8x8];
25728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * luma core coding function pointer
25758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*luma_energy_compaction[4])(process_ctxt_t *ps_proc);
25778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * chroma core coding function pointer
25808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*chroma_energy_compaction[2])(process_ctxt_t *ps_proc);
25828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for intra blk of mb type 16x16
25858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_luma_16x16_resi_trans_dctrans_quant_ft *pf_resi_trans_dctrans_quant_16x16;
25878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for intra blk of mb type 16x16
25908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_luma_16x16_idctrans_iquant_itrans_recon_ft *pf_idctrans_iquant_itrans_recon_16x16;
25928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for 4x4 blk luma
25958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_resi_trans_quant_ft *pf_resi_trans_quant_4x4;
25978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for 4x4 blk luma
26008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_resi_trans_quant_ft *pf_resi_trans_quant_chroma_4x4;
26028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
26048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * hadamard transform and quant for a 4x4 block
26058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_hadamard_quant_ft *pf_hadamard_quant_4x4;
26078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
26098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  hadamard transform and quant for a 4x4 block
26108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_hadamard_quant_ft *pf_hadamard_quant_2x2_uv;
26128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 4x4 blk
26158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_ft *pf_iquant_itrans_recon_4x4;
26178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for chroma 4x4 blk
26208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_chroma_ft *pf_iquant_itrans_recon_chroma_4x4;
26228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 4x4 blk with only single dc coeff
26258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_ft *pf_iquant_itrans_recon_4x4_dc;
26278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for chroma 4x4 blk with only single dc coeff
26308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_chroma_ft *pf_iquant_itrans_recon_chroma_4x4_dc;
26328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
26348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Inverse hadamard transform and iquant for a 4x4 block
26358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_ihadamard_scaling_ft *pf_ihadamard_scaling_4x4;
26378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
26398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Inverse hadamard transform and iquant for a 4x4 block
26408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_ihadamard_scaling_ft *pf_ihadamard_scaling_2x2_uv;
26428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
26448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Function for interleave copy*
26458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_interleave_copy_ft *pf_interleave_copy;
26478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for 8x8 blk
26508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_resi_trans_quant_ft *pf_resi_trans_quant_8x8;
26528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 8x8 blk
26558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 4x4 blk
26588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_ft *pf_iquant_itrans_recon_8x8;
26608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for chroma MB
26638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_chroma_8x8_resi_trans_dctrans_quant_ft *pf_resi_trans_dctrans_quant_8x8_chroma;
26658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for chroma MB
26688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_idctrans_iquant_itrans_recon_ft *pf_idctrans_iquant_itrans_recon_8x8_chroma;
26708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical luma edge with blocking strength 4
26738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bs4_ft *pf_deblk_luma_vert_bs4;
26758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical chroma edge with blocking strength 4
26788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bs4_ft *pf_deblk_chroma_vert_bs4;
26808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical luma edge with blocking strength less than 4
26838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bslt4_ft *pf_deblk_luma_vert_bslt4;
26858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical chroma edge with blocking strength less than 4
26888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bslt4_ft *pf_deblk_chroma_vert_bslt4;
26908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal luma edge with blocking strength 4
26938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bs4_ft *pf_deblk_luma_horz_bs4;
26958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal chroma edge with blocking strength 4
26988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bs4_ft *pf_deblk_chroma_horz_bs4;
27008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal luma edge with blocking strength less than 4
27038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bslt4_ft *pf_deblk_luma_horz_bslt4;
27058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal chroma edge with blocking strength less than 4
27088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bslt4_ft *pf_deblk_chroma_horz_bslt4;
27108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * functions for padding
27148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_top;
27168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_bottom;
27178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_left_luma;
27188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_left_chroma;
27198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_right_luma;
27208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_right_chroma;
27218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Inter pred leaf level functions
27248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_luma_ft    *pf_inter_pred_luma_copy;
27268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_luma_ft    *pf_inter_pred_luma_horz;
27278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_luma_ft    *pf_inter_pred_luma_vert;
27288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_inter_pred_luma_bilinear  pf_inter_pred_luma_bilinear;
27298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_chroma_ft  *pf_inter_pred_chroma;
27308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * fn ptrs for compute sad routines
27338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ime_compute_sad_ft *apf_compute_sad_16x16[2];
27358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ime_compute_sad_ft *pf_compute_sad_16x8;
27368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2737134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2738134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2739134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Function pointer for computing ME
2740134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * 1 for PSLICE and 1 for BSLICE
2741134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2742134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    ih264e_compute_me_ft *apf_compute_me[2];
2743134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2744134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2745134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Function pointers for computing SKIP parameters
2746134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2747134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    ih264e_skip_params_ft *apf_find_skip_params_me[2];
2748134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
27498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * fn ptrs for memory handling operations
27518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memcpy pf_mem_cpy;
27538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memset pf_mem_set;
27548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memcpy_mul8 pf_mem_cpy_mul8;
27558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memset_mul8 pf_mem_set_mul8;
27568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * intra mode eval -encoder level function
27598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_evaluate_intra_modes pf_ih264e_evaluate_intra16x16_modes;
27618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_evaluate_intra_modes pf_ih264e_evaluate_intra_chroma_modes;
27628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_evaluate_intra_4x4_modes pf_ih264e_evaluate_intra_4x4_modes;
27638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Half pel generation function - encoder level
27658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
27668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_sixtapfilter_horz pf_ih264e_sixtapfilter_horz;
27688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_sixtap_filter_2dvh_vert pf_ih264e_sixtap_filter_2dvh_vert;
27698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * color space conversion form YUV 420P to YUV 420Sp
27728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_fmt_conv_420p_to_420sp pf_ih264e_conv_420p_to_420sp;
27748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * color space conversion form YUV 420P to YUV 420Sp
27788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_fmt_conv_422ile_to_420sp pf_ih264e_fmt_conv_422i_to_420sp;
27808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * write mb layer for a given slice I, P, B
27838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2784134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    IH264E_ERROR_T (*pf_write_mb_syntax_layer[2][3]) ( entropy_ctxt_t *ps_ent_ctxt );
27858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Output buffer
27888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    out_buf_t as_out_buf[MAX_CTXT_SETS];
27908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * recon buffer
27938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    rec_buf_t as_rec_buf[MAX_CTXT_SETS];
27958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
27968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
27978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * rate control context
27988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
27998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    rate_control_ctxt_t s_rate_control;
2800134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2801134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2802134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * input buffer queue
2803134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2804134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    inp_buf_t as_inp_list[MAX_NUM_BFRAMES];
2805134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
280663f40a8f8582f4d9cfe1668089674af18cda677cHarinarayanan K K    /**
2807aad45873352203b7dc56afa2e079b230c1b54229Harinarayanan K K     * Flag to indicate if any IDR requests are pending
280863f40a8f8582f4d9cfe1668089674af18cda677cHarinarayanan K K     */
2809aad45873352203b7dc56afa2e079b230c1b54229Harinarayanan K K    WORD32 i4_pending_idr_flag;
2810134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2811134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /*
2812134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    *Flag to indicate if we have recived the last input frame
2813134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    */
2814134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD32 i4_last_inp_buff_received;
2815134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
28168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S};
2817134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
28188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* IH264E_STRUCTS_H_ */
2819