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