transcodebin: Free various props before being set

Also disable setting filters more than once.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
This commit is contained in:
Doug Nazar 2025-05-13 19:35:58 -04:00
parent 9d91e4cfc2
commit 38ca8ae156

View File

@ -975,6 +975,7 @@ static void
_set_profile (GstTranscodeBin * self, GstEncodingProfile * profile)
{
GST_OBJECT_LOCK (self);
gst_clear_object (&self->profile);
self->profile = profile;
_setup_avoid_reencoding (self);
GST_OBJECT_UNLOCK (self);
@ -997,9 +998,17 @@ gst_transcode_bin_set_property (GObject * object,
GST_OBJECT_UNLOCK (self);
break;
case PROP_AUDIO_FILTER:
if (self->audio_filter) {
GST_WARNING_OBJECT (self, "Audio filter already set");
return;
}
_set_filter (self, g_value_dup_object (value), &self->audio_filter);
break;
case PROP_VIDEO_FILTER:
if (self->video_filter) {
GST_WARNING_OBJECT (self, "Video filter already set");
return;
}
_set_filter (self, g_value_dup_object (value), &self->video_filter);
break;
default: