/****************************************************************************** * * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ***************************************************************************** * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore */ #ifndef _RATE_CONTROL_API_STRUCTS_H_ #define _RATE_CONTROL_API_STRUCTS_H_ /* * The following definitions were present in irc_cntrl_param.h, moved to this * file as it is used by irc_rate_control_api.c */ /* num_frm_in_period = BIT_ALLOC_PERIOD*intra_frame_interval */ #define VBR_BIT_ALLOC_PERIOD 3 #define CBR_BIT_ALLOC_PERIOD 1 /* Rate control state structure */ typedef struct rate_control_api_t { /* RC Algorithm */ rc_type_e e_rc_type; /* Whether MB level rc is enabled or not */ UWORD8 u1_is_mb_level_rc_on; /* Picture handling struct */ pic_handling_handle ps_pic_handling; /* Model struct for I and P frms */ rc_rd_model_handle aps_rd_model[MAX_PIC_TYPE]; /* VBR storage VBV structure */ vbr_storage_vbv_handle ps_vbr_storage_vbv; /* Calculate the estimated SAD */ est_sad_handle ps_est_sad; /* Allocation of bits for each frame */ bit_allocation_handle ps_bit_allocation; /* Init Qp(also used for Const Qp scenarios) */ UWORD8 au1_init_qp[MAX_PIC_TYPE]; /* MB Level rate control state structure */ mb_rate_control_handle ps_mb_rate_control; UWORD8 au1_is_first_frm_coded[MAX_PIC_TYPE]; UWORD8 au1_prev_frm_qp[MAX_PIC_TYPE]; cbr_buffer_handle ps_cbr_buffer; UWORD8 u1_scd_detected; UWORD8 u1_frm_qp_after_scd; UWORD8 au1_avg_bitrate_changed[MAX_PIC_TYPE]; UWORD8 u1_is_first_frm; UWORD8 au1_min_max_qp[(MAX_PIC_TYPE << 1)]; WORD32 i4_prev_frm_est_bits; vbr_str_prms_t s_vbr_str_prms; /* Store the values which are to be impacted after a delay */ UWORD32 u4_frms_in_delay_prd_for_peak_bit_rate_change; UWORD32 au4_new_peak_bit_rate[MAX_NUM_DRAIN_RATES]; picture_type_e prev_ref_pic_type; } rate_control_api_t; #endif/*_RATE_CONTROL_API_STRUCTS_H_*/