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