Add codec control to set RC for external
Change-Id: Ic202269165d979abb526e429741c274cfc2c19c8
diff --git a/aom/aomcx.h b/aom/aomcx.h
index c34e02e..2cf3d73 100644
--- a/aom/aomcx.h
+++ b/aom/aomcx.h
@@ -1404,6 +1404,13 @@
*/
AV1E_SET_AUTO_INTRA_TOOLS_OFF = 151,
+ /*!\brief Codec control function to set flag for rate control used by external
+ * encoders.
+ * - 1 = Enable rate control for external encoders. This will disable content
+ * dependency in rate control and cyclic refresh.
+ * - 0 = Default. Disable rate control for external encoders.
+ */
+ AV1E_SET_RTC_EXTERNAL_RC = 152,
// Any new encoder control IDs should be added above.
// Maximum allowed encoder control ID is 229.
// No encoder control ID should be added below.
@@ -1975,6 +1982,9 @@
AOM_CTRL_USE_TYPE(AV1E_SET_AUTO_INTRA_TOOLS_OFF, unsigned int)
#define AOM_CTRL_AV1E_SET_AUTO_INTRA_TOOLS_OFF
+AOM_CTRL_USE_TYPE(AV1E_SET_RTC_EXTERNAL_RC, int)
+#define AOM_CTRL_AV1E_SET_RTC_EXTERNAL_RC
+
/*!\endcond */
/*! @} - end defgroup aom_encoder */
#ifdef __cplusplus
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 57bfa08..3b26be2 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -2402,6 +2402,13 @@
return update_extra_cfg(ctx, &extra_cfg);
}
+static aom_codec_err_t ctrl_set_rtc_external_rc(aom_codec_alg_priv_t *ctx,
+ va_list args) {
+ ctx->ppi->cpi->rc.rtc_external_ratectrl =
+ CAST(AV1E_SET_RTC_EXTERNAL_RC, args);
+ return AOM_CODEC_OK;
+}
+
#if !CONFIG_REALTIME_ONLY
static aom_codec_err_t create_stats_buffer(FIRSTPASS_STATS **frame_stats_buffer,
STATS_BUFFER_CTX *stats_buf_context,
@@ -4039,6 +4046,7 @@
{ AV1E_SET_ENABLE_TX_SIZE_SEARCH, ctrl_set_enable_tx_size_search },
{ AV1E_SET_LOOPFILTER_CONTROL, ctrl_set_loopfilter_control },
{ AV1E_SET_AUTO_INTRA_TOOLS_OFF, ctrl_set_auto_intra_tools_off },
+ { AV1E_SET_RTC_EXTERNAL_RC, ctrl_set_rtc_external_rc },
// Getters
{ AOME_GET_LAST_QUANTIZER, ctrl_get_quantizer },