RC: Add declarations for internal entry points

Bug: aomedia:450252793
Change-Id: Ifdd1596a7ea42838717effffe820c81a1e10c010
diff --git a/av1/av1.cmake b/av1/av1.cmake
index d702e25..42e7530 100644
--- a/av1/av1.cmake
+++ b/av1/av1.cmake
@@ -127,6 +127,7 @@
             "${AOM_ROOT}/av1/encoder/allintra_vis.c"
             "${AOM_ROOT}/av1/encoder/allintra_vis.h"
             "${AOM_ROOT}/av1/encoder/enc_enums.h"
+            "${AOM_ROOT}/av1/encoder/av1_ext_ratectrl.h"
             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm1d.c"
             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm1d.h"
             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm1d_cfg.h"
diff --git a/av1/encoder/av1_ext_ratectrl.h b/av1/encoder/av1_ext_ratectrl.h
new file mode 100644
index 0000000..7a94cd5
--- /dev/null
+++ b/av1/encoder/av1_ext_ratectrl.h
@@ -0,0 +1,64 @@
+/*
+ * 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_