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_process.h
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Contains functions for codec thread
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @author
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  ittiam
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  None
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef IH264E_PROCESS_H_
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IH264E_PROCESS_H_
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Declarations                                                     */
438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/
448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @brief This function generates sps, pps set on request
498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @par   Description
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  When the encoder is set in header generation mode, the following function
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  is called. This generates sps and pps headers and returns the control back
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  to caller.
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @param[in]    ps_codec
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  pointer to codec context
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  @return      success or failure error code
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T    ih264e_generate_sps_pps
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        (
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S            codec_t   *ps_codec
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        );
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief   initialize entropy context.
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Before invoking the call to perform to entropy coding the entropy context
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  associated with the job needs to be initialized. This involves the start
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  mb address, end mb address, slice index and the pointer to location at
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  which the mb residue info and mb header info are packed.
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Pointer to the current process context
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns error status
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_init_entropy_ctxt(process_ctxt_t *ps_proc);
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief entry point for entropy coding
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  This function calls lower level functions to perform entropy coding for a
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  group (n rows) of mb's. After encoding 1 row of mb's,  the function takes
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  back the control, updates the ctxt and calls lower level functions again.
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  This process is repeated till all the rows or group of mb's (which ever is
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  minimum) are coded
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  process context
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns  error status
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* NOTE : It is assumed that this routine is invoked at the start of a slice,
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* so the slice header is generated by default.
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_entropy(process_ctxt_t *ps_proc);
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief Packs header information of a mb in to a buffer
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  After the deciding the mode info of a macroblock, the syntax elements
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  associated with the mb are packed and stored. The entropy thread unpacks
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  this buffer and generates the end bit stream.
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Pointer to the current process context
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns error status
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_pack_header_data
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    (
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        process_ctxt_t *ps_proc
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    );
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief   update process context after encoding an mb. This involves preserving
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* the current mb information for later use, initialize the proc ctxt elements to
1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* encode next mb.
1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  This function performs house keeping tasks after encoding an mb.
1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  After encoding an mb, various elements of the process context needs to be
1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  updated to encode the next mb. For instance, the source, recon and reference
1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  pointers, mb indices have to be adjusted to the next mb. The slice index of
1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  the current mb needs to be updated. If mb qp modulation is enabled, then if
1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  the qp changes the quant param structure needs to be updated. Also to encoding
1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  the next mb, the current mb info is used as part of mode prediction or mv
1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  prediction. Hence the current mb info has to preserved at top/top left/left
1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  locations.
1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Pointer to the current process context
1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns none
1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264e_update_proc_ctxt
1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    (
1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        process_ctxt_t *ps_proc
1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    );
1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief   initialize process context.
1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Before dispatching the current job to process thread, the process context
1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  associated with the job is initialized. Usually every job aims to encode one
1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  row of mb's. Basing on the row indices provided by the job, the process
1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  context's buffer ptrs, slice indices and other elements that are necessary
1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  during core-coding are initialized.
1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Pointer to the current process context
1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns error status
1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc);
1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief This function performs luma & chroma padding
1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Process context corresponding to the job
2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] pu1_curr_pic_luma
2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Pointer to luma buffer
2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] pu1_curr_pic_chroma
2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Pointer to chroma buffer
2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] i4_mb_x
2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  mb index x
2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] i4_mb_y
2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  mb index y
2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] i4_pad_ht
2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  number of rows to be padded
2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns  error status
2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_pad_recon_buffer
2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    (
2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        process_ctxt_t *ps_proc,
2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 *pu1_curr_pic_luma,
2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 *pu1_curr_pic_chroma,
2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i4_mb_x,
2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i4_mb_y,
2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i4_pad_ht
2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    );
2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief This function performs luma half pel planes generation
2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Process context corresponding to the job
2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns  error status
2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_halfpel_generation
2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    (
2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        process_ctxt_t *ps_proc,
2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        UWORD8 *pu1_curr_pic_luma,
2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i4_mb_x,
2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S        WORD32 i4_mb_y
2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S    );
2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief This function performs luma & chroma core coding for a set of mb's.
2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  The mb to be coded is taken and is evaluated over a predefined set of modes
2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  (intra (i16, i4, i8)/inter (mv, skip)) for best cost. The mode with least cost
2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  is selected and using intra/inter prediction filters, prediction is carried out.
2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  The deviation between src and pred signal constitutes error signal. This error
2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  signal is transformed (hierarchical transform if necessary) and quantized. The
2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  quantized residue is packed in to entropy buffer for entropy coding. This is
2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  repeated for all the mb's enlisted under the job.
2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_proc
2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Process context corresponding to the job
2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns  error status
2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none
2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264e_process(process_ctxt_t *ps_proc);
2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief
2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Function to update rc context after encoding
2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par   Description
2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  This function updates the rate control context after the frame is encoded.
2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Number of bits consumed by the current frame, frame distortion, frame cost,
2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  number of intra/inter mb's, ... are passed on to rate control context for
2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  updating the rc model.
2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_codec
2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Handle to codec context
2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ctxt_sel
2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  frame context selector
3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] pic_cnt
3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  pic count
3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns i4_stuffing_byte
3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  number of stuffing bytes (if necessary)
3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks
3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264e_update_rc_post_enc(codec_t *ps_codec, WORD32 ctxt_sel, WORD32 pic_cnt);
3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief
3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  entry point of a spawned encoder thread
3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description:
3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  The encoder thread dequeues a proc/entropy job from the encoder queue and
3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  calls necessary routines.
3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] pv_proc
3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  Process context corresponding to the thread
3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns  error status
3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks
3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264e_process_thread(void *pv_proc);
3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* IH264E_PROCESS_H_ */
335