Skip to content

Commit

Permalink
clapper-gtk: video: Use "scaletempo" by default
Browse files Browse the repository at this point in the history
Do not require applications to import GStreamer and their devs to learn its
basics just to set this single element. Similarly as ClapperGtkVideo sets
"clappersink" during construction, it can also set "scaletempo" as this is
the most common choice for an audio filter.

Elements can still be changed like before if desired by setting corresponding
player properties.
  • Loading branch information
Rafostar committed Jun 29, 2024
1 parent 147399a commit 636e61e
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
4 changes: 0 additions & 4 deletions src/bin/clapper-app/clapper-app-window.c
Original file line number Diff line number Diff line change
Expand Up @@ -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[] = {
Expand Down Expand Up @@ -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);

Expand Down
15 changes: 13 additions & 2 deletions src/lib/clapper-gtk/clapper-gtk-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 *
Expand Down Expand Up @@ -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 ();
Expand All @@ -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)) {
Expand All @@ -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);
Expand Down

0 comments on commit 636e61e

Please sign in to comment.