You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.6 KiB
93 lines
2.6 KiB
/****************************************************************************** |
|
* |
|
* 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_*/ |
|
|
|
|