diff --git a/src/bin/clapper-app/clapper-app-window.c b/src/bin/clapper-app/clapper-app-window.c index 143b02aa..21ecd764 100644 --- a/src/bin/clapper-app/clapper-app-window.c +++ b/src/bin/clapper-app/clapper-app-window.c @@ -1220,7 +1220,6 @@ clapper_app_window_constructed (GObject *object) ClapperPlayer *player = clapper_app_window_get_player (self); ClapperQueue *queue = clapper_player_get_queue (player); ClapperGtkExtraMenuButton *button; - GstElement *element; AdwStyleManager *manager; static const GActionEntry win_entries[] = { @@ -1266,9 +1265,6 @@ clapper_app_window_constructed (GObject *object) /* FIXME: Allow setting sink/filter elements from prefs window * (this should include parsing bin descriptions) */ - element = gst_element_factory_make ("scaletempo", NULL); - if (G_LIKELY (element != NULL)) - clapper_player_set_audio_filter (player, element); clapper_player_set_autoplay (player, TRUE); diff --git a/src/lib/clapper-gtk/clapper-gtk-video.c b/src/lib/clapper-gtk/clapper-gtk-video.c index c50e661a..1bebea7c 100644 --- a/src/lib/clapper-gtk/clapper-gtk-video.c +++ b/src/lib/clapper-gtk/clapper-gtk-video.c @@ -1108,6 +1108,11 @@ _fading_overlay_revealed_cb (GtkRevealer *revealer, * * Creates a new #ClapperGtkVideo instance. * + * Newly created video widget will also set some default GStreamer elements + * on its [class@Clapper.Player]. This includes Clapper own video sink and + * a "scaletempo" element as audio filter. Both can still be changed after + * construction by setting corresponding player properties. + * * Returns: a new video #GtkWidget. */ GtkWidget * @@ -1397,7 +1402,7 @@ static void clapper_gtk_video_constructed (GObject *object) { ClapperGtkVideo *self = CLAPPER_GTK_VIDEO_CAST (object); - GstElement *vsink = gst_element_factory_make ("clappersink", NULL); + GstElement *afilter, *vsink; ClapperQueue *queue; self->player = clapper_player_new (); @@ -1408,6 +1413,8 @@ clapper_gtk_video_constructed (GObject *object) g_signal_connect (self->player, "notify::video-sink", G_CALLBACK (_video_sink_changed_cb), self); + vsink = gst_element_factory_make ("clappersink", NULL); + /* FIXME: This is a temporary workaround for lack * of DMA_DRM negotiation support in sink itself */ if (G_LIKELY (vsink != NULL)) { @@ -1422,9 +1429,13 @@ clapper_gtk_video_constructed (GObject *object) vsink = bin; } } + + clapper_player_set_video_sink (self->player, vsink); } - clapper_player_set_video_sink (self->player, vsink); + afilter = gst_element_factory_make ("scaletempo", NULL); + if (G_LIKELY (afilter != NULL)) + clapper_player_set_audio_filter (self->player, afilter); g_signal_connect (self->player, "error", G_CALLBACK (_player_error_cb), self);