libavc-mirror/encoder/irc_rate_control_api_structs.h
Ram Mohan M 50fd862b8d libavcenc: Remove duplicate code and improve readability
This commit does not introduce any new functionality w.r.t previous
commit. But it fixes few things. They are listed below:
1. Guard Bands in header files are fixed
2. Header files contains function definition comments. These are same
as in source file. Maintaining same comment at two locations is
unnecessary. These are removed.
3. Improved consistency and code indentation
4. Removed comments that dont align with implementation
5. Grouped headers of a workspace together
2023-10-01 01:37:17 +05:30

94 lines
2.7 KiB
C

/******************************************************************************
*
* 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 * 2];
UWORD8 au1_min_max_avc_qp[MAX_PIC_TYPE * 2];
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_*/