1 /****************************************************************************** 2 * 3 * Copyright (C) 2015 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ***************************************************************************** 18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 */ 20 21 #ifndef _RATE_CONTROL_API_STRUCTS_H_ 22 #define _RATE_CONTROL_API_STRUCTS_H_ 23 24 /* 25 * The following definitions were present in irc_cntrl_param.h, moved to this 26 * file as it is used by irc_rate_control_api.c 27 */ 28 29 /* num_frm_in_period = BIT_ALLOC_PERIOD*intra_frame_interval */ 30 #define VBR_BIT_ALLOC_PERIOD 3 31 #define CBR_BIT_ALLOC_PERIOD 1 32 33 /* Rate control state structure */ 34 typedef struct rate_control_api_t 35 { 36 /* RC Algorithm */ 37 rc_type_e e_rc_type; 38 39 /* Whether MB level rc is enabled or not */ 40 UWORD8 u1_is_mb_level_rc_on; 41 42 /* Picture handling struct */ 43 pic_handling_handle ps_pic_handling; 44 45 /* Model struct for I and P frms */ 46 rc_rd_model_handle aps_rd_model[MAX_PIC_TYPE]; 47 48 /* VBR storage VBV structure */ 49 vbr_storage_vbv_handle ps_vbr_storage_vbv; 50 51 /* Calculate the estimated SAD */ 52 est_sad_handle ps_est_sad; 53 54 /* Allocation of bits for each frame */ 55 bit_allocation_handle ps_bit_allocation; 56 57 /* Init Qp(also used for Const Qp scenarios) */ 58 UWORD8 au1_init_qp[MAX_PIC_TYPE]; 59 60 /* MB Level rate control state structure */ 61 mb_rate_control_handle ps_mb_rate_control; 62 63 UWORD8 au1_is_first_frm_coded[MAX_PIC_TYPE]; 64 65 UWORD8 au1_prev_frm_qp[MAX_PIC_TYPE]; 66 67 cbr_buffer_handle ps_cbr_buffer; 68 69 UWORD8 u1_scd_detected; 70 71 UWORD8 u1_frm_qp_after_scd; 72 73 UWORD8 au1_avg_bitrate_changed[MAX_PIC_TYPE]; 74 75 UWORD8 u1_is_first_frm; 76 77 UWORD8 au1_min_max_qp[MAX_PIC_TYPE * 2]; 78 79 UWORD8 au1_min_max_avc_qp[MAX_PIC_TYPE * 2]; 80 81 WORD32 i4_prev_frm_est_bits; 82 83 vbr_str_prms_t s_vbr_str_prms; 84 85 /* Store the values which are to be impacted after a delay */ 86 UWORD32 u4_frms_in_delay_prd_for_peak_bit_rate_change; 87 88 UWORD32 au4_new_peak_bit_rate[MAX_NUM_DRAIN_RATES]; 89 90 picture_type_e prev_ref_pic_type; 91 92 } rate_control_api_t; 93 94 #endif /*_RATE_CONTROL_API_STRUCTS_H_*/ 95