1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2015 The Android Open Source Project 4*495ae853SAndroid Build Coastguard Worker * 5*495ae853SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*495ae853SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*495ae853SAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*495ae853SAndroid Build Coastguard Worker * 9*495ae853SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*495ae853SAndroid Build Coastguard Worker * 11*495ae853SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*495ae853SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*495ae853SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*495ae853SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*495ae853SAndroid Build Coastguard Worker * limitations under the License. 16*495ae853SAndroid Build Coastguard Worker * 17*495ae853SAndroid Build Coastguard Worker ***************************************************************************** 18*495ae853SAndroid Build Coastguard Worker * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*495ae853SAndroid Build Coastguard Worker */ 20*495ae853SAndroid Build Coastguard Worker 21*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 22*495ae853SAndroid Build Coastguard Worker /* */ 23*495ae853SAndroid Build Coastguard Worker /* File Name : irc_cbr_buffer_control.h */ 24*495ae853SAndroid Build Coastguard Worker /* */ 25*495ae853SAndroid Build Coastguard Worker /* Description : This file contains all the necessary declarations */ 26*495ae853SAndroid Build Coastguard Worker /* for cbr_buffer_control functions */ 27*495ae853SAndroid Build Coastguard Worker /* */ 28*495ae853SAndroid Build Coastguard Worker /* */ 29*495ae853SAndroid Build Coastguard Worker /* List of Functions : <List the functions defined in this file> */ 30*495ae853SAndroid Build Coastguard Worker /* */ 31*495ae853SAndroid Build Coastguard Worker /* Issues / Problems : None */ 32*495ae853SAndroid Build Coastguard Worker /* */ 33*495ae853SAndroid Build Coastguard Worker /* Revision History : */ 34*495ae853SAndroid Build Coastguard Worker /* */ 35*495ae853SAndroid Build Coastguard Worker /* DD MM YYYY Author(s) Changes (Describe the changes made) */ 36*495ae853SAndroid Build Coastguard Worker /* 06 05 2008 Ittiam Draft */ 37*495ae853SAndroid Build Coastguard Worker /* */ 38*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 39*495ae853SAndroid Build Coastguard Worker 40*495ae853SAndroid Build Coastguard Worker #ifndef CBR_BUFFER_CONTROL_H 41*495ae853SAndroid Build Coastguard Worker #define CBR_BUFFER_CONTROL_H 42*495ae853SAndroid Build Coastguard Worker 43*495ae853SAndroid Build Coastguard Worker /* Macro for clipping a number between to extremes */ 44*495ae853SAndroid Build Coastguard Worker #define CLIP(Number,Max,Min) if((Number) > (Max)) (Number) = (Max); \ 45*495ae853SAndroid Build Coastguard Worker else if((Number) < (Min)) (Number) = (Min); 46*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 47*495ae853SAndroid Build Coastguard Worker /* Structure */ 48*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 49*495ae853SAndroid Build Coastguard Worker typedef struct cbr_buffer_t *cbr_buffer_handle; 50*495ae853SAndroid Build Coastguard Worker 51*495ae853SAndroid Build Coastguard Worker WORD32 irc_cbr_buffer_num_fill_use_free_memtab(cbr_buffer_handle *pps_cbr_buffer, 52*495ae853SAndroid Build Coastguard Worker itt_memtab_t *ps_memtab, 53*495ae853SAndroid Build Coastguard Worker ITT_FUNC_TYPE_E e_func_type); 54*495ae853SAndroid Build Coastguard Worker 55*495ae853SAndroid Build Coastguard Worker /* Initialize the cbr Buffer*/ 56*495ae853SAndroid Build Coastguard Worker void irc_init_cbr_buffer(cbr_buffer_handle ps_cbr_buffer, 57*495ae853SAndroid Build Coastguard Worker WORD32 i4_buffer_delay, 58*495ae853SAndroid Build Coastguard Worker WORD32 i4_tgt_frm_rate, 59*495ae853SAndroid Build Coastguard Worker WORD32 *i4_bit_rate, 60*495ae853SAndroid Build Coastguard Worker UWORD32 *u4_num_pics_in_delay_prd, 61*495ae853SAndroid Build Coastguard Worker UWORD32 u4_vbv_buf_size); 62*495ae853SAndroid Build Coastguard Worker 63*495ae853SAndroid Build Coastguard Worker /* Check for tgt bits with in CBR buffer*/ 64*495ae853SAndroid Build Coastguard Worker WORD32 irc_cbr_buffer_constraint_check(cbr_buffer_handle ps_cbr_buffer, 65*495ae853SAndroid Build Coastguard Worker WORD32 i4_tgt_bits, 66*495ae853SAndroid Build Coastguard Worker picture_type_e e_pic_type); 67*495ae853SAndroid Build Coastguard Worker 68*495ae853SAndroid Build Coastguard Worker /* Get the buffer status with the current consumed bits*/ 69*495ae853SAndroid Build Coastguard Worker vbv_buf_status_e irc_get_cbr_buffer_status(cbr_buffer_handle ps_cbr_buffer, 70*495ae853SAndroid Build Coastguard Worker WORD32 i4_tot_consumed_bits, 71*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_num_bits_to_prevent_overflow, 72*495ae853SAndroid Build Coastguard Worker picture_type_e e_pic_type); 73*495ae853SAndroid Build Coastguard Worker 74*495ae853SAndroid Build Coastguard Worker /* Update the CBR buffer at the end of the VOP*/ 75*495ae853SAndroid Build Coastguard Worker void irc_update_cbr_buffer(cbr_buffer_handle ps_cbr_buffer, 76*495ae853SAndroid Build Coastguard Worker WORD32 i4_tot_consumed_bits, 77*495ae853SAndroid Build Coastguard Worker picture_type_e e_pic_type); 78*495ae853SAndroid Build Coastguard Worker 79*495ae853SAndroid Build Coastguard Worker /*Get the bits needed to stuff in case of Underflow*/ 80*495ae853SAndroid Build Coastguard Worker WORD32 irc_get_cbr_bits_to_stuff(cbr_buffer_handle ps_cbr_buffer, 81*495ae853SAndroid Build Coastguard Worker WORD32 i4_tot_consumed_bits, 82*495ae853SAndroid Build Coastguard Worker picture_type_e e_pic_type); 83*495ae853SAndroid Build Coastguard Worker 84*495ae853SAndroid Build Coastguard Worker WORD32 irc_get_cbr_buffer_delay(cbr_buffer_handle ps_cbr_buffer); 85*495ae853SAndroid Build Coastguard Worker 86*495ae853SAndroid Build Coastguard Worker WORD32 irc_get_cbr_buffer_size(cbr_buffer_handle ps_cbr_buffer); 87*495ae853SAndroid Build Coastguard Worker 88*495ae853SAndroid Build Coastguard Worker WORD32 irc_vbr_stream_buffer_constraint_check(cbr_buffer_handle ps_cbr_buffer, 89*495ae853SAndroid Build Coastguard Worker WORD32 i4_tgt_bits, 90*495ae853SAndroid Build Coastguard Worker picture_type_e e_pic_type); 91*495ae853SAndroid Build Coastguard Worker 92*495ae853SAndroid Build Coastguard Worker void irc_change_cbr_vbv_bit_rate(cbr_buffer_handle ps_cbr_buffer, 93*495ae853SAndroid Build Coastguard Worker WORD32 *i4_bit_rate); 94*495ae853SAndroid Build Coastguard Worker 95*495ae853SAndroid Build Coastguard Worker void irc_change_cbr_vbv_tgt_frame_rate(cbr_buffer_handle ps_cbr_buffer, 96*495ae853SAndroid Build Coastguard Worker WORD32 i4_tgt_frm_rate); 97*495ae853SAndroid Build Coastguard Worker 98*495ae853SAndroid Build Coastguard Worker void irc_change_cbr_vbv_num_pics_in_delay_period(cbr_buffer_handle ps_cbr_buffer, 99*495ae853SAndroid Build Coastguard Worker UWORD32 *u4_num_pics_in_delay_prd); 100*495ae853SAndroid Build Coastguard Worker 101*495ae853SAndroid Build Coastguard Worker void irc_change_cbr_buffer_delay(cbr_buffer_handle ps_cbr_buffer, 102*495ae853SAndroid Build Coastguard Worker WORD32 i4_buffer_delay); 103*495ae853SAndroid Build Coastguard Worker #endif /* CBR_BUFFER_CONTROL_H */ 104*495ae853SAndroid Build Coastguard Worker 105