ih264e_structs.h revision 53c6878c155d3329e947659c0d0ba1b97488e246
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
5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}cfg_params_t;
5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Structure to hold format conversion context */
5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Current row for which format conversion should be done */
5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_row;
5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Number of rows for which format conversion should be done */
5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_num_rows;
5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}fmt_conv_t;
5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Structure to represent a processing job entry
5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Command
5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cmd;
5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB x of the starting MB
5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_mb_x;
5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB y of the starting MB
5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_mb_y;
6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs that need to be processed in this job
6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_mb_cnt;
6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Process contexts base index
6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Will toggle between 0 and MAX_PROCESS_THREADS
6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 i2_proc_base_idx;
6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} job_t;
6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Structure to represent a MV Bank buffer
6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pointer to hold num PUs each MB in a picture
6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_mb_pu_cnt;
6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to hold enc_pu_t for each PU in a picture
6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pic_pu;
6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to hold PU map for each MB in a picture
6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pic_pu_map;
6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to hold the Slice map
6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 *pu1_pic_slice_map;
6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Absolute POC for the current MV Bank
6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_abs_poc;
6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer Id
6498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32     i4_buf_id;
6518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} mv_buf_t;
6538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
6568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Reference set containing pointers to MV buf and pic buf
6578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
6588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
6598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** Picture count */
6618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32    i4_pic_cnt;
6628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** POC */
6648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32    i4_poc;
6658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** picture buffer */
6678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t *ps_pic_buf;
6688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** mv buffer */
6708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_buf_t  *ps_mv_buf;
6718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}ref_set_t;
6738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
6758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
6768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current PPS
6798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pps_t *ps_pps;
6818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current SPS
6848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    sps_t *ps_sps;
6868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current slice header structure
6898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr;
6918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
6948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
6958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
6968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
6978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
6988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
6998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
7028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current PU structure - set to MB enc_pu_t pointer at the start of MB processing and incremented
7058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * for every TU
7068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pu;
7088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to frame level enc_pu_t for the current frame being parsed
7118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * where MVs and Intra pred modes will be updated
7128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pic_pu;
7148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pointer to hold num PUs each MB in a picture
7178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_mb_pu_cnt;
7198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /** PU Index map per MB. The indices in this map are w.r.t picture pu array and not
7218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * w.r.t MB pu array.
7228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This will be used during mv prediction and since neighbors will have different MB pu map
7238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * it will be easier if they all have indices w.r.t picture level PU array rather than MB level
7248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * PU array.
7258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pu1_pic_pu_map is map w.r.t MB's enc_pu_t array
7268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_pic_pu_idx_map;
7288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Pointer to pu_map for the current frame being parsed
7318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * where MVs and Intra pred modes will be updated
7328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 *pu1_pic_pu_map;
7348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  PU count in current MB
7378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 i4_mb_pu_cnt;
7398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  PU count in current MB
7428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 i4_mb_start_pu_idx;
7448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  Top availability for current MB level
7478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_top_mb_avail;
7498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  Top right availability for current MB level
7528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_top_rt_mb_avail;
7548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  Top left availability for current MB level
7568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_top_lt_mb_avail;
7588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
7598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      *  left availability for current MB level
7608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
7618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD8 u1_left_mb_avail;
7628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}mv_ctxt_t;
7648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
7668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
7678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
7698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
7718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
7748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
7768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a Slice in raster scan in MB units
7798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_x;
7818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a Slice in raster scan in MB units
7848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_y;
7868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Vertical strength, Two bits per edge.
7898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stored in format. BS[15] | BS[14] | .. |BS[0]
7908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_pic_vert_bs;
7928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
7948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Boundary strength, Two bits per edge.
7958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stored in format. BS[15] | BS[14] | .. |BS[0]
7968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
7978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_pic_horz_bs;
7988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
7998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Qp array stored for each mb
8018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  *pu1_pic_qp;
8038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}bs_ctxt_t;
8058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
8078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
8108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
8128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
8158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
8178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * structure that contains BS and QP frame level arrays
8208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    bs_ctxt_t s_bs_ctxt;
8228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to 0th luma pixel in current pic
8258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_cur_pic_luma;
8278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to 0th chroma pixel in current pic
8308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_cur_pic_chroma;
8328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Points to the array of slice indices which is used to identify the slice
8358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  to which each MB in a frame belongs.
8368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_slice_idx;
8388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}deblk_ctxt_t;
8408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
8448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Structure to hold data and flags for 'n' mb processing for
8458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *                deblocking , padding and half pel generation.
8468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
8478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
8488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
8498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position last processed + 1
8528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
8548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position ,current processing.
8578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
8598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs processed in a stretch
8628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_n_mbs;
8648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}n_mb_process_ctxt_t;
8668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
8708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Structure to hold coefficient info for a 4x4 subblock.
8718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  The following can be used to type-cast coefficient data that is stored
8728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  per subblock. Note that though i2_level is shown as an array that
8738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  holds 16 coefficients, only the first few entries will be valid. Next
8748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  subblocks data starts after the valid number of coefficients. Number
8758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  of non-zero coefficients will be derived using number of non-zero bits
8768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  in sig coeff map
8778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
8788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
8798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
8808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
8818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * significant coefficient map and nnz are packed in
8838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * to msb (2 bytes) and lsb (2 bytes) respectively
8848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_sig_map_nnz;
8868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
8888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array of non zero residue coefficients
8898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
8908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16  ai2_residue[16];
8918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}tu_sblk_coeff_data_t;
8938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
8948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
8958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
8968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Structure contains few common state variables such as MB indices,
8978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  current SPS, PPS etc which are to be used in the entropy thread. By keeping
8988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  it a different structure it is being explicitly signaled that these
8998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * variables are specific to entropy threads context and other threads should
9008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * not update these elements
9018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
9028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
9038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
9048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
905134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
906134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Pointer to the cabac context
907134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
908134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    cabac_ctxt_t *ps_cabac;
9098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * start of frame / start of slice flag
9128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_sof;
9148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * end of frame / end of slice flag
9178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_eof;
9198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * generate header upon request
9228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_gen_header;
9248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  seq_parameter_set_id
9278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_sps_id;
9298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of sequence parameter set structure array
9328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    sps_t *ps_sps_base;
9348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  pic_parameter_set_id
9378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_pps_id;
9398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of Picture parameter set structure array
9428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pps_t *ps_pps_base;
9448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current slice idx
9478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_slice_idx;
9498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Points to the array of slice indices which is used to identify the independent slice
9528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * to which each MB in a frame belongs.
9538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_slice_idx;
9558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of slice header structure array
9588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr_base;
9608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * entropy status
9638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  *pu1_entropy_map;
9658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
9688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
9708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
9738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
9758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB start address
9788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_cnt;
9808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB start address
9838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_start_add;
9858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB end address
9888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_end_add;
9908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input width in mbs
9938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_wd_mbs;
9958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
9968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
9978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input height in mbs
9988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
9998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_ht_mbs;
10008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Bitstream structure
10038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    bitstrm_t *ps_bitstrm;
10058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  transform_8x8_mode_flag
10088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD8 i1_transform_8x8_mode_flag;
10108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  entropy_coding_mode_flag
10138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD8 u1_entropy_coding_mode_flag;
10158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the top row nnz for luma
10188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*pu1_top_nnz_luma)[4];
10208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left nnz for luma
10238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_left_nnz_luma;
10258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to zero runs before for the mb
10288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_zero_run[16];
10308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the top row nnz for chroma
10338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*pu1_top_nnz_cbcr)[4];
10358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left nnz for chroma
10388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u4_left_nnz_cbcr;
10408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb subblock coeff data
10438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_coeff_data;
10458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb subblock coeff data and number of subblocks and scan idx
10488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Incremented each time a coded subblock is processed
10498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_coeff_data;
10518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb header data
10548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_header_data;
10568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb header data and
10598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * incremented each time a coded mb is encoded
10608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_header_data;
10628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Error code during parse stage
10658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IH264E_ERROR_T i4_error_code;
10678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Void pointer to job context
10708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq, *pv_entropy_jobq;
10728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to signal end of frame
10758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_end_of_frame;
10778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
10798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Abs POC count of the frame
10808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
10818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 i4_abs_pic_order_cnt;
10828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * mb skip run
10858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
10868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32 *pi4_mb_skip_run;
10878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Flag to signal end of sequence
10908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
10918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_is_last;
10928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Lower 32bits of time-stamp corresponding to the buffer being encoded
10958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
10968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_timestamp_low;
10978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
10988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
10998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Upper 32bits of time-stamp corresponding to the buffer being encoded
11008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_timestamp_high;
11028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Current Picture count - used for synchronization
11058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     WORD32  i4_pic_cnt;
11078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Number of bits consumed by header for I and P mb types
11108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_header_bits[MAX_MB_TYPE];
11128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     /**
11148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Number of bits consumed by residue for I and P mb types
11158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
11168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     UWORD32 u4_residue_bits[MAX_MB_TYPE];
11178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} entropy_ctxt_t;
11198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
11218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
11228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @brief      macro block info.
11238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
11248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
11258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
11268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb type
11298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_is_intra;
11318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb type
11348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 u2_mb_type;
11368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * csbp
11398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_csbp;
11418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb distortion
11448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_distortion;
11468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}mb_info_t;
11488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
11508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
11518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @brief      structure presenting the neighbor availability of a mb
11528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  or subblk or any other partition
11538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
11548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
11558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
11568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left blk/subblk/partition
11598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_a;
11618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top blk/subblk/partition
11648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_b;
11668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * topright blk/subblk/partition
11698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_c;
11718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
11738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * topleft blk/subblk/partition
11748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
11758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 u1_mb_d;
11768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}block_neighbors_t;
11788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
11808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
11818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      MB info  related variables used during NMB processing
11828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
11838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
11848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
11858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
11868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_mb_type;
11878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad;
11888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad_reached;
11898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_mb_cost;
11908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_mb_distortion;
11918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1192134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t as_skip_mv[4];
11938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1194134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t as_pred_mv[2];
11958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    block_neighbors_t s_ngbr_avbl;
11978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
11988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
11998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer to hold best subpel buffer in each MB of NMB
12008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_best_sub_pel_buf;
12028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
12048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stride for subpel buffer
12058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bst_spel_buf_strd;
12078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}mb_info_nmb_t;
12098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
12118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
12128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Pixel processing thread context
12138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
12148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
1215134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K Kstruct _proc_t
12168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
12178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * entropy context
12198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    entropy_ctxt_t s_entropy;
12218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * me context
12248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    me_ctxt_t s_me_ctxt;
12268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to codec context
12298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    codec_t *ps_codec;
12318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * N mb process contest
12348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    n_mb_process_ctxt_t s_n_mb_ctxt;
12368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Source pointer to current MB luma
12398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_luma;
12418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Source pointer to current MB chroma
12448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_chroma;
12468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Recon pointer to current MB luma
12498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_luma;
12518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Recon pointer to current MB chroma
12548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_chroma;
12568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Ref pointer to current MB luma
12598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1260134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_luma[MAX_REF_PIC_CNT];
12618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Ref pointer to current MB chroma
12648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1265134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_chroma[MAX_REF_PIC_CNT];
12668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to luma plane of input buffer (base :: mb (0,0))
12698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_luma_base;
12718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to luma plane of reconstructed buffer (base :: mb (0,0))
12748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_luma_base;
12768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to luma plane of ref buffer (base :: mb (0,0))
12798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1280134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_luma_base[MAX_REF_PIC_CNT];
12818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to  chroma plane of input buffer (base :: mb (0,0))
12848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_src_buf_chroma_base;
12868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
12888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer for color space conversion of luma
12898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_y_csc_buf;
12918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
12938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer for color space conversion of luma
12948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
12958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_uv_csc_buf;
12978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
12988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
12998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to  chroma plane of reconstructed buffer (base :: mb (0,0))
13008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_rec_buf_chroma_base;
13028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointer to  chroma plane of reconstructed buffer (base :: mb (0,0))
13058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1306134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_ref_buf_chroma_base[MAX_REF_PIC_CNT];
13078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to ME NMB info
13108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_nmb_t *ps_nmb_info;
13128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_nmb_t *ps_cur_mb;
13148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
131653c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo     * source luma stride
13178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_src_strd;
13198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
132153c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo     * source chroma stride
132253c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo     */
132353c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo    WORD32 i4_src_chroma_strd;
132453c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo
132553c6878c155d3329e947659c0d0ba1b97488e246Martin Storsjo    /**
13268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * recon stride & ref stride
13278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * (strides for luma and chroma are the same)
13288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_rec_strd;
13308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Offset for half pel x plane from the pic buf
13338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_half_x_offset;
13358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Offset for half pel y plane from half x plane
13388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_half_y_offset;
13408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Offset for half pel xy plane from half y plane
13438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_half_xy_offset;
13458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (temp buffer 1)
13488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb;
13508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra 16x16
13538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_16x16;
13558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra 16x16_plane
13588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_16x16_plane;
13608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra chroma
13638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_chroma;
13658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pred buffer pointer (prediction buffer for intra chroma plane
13688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_pred_mb_intra_chroma_plane;
13708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * temp. reference buffer ptr for intra 4x4 when rdopt is on
13738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_ref_mb_intra_4x4;
13758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * prediction buffer stride
13788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pred_strd;
13808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * transform buffer pointer (temp buffer 2)
13838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 *pi2_res_buf;
13858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * temp. transform buffer ptr for intra 4x4 when rdopt is on
13888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD16 *pi2_res_buf_intra_4x4;
13908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * transform buffer stride
13938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_res_strd;
13958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
13968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
13978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * scratch buffer for inverse transform (temp buffer 3)
13988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
13998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_scratch_buff;
14008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame num
14038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_frame_num;
14058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * start address of frame / sub-frame
14088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_frame_strt_add;
14108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  IDR pic
14138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_idr;
14158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  idr_pic_id
14188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_idr_pic_id;
14208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input width in mbs
14238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_wd_mbs;
14258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Input height in mbs
14288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_ht_mbs;
14308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  slice_type
14338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_slice_type;
14358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current slice idx
14388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_slice_idx;
14408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a picture in raster scan in MB units
14438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_x;
14458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a picture in raster scan in MB units
14488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_y;
14508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's x position within a Slice in raster scan in MB units
14538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_x;
14558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MB's y position within a Slice in raster scan in MB units
14588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_slice_y;
14608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  mb type
14638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_mb_type;
14658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  is intra
14688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_intra;
14708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb neighbor availability pointer
14738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    block_neighbors_t *ps_ngbr_avbl;
14758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * lambda (lagrange multiplier for cost computation)
14788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_lambda;
14808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb distortion
14838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_distortion;
14858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
14878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb cost
14888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
14898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_cost;
14908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
14918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
14928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_mb_16 - ngbr avbl of curr mb                        */
14938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_sb_8 - ngbr avbl of all 8x8 sub blocks of curr mb   */
14948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_sb_4 - ngbr avbl of all 4x4 sub blocks of curr mb   */
14958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4_ngbr_avbl_mb_c - chroma ngbr avbl of curr mb                  */
14968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
14978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_ngbr_avbl_16x16_mb;
14988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  ai4_neighbor_avail_8x8_subblks[4];
14998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_ngbr_avbl_4x4_subblks[16];
15008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_chroma_neighbor_avail_8x8_mb;
15018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array to store the mode of mb sub blocks
15048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_intra_luma_mb_4x4_modes[16];
15068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array to store the predicted mode of mb sub blks
15098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_predicted_intra_luma_mb_4x4_modes[16];
15118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * macro block intra 16x16 mode
15148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  u1_l_i16_mode;
15168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array to store the mode of the macro block intra 8x8 4 modes
15198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  au1_intra_luma_mb_8x8_modes[4];
15218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * intra chroma mb mode
15248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8  u1_c_i8_mode;
15268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
15288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* array to store pixels from the neighborhood for intra prediction */
15298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i16 - 16 left pels + 1 top left pel + 16 top pels = 33 pels      */
15308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i8 - 8 lpels + 1 tlpels + 8 tpels + 8 tr pels = 25 pels          */
15318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* i4 - 4 lpels + 1 tlpels + 4 tpels + 4 tr pels = 13 pels          */
15328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* ic - 8 left pels + 1 top left pel + 8 top pels )*2               */
15338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /********************************************************************/
15348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 au1_ngbr_pels[34];
15358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * array for 8x8 intra pels filtering (temp buff 4)
15388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 au1_neighbor_pels_i8x8_unfiltered[25];
15408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of sub partitons in the inter pred MB
15438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_num_sub_partitions;
15458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pointer to hold num PUs each MB in a picture
15488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 *pu4_mb_pu_cnt;
15508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the array of structures having motion vectors, size
15538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  and position of sub partitions
15548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_pu;
15568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1558134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Pointer to the pu of current co-located MB in list 1
1559134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
1560134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_t *ps_colpu;
1561134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
1562134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
15638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * predicted motion vector
15648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1565134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t *ps_skip_mv;
1566134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
1567134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
1568134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * predicted motion vector
1569134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
1570134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    enc_pu_mv_t *ps_pred_mv;
15718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row mb syntax information base
15748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In normal working scenarios, for a given context set,
15758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * the mb syntax info pointer is identical across all process threads.
15768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * But when the hard bound on slices are enabled, in multi core, frame
15778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * is partitioned in to sections equal to set number of cores and each
15788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partition is run independently. In this scenario, a ctxt set will alone
15798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * appear to run multiple frames at a time. For this to occur, the common
15808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointers across the proc ctxt should disappear.
15818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
15828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is done by allocating MAX_PROCESS_THREADS memory and distributing
15838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * across individual ctxts when byte bnd per slice is enabled.
15848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t *ps_top_row_mb_syntax_ele_base;
15868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row mb syntax information
15898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t *ps_top_row_mb_syntax_ele;
15918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left mb syntax information
15948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
15958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t s_left_mb_syntax_ele;
15968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
15978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
15988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb syntax information
15998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t s_top_left_mb_syntax_ele;
16018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb syntax information
16048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mb_info_t s_top_left_mb_syntax_ME;
16078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left mb motion vector
16108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_left_mb_pu_ME;
16128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb motion vector
16158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_top_left_mb_pu_ME;
16178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb neighbor availability pointer
16208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    block_neighbors_t s_ngbr_avbl;
16228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In case the macroblock type is intra, the intra modes of all
16258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partitions for the left mb are stored in the array below
16268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 au1_left_mb_intra_modes[16];
16288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In case the macroblock type is intra, the intra modes of all
16318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partitions for the top mb are stored in the array below
16328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
16338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In normal working scenarios, for a given context set,
16348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * the mb syntax info pointer is identical across all process threads.
16358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * But when the hard bound on slices are enabled, in multi core, frame
16368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * is partitioned in to sections equal to set number of cores and each
16378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partition is run independently. In this scenario, a ctxt set will alone
16388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * appear to run multiple frames at a time. For this to occur, the common
16398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointers across the proc ctxt should disappear.
16408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
16418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is done by allocating MAX_PROCESS_THREADS memory and distributing
16428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * across individual ctxts when byte bnd per slice is enabled.
16438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top_mb_intra_modes_base;
16458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In case the macroblock type is intra, the intra modes of all
16488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partitions for the top mb are stored in the array below
16498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_top_mb_intra_modes;
16518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * left mb motion vector
16548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_left_mb_pu;
16568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top left mb motion vector
16598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t s_top_left_mb_pu;
16618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row motion vector info
16648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
16658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * In normal working scenarios, for a given context set,
16668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * the top row pu pointer is identical across all process threads.
16678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * But when the hard bound on slices are enabled, in multi core, frame
16688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * is partitioned in to sections equal to set number of cores and each
16698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * partition is run independently. In this scenario, a ctxt set will alone
16708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * appear to run multiple frames at a time. For this to occur, the common
16718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pointers across the proc ctxt should disappear.
16728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
16738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is done by allocating MAX_PROCESS_THREADS memory and distributing
16748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * across individual ctxts when byte bnd per slice is enabled.
16758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_top_row_pu_base;
16778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * top row motion vector info
16808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_top_row_pu;
16828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    enc_pu_t *ps_top_row_pu_ME;
16848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * coded block pattern
16878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_cbp;
16898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * csbp
16928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_csbp;
16948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
16958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
16968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  number of non zero coeffs
16978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
16988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 au4_nnz[5];
16998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  number of non zero coeffs for intra 4x4 when rdopt is on
17028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 au4_nnz_intra_4x4[4];
17048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame qp & mb qp
17078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_frame_qp, u4_mb_qp;
17098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * mb qp previous
17128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_mb_qp_prev;
17148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * quantization parameters for luma & chroma planes
17178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    quant_params_t *ps_qp_params[3];
17198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb subblock coeff data
17228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_coeff_data;
17248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb subblock coeff data and number of subblocks and scan idx
17278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Incremented each time a coded subblock is processed
17288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_coeff_data;
17308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer frame level mb header data
17338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_mb_header_data;
17358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to mb header data and
17388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * incremented each time a coded mb is encoded
17398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mb_header_data;
17418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Signal that pic_init is called first time
17448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_first_pic_init;
17468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current MV Bank's buffer ID
17498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_cur_mv_bank_buf_id;
17518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Void pointer to job context
17548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq, *pv_entropy_jobq;
17568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs to be processed in the current Job
17598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_mb_cnt;
17618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * ID for the current context - Used for debugging
17648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_id;
17668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current picture buffer structure
17698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t *ps_cur_pic;
17718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to current picture's mv buffer structure
17748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    mv_buf_t *ps_cur_mv_buf;
17768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to indicate if ps_proc was initialized at least once in a frame.
17798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This is needed to handle cases where a core starts to handle format
17808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * conversion jobs directly
17818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_init_done;
17838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Process status: one byte per MB
17868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_proc_map;
17888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Deblk status: one byte per MB
17918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_deblk_map;
17938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
17958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Process status: one byte per MB
17968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
17978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_me_map;
17988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
17998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
18008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Intra refresh mask.
18018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Indicates if an Mb is coded in intra mode within the current AIR interval
18028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * NOTE Refreshes after each AIR period
18038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * NOTE The map is shared between process
18048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_is_intra_coded;
18068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Disable deblock level (0: Enable completely, 3: Disable completely
18098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_disable_deblock_level;
18118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to the structure that contains deblock context
18148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    deblk_ctxt_t s_deblk_ctxt;
18168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Points to the array of slice indices which is used to identify the independent
18198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * slice to which each MB in a frame belongs.
18208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_slice_idx;
18228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of slice header structure array
18258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr_base;
18278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of mb's to process in one loop
18308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_nmb_ntrpy;
18328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of mb's to process in one loop
18358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_nmb_me;
18378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Structure for current input buffer
18408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    inp_buf_t s_inp_buf;
18428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * api call cnt
18458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_encode_api_call_cnt;
18478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current Picture count - used for synchronization
18508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pic_cnt;
18528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      * Intermediate buffer for interpred leaf level functions
18558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S      */
18568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 ai16_pred1[HP_BUFF_WD * HP_BUFF_HT];
18578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Reference picture for the current picture
1860134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * TODO: Only 2 reference assumed currently
1861134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
1862134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    pic_buf_t *aps_ref_pic[MAX_REF_PIC_CNT];
1863134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
1864134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
1865134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Reference MV buff for the current picture
18668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1867134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    mv_buf_t *aps_mv_buf[MAX_REF_PIC_CNT];
18688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame info used by RC
18718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    frame_info_t s_frame_info;
18738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
18758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * NOTE NOT PERSISTANT INSIDE FUNCTIONS
18768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Min sad for current MB
18778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * will be populated initially
18788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Once a sad less than eq to u4_min_sad is reached, the value will be copied to the cariable
18798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32  u4_min_sad;
18818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
18838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * indicates weather we have rached minimum sa or not
18848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad_reached;
18868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
18888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current error code
18898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_error_code;
18918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
18938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Enables or disables computation of recon
18948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
18958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_compute_recon;
18968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
18978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
1898134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Temporary buffers to be used for subpel computation
18998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1900134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    UWORD8 *apu1_subpel_buffs[SUBPEL_BUFF_CNT];
19018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
19038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer holding best sub pel values
19048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_best_subpel_buf;
19068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
19088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stride for buffer holding best sub pel
19098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_bst_spel_buf_strd;
19118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1912134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K};
19138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
19158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
19168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *  @brief      Rate control related variables
19178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ******************************************************************************
19188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
19198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct
19208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
19218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_rate_control_api;
19228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_frame_time;
19248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_time_stamp;
19268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pps_pd_frm_rate;
19288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame rate pull down
19318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 pre_encode_skip[MAX_CTXT_SETS];
19338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * skip frame (cbr)
19368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 post_encode_skip[MAX_CTXT_SETS];
19388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * rate control type
19418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    rc_type_e e_rc_type;
19438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * pic type
19468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    picture_type_e e_pic_type;
19488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * intra cnt in previous frame
19518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 num_intra_in_prev_frame;
19538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * avg activity of prev frame
19568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_avg_activity;
19588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}rate_control_ctxt_t;
19608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
19628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Codec context
19638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */
19648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sstruct _codec_t
19658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{
19668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
1967134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Id of current pic (input order)
19688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
1969134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD32 i4_poc;
19708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of encode frame API calls made
1973134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * This variable must only be used for context selection [Read only]
19748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_encode_api_call_cnt;
19768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of pictures encoded
19798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pic_cnt;
19818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of threads created
19848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_proc_thread_cnt;
19868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Mutex used to keep the control calls thread-safe
19898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_ctl_mutex;
19918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current active config parameters
19948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
19958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    cfg_params_t s_cfg;
19968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
19978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
19988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Array containing the config parameter sets
19998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    cfg_params_t as_cfg[MAX_ACTIVE_CONFIG_PARAMS];
20018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Color format used by encoder internally
20048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_COLOR_FORMAT_T e_codec_color_format;
20068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * source stride
20098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * (strides for luma and chroma are the same)
20108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_src_strd;
20128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * recon stride
20158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * (strides for luma and chroma are the same)
20168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_rec_strd;
20188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to enable/disable deblocking of a frame
20218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_disable_deblk_pic;
20238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of continuous frames where deblocking was disabled
20268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_disable_deblk_pic_cnt;
20288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame type
20318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    PIC_TYPE_T pic_type;
20338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame qp
20368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_frame_qp;
20388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * frame num
20418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_frame_num;
20438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  slice_type
20468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32  i4_slice_type;
20488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
20508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Force current frame to specific type
20518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    IV_PICTURE_CODING_TYPE_T force_curr_frame_type;
20538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  IDR pic
20568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_idr;
20588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  idr_pic_id
20618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_idr_pic_id;
20638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flush mode
20668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_flush_mode;
20688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Encode header mode
20718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_header_mode;
20738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to indicate if header has already
20768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * been generated when i4_api_call_cnt 0
20778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_header_generated;
20798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Encode generate header
20828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_gen_header;
20848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * To signal successful completion of init
20878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_init_done;
20898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * To signal that at least one picture was decoded
20928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_first_pic_done;
20948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
20958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
20968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Reset flag - Codec is reset if this flag is set
20978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
20988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_reset_flag;
20998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current error code
21028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_error_code;
21048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * threshold residue
21078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 u4_thres_resi;
21098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * disable intra inter gating
21128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_inter_gate;
21148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Holds mem records passed during init.
21178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This will be used to return the mem records during retrieve call
21188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    iv_mem_rec_t *ps_mem_rec_backup;
21208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Flag to determine if the entropy thread is active
21238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    volatile UWORD32 au4_entropy_thread_active[MAX_CTXT_SETS];
21258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Mutex used to keep the entropy calls thread-safe
21288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_entropy_mutex;
21308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Job queue buffer base
21338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq_buf, *pv_entropy_jobq_buf;
21358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Job Queue mem tab size
21388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_proc_jobq_buf_size, i4_entropy_jobq_buf_size;
21408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for MV Bank buffer manager
21438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mv_buf_mgr_base;
21458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MV Bank buffer manager
21488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mv_buf_mgr;
21508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to MV Buf structure array
21538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *ps_mv_buf;
21558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Base address for Motion Vector bank buffer
21588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_mv_bank_buf_base;
21608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * MV Bank size allocated
21638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_total_mv_bank_size;
21658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for Picture buffer manager for reference pictures
21688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_ref_buf_mgr_base;
21708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Picture buffer manager for reference pictures
21738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_ref_buf_mgr;
21758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of reference buffers added to the buffer manager
21788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_ref_buf_cnt;
21808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to Pic Buf structure array
21838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *ps_pic_buf;
21858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Base address for Picture buffer
21888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_pic_buf_base;
21908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Total pic buffer size allocated
21938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_total_pic_buf_size;
21958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
21968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
21978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for Buffer manager for output buffers
21988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
21998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_out_buf_mgr_base;
22008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Buffer manager for output buffers
22038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_out_buf_mgr;
22058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current output buffer's buffer ID
22088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_out_buf_id;
22108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of output buffers added to the buffer manager
22138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_out_buf_cnt;
22158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for Picture buffer manager for input buffers
22188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_inp_buf_mgr_base;
22208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Picture buffer manager for input buffers
22238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     void *pv_inp_buf_mgr;
22258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current input buffer's buffer ID
22288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_inp_buf_id;
22308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of input buffers added to the buffer manager
22338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_inp_buf_cnt;
22358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Current input buffer
22388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pic_buf_t *ps_inp_buf;
22408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to dpb manager structure
22438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_dpb_mgr;
22458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of Sequence parameter set structure array
22488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    sps_t *ps_sps_base;
22508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of Picture parameter set structure array
22538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pps_t *ps_pps_base;
22558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  seq_parameter_set_id
22588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_sps_id;
22608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  pic_parameter_set_id
22638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pps_id;
22658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Pointer to base of slice header structure array
22688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    slice_header_t *ps_slice_hdr_base;
22708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * packed residue coeff data size for 1 row of mbs
22738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_size_coeff_data;
22758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * packed header data size for 1 row of mbs
22788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_size_header_data;
22808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Processing context - One for each processing thread
22838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Create two sets, each set used for alternate frames
22848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    process_ctxt_t as_process[MAX_PROCESS_CTXT];
22868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Thread handle for each of the processing threads
22898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *apv_proc_thread_handle[MAX_PROCESS_THREADS];
22918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Thread created flag for each of the processing threads
22948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
22958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 ai4_process_thread_created[MAX_PROCESS_THREADS];
22968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
22978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
22988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Void pointer to process job context
22998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    void *pv_proc_jobq, *pv_entropy_jobq;
23018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Number of MBs processed together for better instruction cache handling
23048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_proc_nmb;
23068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Previous POC lsb
23098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_prev_poc_lsb;
23118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Previous POC msb
23148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_prev_poc_msb;
23168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Max POC lsb that has arrived till now
23198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_max_prev_poc_lsb;
23218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Context for format conversion
23248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    fmt_conv_t s_fmt_conv;
23268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Absolute pic order count
23298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_abs_pic_order_cnt;
23318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  Pic order count of lsb
23348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_pic_order_cnt_lsb;
23368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Array giving current picture being processed in each context set
23398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 ai4_pic_cnt[MAX_CTXT_SETS];
23418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
23438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Min sad to search for
23448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_min_sad;
23468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Reference picture set
23498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ref_set_t as_ref_set[MAX_DPB_SIZE + MAX_CTXT_SETS];
23518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2352134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
23538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
23548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Air pic cnt
23558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Contains the number of pictures that have been encoded with air
23568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * This value is moudulo air refresh period
23578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    WORD32 i4_air_pic_cnt;
23598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
23618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Intra refresh map
23628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Stores the frames at which intra refresh should occur for a MB
23638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD16 *pu2_intr_rfrsh_map;
23658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
23678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Indicates if the current frame is used as a reference frame
23688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD32 u4_is_curr_frm_ref;
23708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
2372134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Indicates if there can be non reference frames in the stream
2373134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2374134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD32 i4_non_ref_frames_in_stream;
2375134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2376134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /*
23778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for color space conversion for luma plane
23788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_y_csc_buf_base;
23808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
23828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Memory for color space conversion foe chroma plane
23838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 *pu1_uv_csc_buf_base;
23858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Function pointers for intra pred leaf level functions luma
23888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_16_l[MAX_I16x16];
23908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_8_l[MAX_I8x8];
23918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_4_l[MAX_I4x4];
23928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Function pointers for intra pred leaf level functions chroma
23958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
23968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_intra_pred apf_intra_pred_c[MAX_CH_I8x8];
23978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
23988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
23998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * luma core coding function pointer
24008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*luma_energy_compaction[4])(process_ctxt_t *ps_proc);
24028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * chroma core coding function pointer
24058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    UWORD8 (*chroma_energy_compaction[2])(process_ctxt_t *ps_proc);
24078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for intra blk of mb type 16x16
24108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_luma_16x16_resi_trans_dctrans_quant_ft *pf_resi_trans_dctrans_quant_16x16;
24128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for intra blk of mb type 16x16
24158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_luma_16x16_idctrans_iquant_itrans_recon_ft *pf_idctrans_iquant_itrans_recon_16x16;
24178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for 4x4 blk luma
24208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_resi_trans_quant_ft *pf_resi_trans_quant_4x4;
24228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for 4x4 blk luma
24258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_resi_trans_quant_ft *pf_resi_trans_quant_chroma_4x4;
24278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
24298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * hadamard transform and quant for a 4x4 block
24308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_hadamard_quant_ft *pf_hadamard_quant_4x4;
24328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
24348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *  hadamard transform and quant for a 4x4 block
24358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_hadamard_quant_ft *pf_hadamard_quant_2x2_uv;
24378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 4x4 blk
24408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_ft *pf_iquant_itrans_recon_4x4;
24428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for chroma 4x4 blk
24458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_chroma_ft *pf_iquant_itrans_recon_chroma_4x4;
24478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 4x4 blk with only single dc coeff
24508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_ft *pf_iquant_itrans_recon_4x4_dc;
24528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for chroma 4x4 blk with only single dc coeff
24558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_chroma_ft *pf_iquant_itrans_recon_chroma_4x4_dc;
24578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
24598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Inverse hadamard transform and iquant for a 4x4 block
24608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_ihadamard_scaling_ft *pf_ihadamard_scaling_4x4;
24628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
24648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Inverse hadamard transform and iquant for a 4x4 block
24658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_ihadamard_scaling_ft *pf_ihadamard_scaling_2x2_uv;
24678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /*
24698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Function for interleave copy*
24708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_interleave_copy_ft *pf_interleave_copy;
24728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for 8x8 blk
24758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_resi_trans_quant_ft *pf_resi_trans_quant_8x8;
24778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 8x8 blk
24808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for 4x4 blk
24838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_iquant_itrans_recon_ft *pf_iquant_itrans_recon_8x8;
24858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * forward transform for chroma MB
24888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_chroma_8x8_resi_trans_dctrans_quant_ft *pf_resi_trans_dctrans_quant_8x8_chroma;
24908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * inverse transform for chroma MB
24938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_idctrans_iquant_itrans_recon_ft *pf_idctrans_iquant_itrans_recon_8x8_chroma;
24958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
24968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
24978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical luma edge with blocking strength 4
24988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
24998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bs4_ft *pf_deblk_luma_vert_bs4;
25008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical chroma edge with blocking strength 4
25038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bs4_ft *pf_deblk_chroma_vert_bs4;
25058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical luma edge with blocking strength less than 4
25088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bslt4_ft *pf_deblk_luma_vert_bslt4;
25108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock vertical chroma edge with blocking strength less than 4
25138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bslt4_ft *pf_deblk_chroma_vert_bslt4;
25158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal luma edge with blocking strength 4
25188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bs4_ft *pf_deblk_luma_horz_bs4;
25208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal chroma edge with blocking strength 4
25238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bs4_ft *pf_deblk_chroma_horz_bs4;
25258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal luma edge with blocking strength less than 4
25288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_edge_bslt4_ft *pf_deblk_luma_horz_bslt4;
25308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * deblock horizontal chroma edge with blocking strength less than 4
25338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_deblk_chroma_edge_bslt4_ft *pf_deblk_chroma_horz_bslt4;
25358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * functions for padding
25398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_top;
25418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_bottom;
25428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_left_luma;
25438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_left_chroma;
25448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_right_luma;
25458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_pad pf_pad_right_chroma;
25468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Inter pred leaf level functions
25498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_luma_ft    *pf_inter_pred_luma_copy;
25518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_luma_ft    *pf_inter_pred_luma_horz;
25528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_luma_ft    *pf_inter_pred_luma_vert;
25538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_inter_pred_luma_bilinear  pf_inter_pred_luma_bilinear;
25548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ih264_inter_pred_chroma_ft  *pf_inter_pred_chroma;
25558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * fn ptrs for compute sad routines
25588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ime_compute_sad_ft *apf_compute_sad_16x16[2];
25608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    ime_compute_sad_ft *pf_compute_sad_16x8;
25618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2562134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2563134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2564134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Function pointer for computing ME
2565134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * 1 for PSLICE and 1 for BSLICE
2566134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2567134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    ih264e_compute_me_ft *apf_compute_me[2];
2568134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2569134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2570134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * Function pointers for computing SKIP parameters
2571134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2572134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    ih264e_skip_params_ft *apf_find_skip_params_me[2];
2573134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
25748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * fn ptrs for memory handling operations
25768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memcpy pf_mem_cpy;
25788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memset pf_mem_set;
25798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memcpy_mul8 pf_mem_cpy_mul8;
25808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_memset_mul8 pf_mem_set_mul8;
25818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * intra mode eval -encoder level function
25848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_evaluate_intra_modes pf_ih264e_evaluate_intra16x16_modes;
25868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_evaluate_intra_modes pf_ih264e_evaluate_intra_chroma_modes;
25878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_evaluate_intra_4x4_modes pf_ih264e_evaluate_intra_4x4_modes;
25888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /* Half pel generation function - encoder level
25908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     *
25918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_sixtapfilter_horz pf_ih264e_sixtapfilter_horz;
25938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_sixtap_filter_2dvh_vert pf_ih264e_sixtap_filter_2dvh_vert;
25948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
25958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
25968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * color space conversion form YUV 420P to YUV 420Sp
25978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
25988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_fmt_conv_420p_to_420sp pf_ih264e_conv_420p_to_420sp;
25998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * color space conversion form YUV 420P to YUV 420Sp
26038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    pf_fmt_conv_422ile_to_420sp pf_ih264e_fmt_conv_422i_to_420sp;
26058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * write mb layer for a given slice I, P, B
26088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
2609134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    IH264E_ERROR_T (*pf_write_mb_syntax_layer[2][3]) ( entropy_ctxt_t *ps_ent_ctxt );
26108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * Output buffer
26138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    out_buf_t as_out_buf[MAX_CTXT_SETS];
26158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * recon buffer
26188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    rec_buf_t as_rec_buf[MAX_CTXT_SETS];
26208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
26218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    /**
26228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     * rate control context
26238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S     */
26248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    rate_control_ctxt_t s_rate_control;
2625134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2626134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /**
2627134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     * input buffer queue
2628134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K     */
2629134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    inp_buf_t as_inp_list[MAX_NUM_BFRAMES];
2630134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2631134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
2632134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    /*
2633134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    *Flag to indicate if we have recived the last input frame
2634134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    */
2635134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K    WORD32 i4_last_inp_buff_received;
2636134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
26378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S};
2638134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K
26398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* IH264E_STRUCTS_H_ */
2640