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_master.h 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Contains declarations of functions used by master 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_MASTER_H_ 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IH264E_MASTER_H_ 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Extern Function Declarations */ 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* This function joins all the spawned threads after successful completion of 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* their tasks 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_codec 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* pointer to codec context 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns none 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264e_join_threads(codec_t *ps_codec); 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief This function puts the current thread to sleep for a duration 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* of sleep_us 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* ithread_yield() method causes the calling thread to yield execution to another 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* thread that is ready to run on the current processor. The operating system 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* selects the thread to yield to. ithread_usleep blocks the current thread for 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* the specified number of milliseconds. In other words, yield just says, 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* end my timeslice prematurely, look around for other threads to run. If there 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* is nothing better than me, continue. Sleep says I don't want to run for x 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* milliseconds. Even if no other thread wants to run, don't make me run. 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] sleep_us 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* thread sleep duration 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns error_status 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_wait_for_thread(UWORD32 sleep_us); 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Encodes in synchronous api mode 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* This routine processes input yuv, encodes it and outputs bitstream and recon 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_codec_obj 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Pointer to codec object at API level 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] pv_api_ip 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Pointer to input argument structure 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[out] pv_api_op 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Pointer to output argument structure 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @returns Status 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SWORD32 ih264e_encode(iv_obj_t *ps_codec_obj, void *pv_api_ip, void *pv_api_op); 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************* 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief update encoder configuration parameters 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @par Description: 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* updates encoder configuration parameters from the given config set. 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Initialize/reinitialize codec parameters according to new configurations. 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_codec 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Pointer to codec context 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @param[in] ps_cfg 1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Pointer to config param set 1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks none 1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************* 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_codec_update_config(codec_t *ps_codec, cfg_params_t *ps_cfg); 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* IH264E_MASTER_H_ */ 133