/****************************************************************************** * * 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 RC_RD_MODEL_STRUCT #define RC_RD_MODEL_STRUCT /*Enable or diable QUAD model*/ #define ENABLE_QUAD_RC_MODEL 0 #define ENABLE_LIN_MODEL_WITH_INTERCEPT 0 /* Number of elements for QP */ #define MPEG2_QP_ELEM (MAX_MPEG2_QP + 1) #if ENABLE_QUAD_RC_MODEL #define QUAD 1 #define MIN_FRAMES_FOR_QUAD_MODEL 5 #endif #define MAX_ACTIVE_FRAMES 16 #define MIN_FRAMES_FOR_LIN_MODEL 3 #define INVALID_FRAME_INDEX 255 #define UP_THR_SM 1 /* (1 /pow(2,4) = 0.0625 */ #define UP_THR_E 4 #define LO_THR_SM 368 /* (368.64 / pow(2,14)) = 0.0225 */ #define LO_THR_E 14 #define LIN_DEV_THR_SM 1 /* (1 / pow(1,2)) = .25*/ #define LIN_DEV_THR_E 2 #define PREV_FRAME_MODEL 2 /* Q Factors used for fixed point calculation */ #define Q_FORMAT_GAMMA 8 #define Q_FORMAT_ETA 8 typedef struct rc_rd_model_t { UWORD8 u1_curr_frm_counter; UWORD8 u1_num_frms_in_model; UWORD8 u1_max_frms_to_model; UWORD8 u1_model_used; UWORD32 pi4_res_bits[MAX_FRAMES_MODELLED]; UWORD32 pi4_sad[MAX_FRAMES_MODELLED]; UWORD8 pu1_num_skips[MAX_FRAMES_MODELLED]; UWORD8 pu1_avg_qp[MAX_FRAMES_MODELLED]; UWORD8 au1_num_frames[MPEG2_QP_ELEM]; model_coeff model_coeff_a_lin_wo_int; model_coeff model_coeff_b_lin_wo_int; model_coeff model_coeff_c_lin_wo_int; } rc_rd_model_t; #endif /* RC_RD_MODEL_STRUCT */