| /****************************************************************************** |
| * |
| * Copyright (C) 2018 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 |
| */ |
| /*! |
| ****************************************************************************** |
| * \file rc_look_ahead_params.h |
| * |
| * \brief |
| * TODO: |
| * |
| * \date |
| * |
| * \author |
| * ittiam |
| * |
| ****************************************************************************** |
| */ |
| |
| #ifndef _RC_LOOK_AHEAD_PARAMS_H_ |
| #define _RC_LOOK_AHEAD_PARAMS_H_ |
| |
| /*****************************************************************************/ |
| /* Structure */ |
| /*****************************************************************************/ |
| /* |
| * Frame metrics |
| */ |
| typedef struct |
| { |
| /* Frame variance. Spatial property */ |
| LWORD64 i8_8x8_var_lum; |
| |
| /* frame and histogram similarity */ |
| WORD32 ai4_hsim[3]; |
| WORD32 i4_fsim; |
| |
| } rc_picture_metrics_t; |
| |
| typedef struct |
| { |
| /* common params for both lap_out and rc_lap_out */ |
| |
| WORD32 i4_rc_pic_type; |
| WORD32 i4_rc_poc; |
| WORD32 i4_rc_temporal_lyr_id; |
| WORD32 i4_rc_is_ref_pic; |
| WORD32 i4_rc_scene_type; |
| UWORD32 u4_rc_scene_num; |
| WORD32 i4_rc_display_num; |
| WORD32 i4_rc_quality_preset; |
| WORD32 i4_rc_first_field; |
| |
| /* rc_lap_out specific params */ |
| |
| /** |
| * array of rc_lap_out_params_t pointer to access |
| * the picture metrics of future pictures in capture order till |
| * the look ahead frames |
| */ |
| void *ps_rc_lap_out_next_encode; |
| |
| WORD32 i4_next_pic_type; |
| |
| WORD32 i4_is_I_only_scd; |
| WORD32 i4_is_non_I_scd; |
| |
| LWORD64 i8_frame_satd_act_accum; |
| LWORD64 i8_est_I_pic_header_bits; |
| |
| /* Num pels in frame considered while accumulating the above satd metric */ |
| WORD32 i4_num_pels_in_frame_considered; |
| /* Field type i.e either bottom or top is convyed */ |
| WORD32 i4_is_bottom_field; |
| /* Coarse ME accumulated cost for entire frame */ |
| LWORD64 i8_frame_acc_coarse_me_cost; |
| /* Coarse ME accumulated sad for entire frame */ |
| LWORD64 ai8_frame_acc_coarse_me_sad[52]; |
| /* L1 intra SATD */ |
| LWORD64 i8_pre_intra_satd; |
| /* L1 intra SATD */ |
| LWORD64 ai8_pre_intra_sad[52]; |
| /* L1 IPE sad */ |
| LWORD64 i8_raw_pre_intra_sad; |
| /* Frame - level L1 ME sad */ |
| LWORD64 i8_raw_l1_coarse_me_sad; |
| /** Frame - level L1 satd/act accum*/ |
| LWORD64 i8_frame_satd_by_act_L1_accum; |
| /** Frame - level L1 satd/act accum*/ |
| LWORD64 i8_satd_by_act_L1_accum_evaluated; |
| /* Frame satd/act accumulated for L0 predicted based on L1 satd and qp used for L0 processing */ |
| LWORD64 i8_frm_satd_act_accum_L0_frm_L1; |
| |
| /* Frames for which online/offline model is not valid */ |
| WORD32 i4_is_model_valid; |
| /* Steady State Frame */ |
| WORD32 i4_is_steady_state; |
| |
| LWORD64 i8_est_text_bits; |
| LWORD64 i8_frame_num; |
| |
| frame_info_t *ps_frame_info; |
| /* complexity metrics from LAP */ |
| rc_picture_metrics_t s_pic_metrics; |
| |
| WORD32 i4_is_cmplx_change_reset_model; |
| WORD32 i4_is_cmplx_change_reset_bits; |
| WORD32 i4_is_rc_model_needs_to_be_updated; |
| WORD32 i4_next_sc_i_in_rc_look_ahead; |
| WORD32 ai4_num_pic_type[MAX_PIC_TYPE]; |
| WORD32 ai4_offsets[5]; |
| WORD32 i4_offsets_set_flag; |
| WORD32 i4_complexity_bin; |
| WORD32 i4_ignore_for_rc_update; |
| WORD32 i4_L1_qp; |
| WORD32 i4_L0_qp; |
| WORD32 i4_enable_lookahead; |
| WORD32 i4_orig_rc_qp; |
| WORD32 i4_use_offline_model_2pass; |
| WORD32 i4_next_scene_type; |
| WORD32 i4_perc_dc_blks; |
| |
| /* Used only in ix,vx versions */ |
| LWORD64 i8_frame_acc_satd_cost; |
| WORD32 i4_l1_update_done; |
| WORD32 i4_rc_i_pic_lamda_offset; |
| float f_rc_pred_factor; |
| |
| } rc_lap_out_params_t; |
| |
| #endif |