av1enc: enable row-mt property conditionally

The row based multi threading control was introduced after 1.0.0 version
of libaom released. It adds a guard to check the relevant control
definition declared. It fixes #1025
This commit is contained in:
Wonchul Lee 2019-07-23 22:26:19 +09:00 committed by Tim-Philipp Müller
parent 6c7a07bc2a
commit 1ddd13da24

View file

@ -374,10 +374,12 @@ gst_av1_enc_class_init (GstAV1EncClass * klass)
0, G_MAXUINT, DEFAULT_THREADS, 0, G_MAXUINT, DEFAULT_THREADS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
#ifdef AOM_CTRL_AV1E_SET_ROW_MT
g_object_class_install_property (gobject_class, PROP_ROW_MT, g_object_class_install_property (gobject_class, PROP_ROW_MT,
g_param_spec_boolean ("row-mt", "Row based multi-threading", g_param_spec_boolean ("row-mt", "Row based multi-threading",
"Enable row based multi-threading", "Enable row based multi-threading",
DEFAULT_ROW_MT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); DEFAULT_ROW_MT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
#endif
} }
static void static void
@ -686,8 +688,10 @@ gst_av1_enc_set_format (GstVideoEncoder * encoder, GstVideoCodecState * state)
av1enc->encoder_inited = TRUE; av1enc->encoder_inited = TRUE;
GST_AV1_ENC_APPLY_CODEC_CONTROL (av1enc, AOME_SET_CPUUSED, av1enc->cpu_used); GST_AV1_ENC_APPLY_CODEC_CONTROL (av1enc, AOME_SET_CPUUSED, av1enc->cpu_used);
#ifdef AOM_CTRL_AV1E_SET_ROW_MT
GST_AV1_ENC_APPLY_CODEC_CONTROL (av1enc, AV1E_SET_ROW_MT, GST_AV1_ENC_APPLY_CODEC_CONTROL (av1enc, AV1E_SET_ROW_MT,
(av1enc->row_mt ? 1 : 0)); (av1enc->row_mt ? 1 : 0));
#endif
g_mutex_unlock (&av1enc->encoder_lock); g_mutex_unlock (&av1enc->encoder_lock);
return TRUE; return TRUE;
@ -937,11 +941,13 @@ gst_av1_enc_set_property (GObject * object, guint prop_id,
av1enc->threads = g_value_get_uint (value); av1enc->threads = g_value_get_uint (value);
global = TRUE; global = TRUE;
break; break;
#ifdef AOM_CTRL_AV1E_SET_ROW_MT
case PROP_ROW_MT: case PROP_ROW_MT:
av1enc->row_mt = g_value_get_boolean (value); av1enc->row_mt = g_value_get_boolean (value);
GST_AV1_ENC_APPLY_CODEC_CONTROL (av1enc, AV1E_SET_ROW_MT, GST_AV1_ENC_APPLY_CODEC_CONTROL (av1enc, AV1E_SET_ROW_MT,
(av1enc->row_mt ? 1 : 0)); (av1enc->row_mt ? 1 : 0));
break; break;
#endif
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -1026,9 +1032,11 @@ gst_av1_enc_get_property (GObject * object, guint prop_id, GValue * value,
case PROP_THREADS: case PROP_THREADS:
g_value_set_uint (value, av1enc->threads); g_value_set_uint (value, av1enc->threads);
break; break;
#ifdef AOM_CTRL_AV1E_SET_ROW_MT
case PROP_ROW_MT: case PROP_ROW_MT:
g_value_set_boolean (value, av1enc->row_mt); g_value_set_boolean (value, av1enc->row_mt);
break; break;
#endif
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;