rtc: Add get control for high_motion_content_screen Change-Id: Ibf160f7774e748f8b9cfc292ccb1c2d255989054
diff --git a/aom/aomcx.h b/aom/aomcx.h index 835eab8..594d463 100644 --- a/aom/aomcx.h +++ b/aom/aomcx.h
@@ -1547,6 +1547,13 @@ */ AV1E_SET_AUTO_TILES = 166, + /*!\brief Codec control to get the high motion screen content flag. + * int * parameter. + * Returns an integer. + * 1 means high motion screen content, 0 means not. + */ + AV1E_GET_HIGH_MOTION_CONTENT_SCREEN_RTC = 167, + // Any new encoder control IDs should be added above. // Maximum allowed encoder control ID is 229. // No encoder control ID should be added below. @@ -2207,6 +2214,9 @@ AOM_CTRL_USE_TYPE(AV1E_SET_AUTO_TILES, unsigned int) #define AOM_CTRL_AV1E_SET_AUTO_TILES +AOM_CTRL_USE_TYPE(AV1E_GET_HIGH_MOTION_CONTENT_SCREEN_RTC, int *) +#define AOM_CTRL_AV1E_GET_HIGH_MOTION_CONTENT_SCREEN_RTC + /*!\endcond */ /*! @} - end defgroup aom_encoder */ #ifdef __cplusplus
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c index a03fed9..403cb83 100644 --- a/av1/av1_cx_iface.c +++ b/av1/av1_cx_iface.c
@@ -4435,6 +4435,15 @@ return AOM_CODEC_OK; } +static aom_codec_err_t ctrl_get_high_motion_content_screen_rtc( + aom_codec_alg_priv_t *ctx, va_list args) { + int *arg = va_arg(args, int *); + AV1_COMP *const cpi = ctx->ppi->cpi; + if (arg == NULL) return AOM_CODEC_INVALID_PARAM; + *arg = cpi->rc.high_motion_screen_content; + return AOM_CODEC_OK; +} + static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { { AV1_COPY_REFERENCE, ctrl_copy_reference }, { AOME_USE_REFERENCE, ctrl_use_reference }, @@ -4598,6 +4607,8 @@ { AV1E_GET_TARGET_SEQ_LEVEL_IDX, ctrl_get_target_seq_level_idx }, { AV1E_GET_NUM_OPERATING_POINTS, ctrl_get_num_operating_points }, { AV1E_GET_LUMA_CDEF_STRENGTH, ctrl_get_luma_cdef_strength }, + { AV1E_GET_HIGH_MOTION_CONTENT_SCREEN_RTC, + ctrl_get_high_motion_content_screen_rtc }, CTRL_MAP_END, };
diff --git a/examples/svc_encoder_rtc.cc b/examples/svc_encoder_rtc.cc index c9ff20c..0e9eba9 100644 --- a/examples/svc_encoder_rtc.cc +++ b/examples/svc_encoder_rtc.cc
@@ -1915,6 +1915,13 @@ cx_time_layer[layer] += aom_usec_timer_elapsed(&timer); frame_cnt_layer[layer] += 1; + // Get the high motion content flag. + int content_flag = 0; + if (aom_codec_control(&codec, AV1E_GET_HIGH_MOTION_CONTENT_SCREEN_RTC, + &content_flag)) { + die_codec(&codec, "Failed to GET_HIGH_MOTION_CONTENT_SCREEN_RTC"); + } + got_data = 0; // For simulcast (mode 11): write out each spatial layer to the file. int ss_layers_write = (app_input.layering_mode == 11)