blob: 7a94cd5607d4ea62fb44de44f3b55fdaa802a631 [file] [log] [blame]
/*
* Copyright (c) 2025, Alliance for Open Media. All rights reserved.
*
* This source code is subject to the terms of the BSD 2 Clause License and
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
* was not distributed with this source code in the LICENSE file, you can
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
* Media Patent License 1.0 was not distributed with this source code in the
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
*/
#ifndef AOM_AV1_ENCODER_AV1_EXT_RATECTRL_H_
#define AOM_AV1_ENCODER_AV1_EXT_RATECTRL_H_
#include "aom/aom_codec.h"
#include "aom/aom_ext_ratectrl.h"
#include "aom/aom_tpl.h"
#include "av1/encoder/firstpass.h"
typedef struct AOM_EXT_RATECTRL {
int ready;
int ext_rdmult;
aom_rc_model_t model;
aom_rc_funcs_t funcs;
aom_rc_config_t ratectrl_config;
aom_rc_firstpass_stats_t rc_firstpass_stats;
} AOM_EXT_RATECTRL;
aom_codec_err_t av1_extrc_init(AOM_EXT_RATECTRL *ext_ratectrl);
aom_codec_err_t av1_extrc_create(aom_rc_funcs_t funcs,
aom_rc_config_t ratectrl_config,
AOM_EXT_RATECTRL *ext_ratectrl);
aom_codec_err_t av1_extrc_delete(AOM_EXT_RATECTRL *ext_ratectrl);
aom_codec_err_t av1_extrc_send_firstpass_stats(
AOM_EXT_RATECTRL *ext_ratectrl, const FIRSTPASS_INFO *first_pass_info);
aom_codec_err_t av1_extrc_send_tpl_stats(AOM_EXT_RATECTRL *ext_ratectrl,
const AomTplGopStats *tpl_gop_stats);
aom_codec_err_t av1_extrc_get_encodeframe_decision(
AOM_EXT_RATECTRL *ext_ratectrl, int gop_index,
aom_rc_encodeframe_decision_t *encode_frame_decision);
aom_codec_err_t av1_extrc_update_encodeframe_result(
AOM_EXT_RATECTRL *ext_ratectrl, int64_t bit_count,
int actual_encoding_qindex);
aom_codec_err_t av1_extrc_get_key_frame_decision(
AOM_EXT_RATECTRL *ext_ratectrl,
aom_rc_key_frame_decision_t *key_frame_decision);
aom_codec_err_t av1_extrc_get_gop_decision(AOM_EXT_RATECTRL *ext_ratectrl,
aom_rc_gop_decision_t *gop_decision);
aom_codec_err_t av1_extrc_get_frame_rdmult(
AOM_EXT_RATECTRL *ext_ratectrl, int show_index, int coding_index,
int gop_index, FRAME_UPDATE_TYPE update_type, int gop_size, int use_alt_ref,
RefCntBuffer *ref_frame_bufs[AOM_RC_MAX_REF_FRAMES], int ref_frame_flags,
int *rdmult);
#endif // AOM_AV1_ENCODER_AV1_EXT_RATECTRL_H_