gtk-play: Port to GstPlay
authorPhilippe Normand <philn@igalia.com>
Sun, 6 Dec 2020 12:24:40 +0000 (12:24 +0000)
committerPhilippe Normand <phil@base-art.net>
Tue, 9 Mar 2021 21:36:27 +0000 (21:36 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-examples/-/merge_requests/33>

playback/player/gtk/gtk-play.c
playback/player/gtk/gtk-video-renderer.c
playback/player/gtk/gtk-video-renderer.h
playback/player/gtk/meson.build

index c6b1b42..86d357a 100644 (file)
@@ -37,7 +37,7 @@
 
 #include <gtk/gtk.h>
 
-#include <gst/player/player.h>
+#include <gst/play/play.h>
 #include "gtk-video-renderer.h"
 
 #define APP_NAME "gtk-play"
@@ -58,8 +58,9 @@ typedef struct
 {
   GtkApplicationWindow parent;
 
-  GstPlayer *player;
-  GstPlayerVideoRenderer *renderer;
+  GstPlay *player;
+  GstPlaySignalAdapter *signal_adapter;
+  GstPlayVideoRenderer *renderer;
 
   GList *uris;
   GList *current_uri;
@@ -204,11 +205,11 @@ gtk_play_set_rate (GtkPlay * play, gdouble step)
 {
   gdouble val;
 
-  val = gst_player_get_rate (play->player);
+  val = gst_play_get_rate (play->player);
   val += step;
   if (val == 0.0)
     val = step;
-  gst_player_set_rate (play->player, val);
+  gst_play_set_rate (play->player, val);
 
   if (val == 1.0)
     gtk_label_set_label (play->rate_label, NULL);
@@ -302,7 +303,7 @@ key_press_event_cb (GtkWidget * widget, GdkEventKey * event, gpointer data)
     }
     case GDK_KEY_BackSpace:{
       /* Reset playback speed to normal */
-      gdouble val = gst_player_get_rate (play->player);
+      gdouble val = gst_play_get_rate (play->player);
       gtk_play_set_rate (play, 1.0 - val);
       break;
     }
@@ -322,7 +323,7 @@ key_press_event_cb (GtkWidget * widget, GdkEventKey * event, gpointer data)
     case GDK_KEY_KP_9:
     case GDK_KEY_9:{
       /* Increase volume */
-      gdouble volume = gst_player_get_volume (play->player);
+      gdouble volume = gst_play_get_volume (play->player);
       gtk_scale_button_set_value (GTK_SCALE_BUTTON (play->volume_button),
           volume * 1.10);
       break;
@@ -330,15 +331,15 @@ key_press_event_cb (GtkWidget * widget, GdkEventKey * event, gpointer data)
     case GDK_KEY_KP_0:
     case GDK_KEY_0:{
       /* Decrease volume */
-      gdouble volume = gst_player_get_volume (play->player);
+      gdouble volume = gst_play_get_volume (play->player);
       gtk_scale_button_set_value (GTK_SCALE_BUTTON (play->volume_button),
           volume * 0.9);
       break;
     }
     case GDK_KEY_m:{
       /* Mute sound */
-      gboolean mute = gst_player_get_mute (play->player);
-      gst_player_set_mute (play->player, !mute);
+      gboolean mute = gst_play_get_mute (play->player);
+      gst_play_set_mute (play->player, !mute);
       break;
     }
     case GDK_KEY_f:{
@@ -380,7 +381,7 @@ play_pause_button_clicked_cb (GtkButton * button, GtkPlay * play)
   GtkWidget *image;
 
   if (play->playing) {
-    gst_player_pause (play->player);
+    gst_play_pause (play->player);
     image = TOOLBAR_GET_OBJECT (play_image);
     gtk_button_set_image (GTK_BUTTON (play->play_pause_button), image);
     play->playing = FALSE;
@@ -397,7 +398,7 @@ play_pause_button_clicked_cb (GtkButton * button, GtkPlay * play)
         gtk_application_inhibit (GTK_APPLICATION (g_application_get_default ()),
         GTK_WINDOW (play), GTK_APPLICATION_INHIBIT_IDLE, "Playing media");
 
-    gst_player_play (play->player);
+    gst_play_play (play->player);
     image = TOOLBAR_GET_OBJECT (pause_image);
     gtk_button_set_image (GTK_BUTTON (play->play_pause_button), image);
     play->playing = TRUE;
@@ -419,9 +420,9 @@ play_current_uri (GtkPlay * play, GList * uri, const gchar * ext_suburi)
 
   /* set uri or suburi */
   if (ext_suburi)
-    gst_player_set_subtitle_uri (play->player, ext_suburi);
+    gst_play_set_subtitle_uri (play->player, ext_suburi);
   else
-    gst_player_set_uri (play->player, uri->data);
+    gst_play_set_uri (play->player, uri->data);
   play->current_uri = uri;
   if (play->playing) {
     if (play->inhibit_cookie)
@@ -430,9 +431,9 @@ play_current_uri (GtkPlay * play, GList * uri, const gchar * ext_suburi)
     play->inhibit_cookie =
         gtk_application_inhibit (GTK_APPLICATION (g_application_get_default ()),
         GTK_WINDOW (play), GTK_APPLICATION_INHIBIT_IDLE, "Playing media");
-    gst_player_play (play->player);
+    gst_play_play (play->player);
   } else {
-    gst_player_pause (play->player);
+    gst_play_pause (play->player);
     if (play->inhibit_cookie)
       gtk_application_uninhibit (GTK_APPLICATION (g_application_get_default ()),
           play->inhibit_cookie);
@@ -456,12 +457,12 @@ static gboolean
 color_balance_channel_change_value_cb (GtkRange * range, GtkScrollType scroll,
     gdouble value, GtkPlay * play)
 {
-  GstPlayerColorBalanceType type;
+  GstPlayColorBalanceType type;
 
   type = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (range), "type"));
 
   value = CLAMP (value, 0.0, 1.0);
-  gst_player_set_color_balance (play->player, type, value);
+  gst_play_set_color_balance (play->player, type, value);
 
   return FALSE;
 }
@@ -470,14 +471,14 @@ static gboolean
 color_balance_channel_button_press_cb (GtkWidget * widget,
     GdkEventButton * event, GtkPlay * play)
 {
-  GstPlayerColorBalanceType type;
+  GstPlayColorBalanceType type;
 
   if (event->type != GDK_2BUTTON_PRESS)
     return FALSE;
 
   type = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "type"));
   gtk_range_set_value (GTK_RANGE (widget), 0.5);
-  gst_player_set_color_balance (play->player, type, 0.5);
+  gst_play_set_color_balance (play->player, type, 0.5);
 
   return FALSE;
 }
@@ -503,10 +504,10 @@ color_balance_dialog (GtkPlay * play)
   gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
   gtk_box_pack_start (GTK_BOX (content), box, TRUE, TRUE, 5);
 
-  for (i = GST_PLAYER_COLOR_BALANCE_BRIGHTNESS;
-      i <= GST_PLAYER_COLOR_BALANCE_HUE; i++) {
+  for (i = GST_PLAY_COLOR_BALANCE_BRIGHTNESS;
+      i <= GST_PLAY_COLOR_BALANCE_HUE; i++) {
     ctlbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
-    label = gtk_label_new (gst_player_color_balance_type_get_name (i));
+    label = gtk_label_new (gst_play_color_balance_type_get_name (i));
     scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0, 1, 0.5);
     gtk_widget_set_size_request (scale, 0, 200);
     gtk_box_pack_start (GTK_BOX (ctlbox), label, FALSE, TRUE, 2);
@@ -514,7 +515,7 @@ color_balance_dialog (GtkPlay * play)
 
     gtk_box_pack_end (GTK_BOX (box), ctlbox, TRUE, TRUE, 2);
 
-    value = gst_player_get_color_balance (play->player, i);
+    value = gst_play_get_color_balance (play->player, i);
     gtk_range_set_value (GTK_RANGE (scale), value);
     g_object_set_data (G_OBJECT (scale), "type", GUINT_TO_POINTER (i));
 
@@ -534,7 +535,7 @@ color_balance_dialog (GtkPlay * play)
 static void
 color_balance_clicked_cb (GtkWidget * unused, GtkPlay * play)
 {
-  if (gst_player_has_color_balance (play->player)) {
+  if (gst_play_has_color_balance (play->player)) {
     color_balance_dialog (play);
     return;
   }
@@ -623,31 +624,31 @@ audio_channels_string (gint num)
 }
 
 static gchar *
-stream_info_get_string (GstPlayerStreamInfo * stream, gint type, gboolean label)
+stream_info_get_string (GstPlayStreamInfo * stream, gint type, gboolean label)
 {
   gchar *buffer = NULL;
 
   switch (type) {
     case AUDIO_INFO_RATE:
     {
-      GstPlayerAudioInfo *audio = (GstPlayerAudioInfo *) stream;
+      GstPlayAudioInfo *audio = (GstPlayAudioInfo *) stream;
       buffer = g_strdup_printf ("%s%d", label ? "Sample rate : " : "",
-          gst_player_audio_info_get_sample_rate (audio));
+          gst_play_audio_info_get_sample_rate (audio));
       break;
     }
     case AUDIO_INFO_LANGUAGE:
     {
-      GstPlayerAudioInfo *audio = (GstPlayerAudioInfo *) stream;
-      const gchar *lang = gst_player_audio_info_get_language (audio);
+      GstPlayAudioInfo *audio = (GstPlayAudioInfo *) stream;
+      const gchar *lang = gst_play_audio_info_get_language (audio);
       if (lang)
         buffer = g_strdup_printf ("%s%s", label ? "Language : " : "", lang);
       break;
     }
     case AUDIO_INFO_CHANNELS:
     {
-      GstPlayerAudioInfo *audio = (GstPlayerAudioInfo *) stream;
+      GstPlayAudioInfo *audio = (GstPlayAudioInfo *) stream;
       buffer = g_strdup_printf ("%s%s", label ? "Channels : " : "",
-          audio_channels_string (gst_player_audio_info_get_channels (audio)));
+          audio_channels_string (gst_play_audio_info_get_channels (audio)));
       break;
     }
     case SUBTITLE_INFO_CODEC:
@@ -655,13 +656,13 @@ stream_info_get_string (GstPlayerStreamInfo * stream, gint type, gboolean label)
     case AUDIO_INFO_CODEC:
     {
       buffer = g_strdup_printf ("%s%s", label ? "Codec : " : "",
-          gst_player_stream_info_get_codec (stream));
+          gst_play_stream_info_get_codec (stream));
       break;
     }
     case AUDIO_INFO_MAX_BITRATE:
     {
-      GstPlayerAudioInfo *audio = (GstPlayerAudioInfo *) stream;
-      gint bitrate = gst_player_audio_info_get_max_bitrate (audio);
+      GstPlayAudioInfo *audio = (GstPlayAudioInfo *) stream;
+      gint bitrate = gst_play_audio_info_get_max_bitrate (audio);
 
       if (bitrate > 0)
         buffer = g_strdup_printf ("%s%d", label ? "Max bitrate : " : "",
@@ -670,8 +671,8 @@ stream_info_get_string (GstPlayerStreamInfo * stream, gint type, gboolean label)
     }
     case VIDEO_INFO_MAX_BITRATE:
     {
-      GstPlayerVideoInfo *video = (GstPlayerVideoInfo *) stream;
-      gint bitrate = gst_player_video_info_get_max_bitrate (video);
+      GstPlayVideoInfo *video = (GstPlayVideoInfo *) stream;
+      gint bitrate = gst_play_video_info_get_max_bitrate (video);
 
       if (bitrate > 0)
         buffer = g_strdup_printf ("%s%d", label ? "Max bitrate : " : "",
@@ -681,9 +682,9 @@ stream_info_get_string (GstPlayerStreamInfo * stream, gint type, gboolean label)
     case VIDEO_INFO_PAR:
     {
       guint par_d, par_n;
-      GstPlayerVideoInfo *video = (GstPlayerVideoInfo *) stream;
+      GstPlayVideoInfo *video = (GstPlayVideoInfo *) stream;
 
-      gst_player_video_info_get_pixel_aspect_ratio (video, &par_n, &par_d);
+      gst_play_video_info_get_pixel_aspect_ratio (video, &par_n, &par_d);
       buffer = g_strdup_printf ("%s%u:%u", label ? "pixel-aspect-ratio : " :
           "", par_n, par_d);
       break;
@@ -691,26 +692,26 @@ stream_info_get_string (GstPlayerStreamInfo * stream, gint type, gboolean label)
     case VIDEO_INFO_FPS:
     {
       gint fps_d, fps_n;
-      GstPlayerVideoInfo *video = (GstPlayerVideoInfo *) stream;
+      GstPlayVideoInfo *video = (GstPlayVideoInfo *) stream;
 
-      gst_player_video_info_get_framerate (video, &fps_n, &fps_d);
+      gst_play_video_info_get_framerate (video, &fps_n, &fps_d);
       buffer = g_strdup_printf ("%s%.2f", label ? "Framerate : " : "",
           (gdouble) fps_n / fps_d);
       break;
     }
     case VIDEO_INFO_RESOLUTION:
     {
-      GstPlayerVideoInfo *video = (GstPlayerVideoInfo *) stream;
+      GstPlayVideoInfo *video = (GstPlayVideoInfo *) stream;
       buffer = g_strdup_printf ("%s%dx%d", label ? "Resolution : " : "",
-          gst_player_video_info_get_width (video),
-          gst_player_video_info_get_height (video));
+          gst_play_video_info_get_width (video),
+          gst_play_video_info_get_height (video));
       break;
     }
     case SUBTITLE_INFO_LANGUAGE:
     {
-      GstPlayerSubtitleInfo *sub = (GstPlayerSubtitleInfo *) stream;
+      GstPlaySubtitleInfo *sub = (GstPlaySubtitleInfo *) stream;
       buffer = g_strdup_printf ("%s%s", label ? "Language : " : "",
-          gst_player_subtitle_info_get_language (sub));
+          gst_play_subtitle_info_get_language (sub));
       break;
     }
     default:
@@ -720,23 +721,23 @@ stream_info_get_string (GstPlayerStreamInfo * stream, gint type, gboolean label)
 }
 
 static void
-fill_tree_model (GtkTreeStore * tree, GtkPlay * play, GstPlayerMediaInfo * info)
+fill_tree_model (GtkTreeStore * tree, GtkPlay * play, GstPlayMediaInfo * info)
 {
   GList *l;
   guint count;
   GtkTreeIter child, parent;
 
   count = 0;
-  for (l = gst_player_media_info_get_stream_list (info); l != NULL; l = l->next) {
+  for (l = gst_play_media_info_get_stream_list (info); l != NULL; l = l->next) {
     gchar *buffer;
     gint i, start, end;
-    GstPlayerStreamInfo *stream = (GstPlayerStreamInfo *) l->data;
+    GstPlayStreamInfo *stream = (GstPlayStreamInfo *) l->data;
 
     /* define the field range based on stream type */
-    if (GST_IS_PLAYER_VIDEO_INFO (stream)) {
+    if (GST_IS_PLAY_VIDEO_INFO (stream)) {
       start = VIDEO_INFO_START + 1;
       end = VIDEO_INFO_END;
-    } else if (GST_IS_PLAYER_AUDIO_INFO (stream)) {
+    } else if (GST_IS_PLAY_AUDIO_INFO (stream)) {
       start = AUDIO_INFO_START + 1;
       end = AUDIO_INFO_END;
     } else {
@@ -750,7 +751,7 @@ fill_tree_model (GtkTreeStore * tree, GtkPlay * play, GstPlayerMediaInfo * info)
     g_free (buffer);
 
     buffer = g_strdup_printf ("Type : %s",
-        gst_player_stream_info_get_stream_type (stream));
+        gst_play_stream_info_get_stream_type (stream));
     gtk_tree_store_append (tree, &child, &parent);
     gtk_tree_store_set (tree, &child, COL_TEXT, buffer, -1);
     g_free (buffer);
@@ -774,7 +775,7 @@ media_info_dialog_button_clicked_cb (GtkButton * button, GtkPlay * play)
 }
 
 static void
-media_info_dialog (GtkPlay * play, GstPlayerMediaInfo * media_info)
+media_info_dialog (GtkPlay * play, GstPlayMediaInfo * media_info)
 {
   GtkBuilder *dialog_ui;
   GtkWidget *view;
@@ -814,9 +815,9 @@ media_info_dialog (GtkPlay * play, GstPlayerMediaInfo * media_info)
 static void
 media_info_clicked_cb (GtkButton * button, GtkPlay * play)
 {
-  GstPlayerMediaInfo *media_info;
+  GstPlayMediaInfo *media_info;
 
-  media_info = gst_player_get_media_info (play->player);
+  media_info = gst_play_get_media_info (play->player);
   if (!media_info)
     return;
 
@@ -891,25 +892,25 @@ G_MODULE_EXPORT void
 seekbar_value_changed_cb (GtkRange * range, GtkPlay * play)
 {
   gdouble value = gtk_range_get_value (GTK_RANGE (play->seekbar));
-  gst_player_seek (play->player, gst_util_uint64_scale (value, GST_SECOND, 1));
+  gst_play_seek (play->player, gst_util_uint64_scale (value, GST_SECOND, 1));
 }
 
 G_MODULE_EXPORT void
 volume_button_value_changed_cb (GtkScaleButton * button, gdouble value,
     GtkPlay * play)
 {
-  gst_player_set_volume (play->player, value);
+  gst_play_set_volume (play->player, value);
 }
 
 static gint
-_get_current_track_index (GtkPlay * play, void *(*func) (GstPlayer * player))
+_get_current_track_index (GtkPlay * play, void *(*func) (GstPlay * player))
 {
   void *obj;
   gint index = -1;
 
   obj = func (play->player);
   if (obj) {
-    index = gst_player_stream_info_get_index ((GstPlayerStreamInfo *) obj);
+    index = gst_play_stream_info_get_index ((GstPlayStreamInfo *) obj);
     g_object_unref (obj);
   }
 
@@ -919,21 +920,21 @@ _get_current_track_index (GtkPlay * play, void *(*func) (GstPlayer * player))
 static gint
 get_current_track_index (GtkPlay * play, GType type)
 {
-  if (type == GST_TYPE_PLAYER_VIDEO_INFO)
+  if (type == GST_TYPE_PLAY_VIDEO_INFO)
     return _get_current_track_index (play,
-        (void *) gst_player_get_current_video_track);
-  else if (type == GST_TYPE_PLAYER_AUDIO_INFO)
+        (void *) gst_play_get_current_video_track);
+  else if (type == GST_TYPE_PLAY_AUDIO_INFO)
     return _get_current_track_index (play,
-        (void *) gst_player_get_current_audio_track);
+        (void *) gst_play_get_current_audio_track);
   else
     return _get_current_track_index (play,
-        (void *) gst_player_get_current_subtitle_track);
+        (void *) gst_play_get_current_subtitle_track);
 }
 
 static gchar *
-get_menu_label (GstPlayerStreamInfo * stream, GType type)
+get_menu_label (GstPlayStreamInfo * stream, GType type)
 {
-  if (type == GST_TYPE_PLAYER_AUDIO_INFO) {
+  if (type == GST_TYPE_PLAY_AUDIO_INFO) {
     gchar *label = NULL;
     gchar *lang, *codec, *channels;
 
@@ -953,7 +954,7 @@ get_menu_label (GstPlayerStreamInfo * stream, GType type)
     g_free (codec);
     g_free (channels);
     return label;
-  } else if (type == GST_TYPE_PLAYER_VIDEO_INFO) {
+  } else if (type == GST_TYPE_PLAY_VIDEO_INFO) {
     /* label format: <codec_name> */
     return stream_info_get_string (stream, VIDEO_INFO_CODEC, FALSE);
   } else {
@@ -979,26 +980,26 @@ new_subtitle_clicked_cb (GtkWidget * unused, GtkPlay * play)
 static void
 disable_track (GtkPlay * play, GType type)
 {
-  if (type == GST_TYPE_PLAYER_VIDEO_INFO) {
-    gst_player_set_video_track_enabled (play->player, FALSE);
-  } else if (type == GST_TYPE_PLAYER_AUDIO_INFO)
-    gst_player_set_audio_track_enabled (play->player, FALSE);
+  if (type == GST_TYPE_PLAY_VIDEO_INFO) {
+    gst_play_set_video_track_enabled (play->player, FALSE);
+  } else if (type == GST_TYPE_PLAY_AUDIO_INFO)
+    gst_play_set_audio_track_enabled (play->player, FALSE);
   else
-    gst_player_set_subtitle_track_enabled (play->player, FALSE);
+    gst_play_set_subtitle_track_enabled (play->player, FALSE);
 }
 
 static void
 change_track (GtkPlay * play, gint index, GType type)
 {
-  if (type == GST_TYPE_PLAYER_VIDEO_INFO) {
-    gst_player_set_video_track (play->player, index);
-    gst_player_set_video_track_enabled (play->player, TRUE);
-  } else if (type == GST_TYPE_PLAYER_AUDIO_INFO) {
-    gst_player_set_audio_track (play->player, index);
-    gst_player_set_audio_track_enabled (play->player, TRUE);
+  if (type == GST_TYPE_PLAY_VIDEO_INFO) {
+    gst_play_set_video_track (play->player, index);
+    gst_play_set_video_track_enabled (play->player, TRUE);
+  } else if (type == GST_TYPE_PLAY_AUDIO_INFO) {
+    gst_play_set_audio_track (play->player, index);
+    gst_play_set_audio_track_enabled (play->player, TRUE);
   } else {
-    gst_player_set_subtitle_track (play->player, index);
-    gst_player_set_subtitle_track_enabled (play->player, TRUE);
+    gst_play_set_subtitle_track (play->player, index);
+    gst_play_set_subtitle_track_enabled (play->player, TRUE);
   }
 }
 
@@ -1029,14 +1030,14 @@ visualization_changed_cb (GtkWidget * widget, GtkPlay * play)
   if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
     name = g_object_get_data (G_OBJECT (widget), "name");
     if (g_strcmp0 (name, "disable") == 0) {
-      gst_player_set_visualization_enabled (play->player, FALSE);
+      gst_play_set_visualization_enabled (play->player, FALSE);
     } else {
       const gchar *vis_name;
 
-      gst_player_set_visualization (play->player, name);
+      gst_play_set_visualization (play->player, name);
       /* if visualization is not enabled then enable it */
-      if (!(vis_name = gst_player_get_current_visualization (play->player))) {
-        gst_player_set_visualization_enabled (play->player, TRUE);
+      if (!(vis_name = gst_play_get_current_visualization (play->player))) {
+        gst_play_set_visualization_enabled (play->player, TRUE);
       }
     }
   }
@@ -1050,11 +1051,11 @@ create_visualization_menu (GtkPlay * play)
   GtkWidget *sep;
   GSList *group = NULL;
   const gchar *cur_vis;
-  GstPlayerVisualization **viss, **p;
+  GstPlayVisualization **viss, **p;
 
   menu = gtk_menu_new ();
-  cur_vis = gst_player_get_current_visualization (play->player);
-  viss = gst_player_visualizations_get ();
+  cur_vis = gst_play_get_current_visualization (play->player);
+  viss = gst_play_visualizations_get ();
 
   p = viss;
   while (*p) {
@@ -1071,7 +1072,7 @@ create_visualization_menu (GtkPlay * play)
         G_CALLBACK (visualization_changed_cb), play);
     p++;
   }
-  gst_player_visualizations_free (viss);
+  gst_play_visualizations_free (viss);
 
   sep = gtk_separator_menu_item_new ();
   item = gtk_radio_menu_item_new_with_label (group, "Disable");
@@ -1088,7 +1089,7 @@ create_visualization_menu (GtkPlay * play)
 }
 
 static GtkWidget *
-create_tracks_menu (GtkPlay * play, GstPlayerMediaInfo * media_info, GType type)
+create_tracks_menu (GtkPlay * play, GstPlayMediaInfo * media_info, GType type)
 {
   GtkWidget *menu;
   GtkWidget *item;
@@ -1102,16 +1103,16 @@ create_tracks_menu (GtkPlay * play, GstPlayerMediaInfo * media_info, GType type)
 
   current_index = get_current_track_index (play, type);
 
-  if (type == GST_TYPE_PLAYER_VIDEO_INFO)
-    list = gst_player_media_info_get_video_streams (media_info);
-  else if (type == GST_TYPE_PLAYER_AUDIO_INFO)
-    list = gst_player_media_info_get_audio_streams (media_info);
+  if (type == GST_TYPE_PLAY_VIDEO_INFO)
+    list = gst_play_media_info_get_video_streams (media_info);
+  else if (type == GST_TYPE_PLAY_AUDIO_INFO)
+    list = gst_play_media_info_get_audio_streams (media_info);
   else
-    list = gst_player_media_info_get_subtitle_streams (media_info);
+    list = gst_play_media_info_get_subtitle_streams (media_info);
 
   menu = gtk_menu_new ();
 
-  if (type == GST_TYPE_PLAYER_SUBTITLE_INFO) {
+  if (type == GST_TYPE_PLAY_SUBTITLE_INFO) {
     GtkWidget *ext_subtitle;
     ext_subtitle = gtk_menu_item_new_with_label ("New File");
     sep = gtk_separator_menu_item_new ();
@@ -1124,12 +1125,12 @@ create_tracks_menu (GtkPlay * play, GstPlayerMediaInfo * media_info, GType type)
   for (l = list; l != NULL; l = l->next) {
     gint index;
     gchar *buffer;
-    GstPlayerStreamInfo *s = (GstPlayerStreamInfo *) l->data;
+    GstPlayStreamInfo *s = (GstPlayStreamInfo *) l->data;
 
     buffer = get_menu_label (s, type);
     item = gtk_radio_menu_item_new_with_label (group, buffer);
     group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item));
-    index = gst_player_stream_info_get_index (s);
+    index = gst_play_stream_info_get_index (s);
     g_object_set_data (G_OBJECT (item), "index", GINT_TO_POINTER (index));
     g_object_set_data (G_OBJECT (item), "type", GSIZE_TO_POINTER (type));
     if (current_index == index)
@@ -1176,7 +1177,7 @@ gtk_player_popup_menu_create (GtkPlay * play, GdkEventButton * event)
   GtkWidget *submenu;
   GtkWidget *vis;
   GtkWidget *cb;
-  GstPlayerMediaInfo *media_info;
+  GstPlayMediaInfo *media_info;
 
   menu = gtk_menu_new ();
   info = gtk_menu_item_new_with_label ("Media Information");
@@ -1190,22 +1191,22 @@ gtk_player_popup_menu_create (GtkPlay * play, GdkEventButton * event)
   vis = gtk_menu_item_new_with_label ("Visualization");
   cb = gtk_menu_item_new_with_label ("Color Balance");
 
-  media_info = gst_player_get_media_info (play->player);
+  media_info = gst_play_get_media_info (play->player);
 
-  if (media_info && !gst_player_media_info_get_video_streams (media_info))
+  if (media_info && !gst_play_media_info_get_video_streams (media_info))
     gtk_widget_set_sensitive (video, FALSE);
   else {
-    submenu = create_tracks_menu (play, media_info, GST_TYPE_PLAYER_VIDEO_INFO);
+    submenu = create_tracks_menu (play, media_info, GST_TYPE_PLAY_VIDEO_INFO);
     if (submenu)
       gtk_menu_item_set_submenu (GTK_MENU_ITEM (video), submenu);
     else
       gtk_widget_set_sensitive (video, FALSE);
   }
 
-  if (media_info && !gst_player_media_info_get_audio_streams (media_info))
+  if (media_info && !gst_play_media_info_get_audio_streams (media_info))
     gtk_widget_set_sensitive (audio, FALSE);
   else {
-    submenu = create_tracks_menu (play, media_info, GST_TYPE_PLAYER_AUDIO_INFO);
+    submenu = create_tracks_menu (play, media_info, GST_TYPE_PLAY_AUDIO_INFO);
     if (submenu)
       gtk_menu_item_set_submenu (GTK_MENU_ITEM (audio), submenu);
     else
@@ -1214,17 +1215,17 @@ gtk_player_popup_menu_create (GtkPlay * play, GdkEventButton * event)
 
   /* enable visualization menu for audio stream */
   if (media_info &&
-      gst_player_media_info_get_audio_streams (media_info) &&
-      !gst_player_media_info_get_video_streams (media_info)) {
+      gst_play_media_info_get_audio_streams (media_info) &&
+      !gst_play_media_info_get_video_streams (media_info)) {
     submenu = create_visualization_menu (play);
     gtk_menu_item_set_submenu (GTK_MENU_ITEM (vis), submenu);
   } else {
     gtk_widget_set_sensitive (vis, FALSE);
   }
 
-  if (media_info && gst_player_media_info_get_video_streams (media_info)) {
+  if (media_info && gst_play_media_info_get_video_streams (media_info)) {
     submenu = create_tracks_menu (play, media_info,
-        GST_TYPE_PLAYER_SUBTITLE_INFO);
+        GST_TYPE_PLAY_SUBTITLE_INFO);
     gtk_menu_item_set_submenu (GTK_MENU_ITEM (sub), submenu);
   } else {
     gtk_widget_set_sensitive (sub, FALSE);
@@ -1235,7 +1236,7 @@ gtk_player_popup_menu_create (GtkPlay * play, GdkEventButton * event)
   gtk_widget_set_sensitive (prev, g_list_previous
       (play->current_uri) ? TRUE : FALSE);
   gtk_widget_set_sensitive (info, media_info ? TRUE : FALSE);
-  gtk_widget_set_sensitive (cb, gst_player_has_color_balance (play->player) ?
+  gtk_widget_set_sensitive (cb, gst_play_has_color_balance (play->player) ?
       TRUE : FALSE);
 
   g_signal_connect (G_OBJECT (open), "activate",
@@ -1424,14 +1425,14 @@ create_ui (GtkPlay * play)
   gtk_application_add_window (GTK_APPLICATION (g_application_get_default ()),
       GTK_WINDOW (play));
 
-  play->renderer = gst_player_gtk_video_renderer_new ();
+  play->renderer = gst_play_gtk_video_renderer_new ();
   if (play->renderer) {
     play->video_area =
-        gst_player_gtk_video_renderer_get_widget (GST_PLAYER_GTK_VIDEO_RENDERER
+        gst_play_gtk_video_renderer_get_widget (GST_PLAY_GTK_VIDEO_RENDERER
         (play->renderer));
     g_object_unref (play->video_area);
   } else {
-    play->renderer = gst_player_video_overlay_video_renderer_new (NULL);
+    play->renderer = gst_play_video_overlay_video_renderer_new (NULL);
 
     play->video_area = gtk_drawing_area_new ();
     g_signal_connect (play->video_area, "realize",
@@ -1510,7 +1511,7 @@ create_ui (GtkPlay * play)
 }
 
 static void
-duration_changed_cb (GstPlayer * unused, GstClockTime duration, GtkPlay * play)
+duration_changed_cb (GstPlay * unused, GstClockTime duration, GtkPlay * play)
 {
   g_signal_handlers_block_by_func (play->seekbar,
       seekbar_value_changed_cb, play);
@@ -1541,22 +1542,26 @@ update_position_label (GtkLabel * label, guint64 seconds)
 }
 
 static void
-position_updated_cb (GstPlayer * unused, GstClockTime position, GtkPlay * play)
+position_updated_cb (GstPlaySignalAdapter * unused, GstClockTime position,
+    GtkPlay * play)
 {
+  if (!GST_IS_PLAY (play->player))
+    return;
+
   g_signal_handlers_block_by_func (play->seekbar,
       seekbar_value_changed_cb, play);
   gtk_range_set_value (GTK_RANGE (play->seekbar),
       (gdouble) position / GST_SECOND);
   update_position_label (play->elapshed_label, position / GST_SECOND);
   update_position_label (play->remain_label,
-      GST_CLOCK_DIFF (position, gst_player_get_duration (play->player)) /
+      GST_CLOCK_DIFF (position, gst_play_get_duration (play->player)) /
       GST_SECOND);
   g_signal_handlers_unblock_by_func (play->seekbar,
       seekbar_value_changed_cb, play);
 }
 
 static void
-eos_cb (GstPlayer * unused, GtkPlay * play)
+eos_cb (GstPlaySignalAdapter * unused, GtkPlay * play)
 {
   if (play->playing) {
     GList *next = NULL;
@@ -1570,7 +1575,7 @@ eos_cb (GstPlayer * unused, GtkPlay * play)
     } else {
       GtkWidget *image;
 
-      gst_player_pause (play->player);
+      gst_play_pause (play->player);
       image = TOOLBAR_GET_OBJECT (play_image);
       gtk_button_set_image (GTK_BUTTON (play->play_pause_button), image);
       play->playing = FALSE;
@@ -1583,7 +1588,7 @@ eos_cb (GstPlayer * unused, GtkPlay * play)
 }
 
 static GdkPixbuf *
-gtk_play_get_cover_image (GstPlayerMediaInfo * media_info)
+gtk_play_get_cover_image (GstPlayMediaInfo * media_info)
 {
   GstSample *sample;
   GstMapInfo info;
@@ -1595,7 +1600,7 @@ gtk_play_get_cover_image (GstPlayerMediaInfo * media_info)
   GstTagImageType type = GST_TAG_IMAGE_TYPE_UNDEFINED;
 
   /* get image sample buffer from media */
-  sample = gst_player_media_info_get_image_sample (media_info);
+  sample = gst_play_media_info_get_image_sample (media_info);
   if (!sample)
     return NULL;
 
@@ -1640,19 +1645,19 @@ gtk_play_get_cover_image (GstPlayerMediaInfo * media_info)
 }
 
 static void
-media_info_updated_cb (GstPlayer * player, GstPlayerMediaInfo * media_info,
-    GtkPlay * play)
+media_info_updated_cb (GstPlaySignalAdapter * adapter,
+    GstPlayMediaInfo * media_info, GtkPlay * play)
 {
   const gchar *title;
   GdkPixbuf *pixbuf;
   gchar *basename = NULL;
   gchar *filename = NULL;
 
-  title = gst_player_media_info_get_title (media_info);
+  title = gst_play_media_info_get_title (media_info);
 
   if (!title) {
     filename =
-        g_filename_from_uri (gst_player_media_info_get_uri (media_info), NULL,
+        g_filename_from_uri (gst_play_media_info_get_uri (media_info), NULL,
         NULL);
     basename = g_path_get_basename (filename);
   }
@@ -1671,12 +1676,12 @@ media_info_updated_cb (GstPlayer * player, GstPlayerMediaInfo * media_info,
 }
 
 static void
-player_volume_changed_cb (GstPlayer * player, GtkPlay * play)
+player_volume_changed_cb (GstPlaySignalAdapter * adapter, GtkPlay * play)
 {
   gdouble new_val, cur_val;
 
   cur_val = gtk_scale_button_get_value (GTK_SCALE_BUTTON (play->volume_button));
-  new_val = gst_player_get_volume (play->player);
+  new_val = gst_play_get_volume (play->player);
 
   if (fabs (cur_val - new_val) > 0.001) {
     g_signal_handlers_block_by_func (play->volume_button,
@@ -1742,22 +1747,23 @@ gtk_play_constructor (GType type, guint n_construct_params,
 
   create_ui (self);
 
-  self->player =
-      gst_player_new (self->renderer);
+  self->player = gst_play_new (self->renderer);
+  self->signal_adapter = gst_play_signal_adapter_new (self->player);
 
-  g_signal_connect (self->player, "position-updated",
+  g_signal_connect (self->signal_adapter, "position-updated",
       G_CALLBACK (position_updated_cb), self);
-  g_signal_connect (self->player, "duration-changed",
+  g_signal_connect (self->signal_adapter, "duration-changed",
       G_CALLBACK (duration_changed_cb), self);
-  g_signal_connect (self->player, "end-of-stream", G_CALLBACK (eos_cb), self);
-  g_signal_connect (self->player, "media-info-updated",
+  g_signal_connect (self->signal_adapter, "end-of-stream", G_CALLBACK (eos_cb),
+      self);
+  g_signal_connect (self->signal_adapter, "media-info-updated",
       G_CALLBACK (media_info_updated_cb), self);
-  g_signal_connect (self->player, "volume-changed",
+  g_signal_connect (self->signal_adapter, "volume-changed",
       G_CALLBACK (player_volume_changed_cb), self);
 
   /* enable visualization (by default playbin uses goom) */
   /* if visualization is enabled then use the first element */
-  gst_player_set_visualization_enabled (self->player, TRUE);
+  gst_play_set_visualization_enabled (self->player, TRUE);
 
   g_signal_connect (G_OBJECT (self), "show", G_CALLBACK (show_cb), NULL);
 
@@ -1777,9 +1783,12 @@ gtk_play_dispose (GObject * object)
   if (self->uris)
     g_list_free_full (self->uris, g_free);
   self->uris = NULL;
+
+  g_clear_object (&self->signal_adapter);
+
   if (self->player) {
-    gst_player_stop (self->player);
-    g_object_unref (self->player);
+    gst_play_stop (self->player);
+    gst_object_unref (self->player);
   }
   self->player = NULL;
 
index f07d824..92d9a9a 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "gtk-video-renderer.h"
 
-struct _GstPlayerGtkVideoRenderer
+struct _GstPlayGtkVideoRenderer
 {
   GObject parent;
 
@@ -28,14 +28,14 @@ struct _GstPlayerGtkVideoRenderer
   GtkWidget *widget;
 };
 
-struct _GstPlayerGtkVideoRendererClass
+struct _GstPlayGtkVideoRendererClass
 {
   GObjectClass parent_class;
 };
 
 static void
     gst_player_gtk_video_renderer_interface_init
-    (GstPlayerVideoRendererInterface * iface);
+    (GstPlayVideoRendererInterface * iface);
 
 enum
 {
@@ -44,9 +44,9 @@ enum
   GTK_VIDEO_RENDERER_PROP_LAST
 };
 
-G_DEFINE_TYPE_WITH_CODE (GstPlayerGtkVideoRenderer,
+G_DEFINE_TYPE_WITH_CODE (GstPlayGtkVideoRenderer,
     gst_player_gtk_video_renderer, G_TYPE_OBJECT,
-    G_IMPLEMENT_INTERFACE (GST_TYPE_PLAYER_VIDEO_RENDERER,
+    G_IMPLEMENT_INTERFACE (GST_TYPE_PLAY_VIDEO_RENDERER,
         gst_player_gtk_video_renderer_interface_init));
 
 static GParamSpec
@@ -56,7 +56,7 @@ static void
 gst_player_gtk_video_renderer_get_property (GObject * object,
     guint prop_id, GValue * value, GParamSpec * pspec)
 {
-  GstPlayerGtkVideoRenderer *self = GST_PLAYER_GTK_VIDEO_RENDERER (object);
+  GstPlayGtkVideoRenderer *self = GST_PLAY_GTK_VIDEO_RENDERER (object);
 
   switch (prop_id) {
     case GTK_VIDEO_RENDERER_PROP_WIDGET:
@@ -71,7 +71,7 @@ gst_player_gtk_video_renderer_get_property (GObject * object,
 static void
 gst_player_gtk_video_renderer_finalize (GObject * object)
 {
-  GstPlayerGtkVideoRenderer *self = GST_PLAYER_GTK_VIDEO_RENDERER (object);
+  GstPlayGtkVideoRenderer *self = GST_PLAY_GTK_VIDEO_RENDERER (object);
 
   if (self->sink)
     gst_object_unref (self->sink);
@@ -84,7 +84,7 @@ gst_player_gtk_video_renderer_finalize (GObject * object)
 
 static void
     gst_player_gtk_video_renderer_class_init
-    (GstPlayerGtkVideoRendererClass * klass)
+    (GstPlayGtkVideoRendererClass * klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
@@ -102,7 +102,7 @@ static void
 }
 
 static void
-gst_player_gtk_video_renderer_init (GstPlayerGtkVideoRenderer * self)
+gst_player_gtk_video_renderer_init (GstPlayGtkVideoRenderer * self)
 {
   GstElement *gtk_sink = gst_element_factory_make ("gtkglsink", NULL);
 
@@ -122,27 +122,27 @@ gst_player_gtk_video_renderer_init (GstPlayerGtkVideoRenderer * self)
 }
 
 static GstElement *gst_player_gtk_video_renderer_create_video_sink
-    (GstPlayerVideoRenderer * iface, GstPlayer * player)
+    (GstPlayVideoRenderer * iface, GstPlay * player)
 {
-  GstPlayerGtkVideoRenderer *self = GST_PLAYER_GTK_VIDEO_RENDERER (iface);
+  GstPlayGtkVideoRenderer *self = GST_PLAY_GTK_VIDEO_RENDERER (iface);
 
   return gst_object_ref (self->sink);
 }
 
 static void
     gst_player_gtk_video_renderer_interface_init
-    (GstPlayerVideoRendererInterface * iface)
+    (GstPlayVideoRendererInterface * iface)
 {
   iface->create_video_sink = gst_player_gtk_video_renderer_create_video_sink;
 }
 
 /**
- * gst_player_gtk_video_renderer_new:
+ * gst_play_gtk_video_renderer_new:
  *
  * Returns: (transfer full):
  */
-GstPlayerVideoRenderer *
-gst_player_gtk_video_renderer_new (void)
+GstPlayVideoRenderer *
+gst_play_gtk_video_renderer_new (void)
 {
   GstElementFactory *factory;
 
@@ -154,21 +154,21 @@ gst_player_gtk_video_renderer_new (void)
 
   gst_object_unref (factory);
 
-  return g_object_new (GST_TYPE_PLAYER_GTK_VIDEO_RENDERER, NULL);
+  return g_object_new (GST_TYPE_PLAY_GTK_VIDEO_RENDERER, NULL);
 }
 
 /**
- * gst_player_gtk_video_renderer_get_widget:
- * @self: #GstPlayerVideoRenderer instance
+ * gst_play_gtk_video_renderer_get_widget:
+ * @self: #GstPlayVideoRenderer instance
  *
  * Returns: (transfer full): The GtkWidget
  */
-GtkWidget *gst_player_gtk_video_renderer_get_widget
-    (GstPlayerGtkVideoRenderer * self)
+GtkWidget *gst_play_gtk_video_renderer_get_widget
+    (GstPlayGtkVideoRenderer * self)
 {
   GtkWidget *widget;
 
-  g_return_val_if_fail (GST_IS_PLAYER_GTK_VIDEO_RENDERER (self), NULL);
+  g_return_val_if_fail (GST_IS_PLAY_GTK_VIDEO_RENDERER (self), NULL);
 
   g_object_get (self, "widget", &widget, NULL);
 
index 482b609..91deeff 100644 (file)
 #ifndef __GTK_VIDEO_RENDERER_H__
 #define __GTK_VIDEO_RENDERER_H__
 
-#include <gst/player/player.h>
+#include <gst/play/play.h>
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
-typedef struct _GstPlayerGtkVideoRenderer
-    GstPlayerGtkVideoRenderer;
-typedef struct _GstPlayerGtkVideoRendererClass
-    GstPlayerGtkVideoRendererClass;
+typedef struct _GstPlayGtkVideoRenderer
+    GstPlayGtkVideoRenderer;
+typedef struct _GstPlayGtkVideoRendererClass
+    GstPlayGtkVideoRendererClass;
 
-#define GST_TYPE_PLAYER_GTK_VIDEO_RENDERER             (gst_player_gtk_video_renderer_get_type ())
-#define GST_IS_PLAYER_GTK_VIDEO_RENDERER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PLAYER_GTK_VIDEO_RENDERER))
-#define GST_IS_PLAYER_GTK_VIDEO_RENDERER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PLAYER_GTK_VIDEO_RENDERER))
-#define GST_PLAYER_GTK_VIDEO_RENDERER_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PLAYER_GTK_VIDEO_RENDERER, GstPlayerGtkVideoRendererClass))
-#define GST_PLAYER_GTK_VIDEO_RENDERER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PLAYER_GTK_VIDEO_RENDERER, GstPlayerGtkVideoRenderer))
-#define GST_PLAYER_GTK_VIDEO_RENDERER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLAYER_GTK_VIDEO_RENDERER, GstPlayerGtkVideoRendererClass))
-#define GST_PLAYER_GTK_VIDEO_RENDERER_CAST(obj)        ((GstPlayerGtkVideoRenderer*)(obj))
+#define GST_TYPE_PLAY_GTK_VIDEO_RENDERER             (gst_player_gtk_video_renderer_get_type ())
+#define GST_IS_PLAY_GTK_VIDEO_RENDERER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PLAY_GTK_VIDEO_RENDERER))
+#define GST_IS_PLAY_GTK_VIDEO_RENDERER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PLAY_GTK_VIDEO_RENDERER))
+#define GST_PLAY_GTK_VIDEO_RENDERER_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PLAY_GTK_VIDEO_RENDERER, GstPlayGtkVideoRendererClass))
+#define GST_PLAY_GTK_VIDEO_RENDERER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PLAY_GTK_VIDEO_RENDERER, GstPlayGtkVideoRenderer))
+#define GST_PLAY_GTK_VIDEO_RENDERER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLAY_GTK_VIDEO_RENDERER, GstPlayGtkVideoRendererClass))
+#define GST_PLAY_GTK_VIDEO_RENDERER_CAST(obj)        ((GstPlayGtkVideoRenderer*)(obj))
 
 GType gst_player_gtk_video_renderer_get_type (void);
 
-GstPlayerVideoRenderer * gst_player_gtk_video_renderer_new (void);
-GtkWidget * gst_player_gtk_video_renderer_get_widget (GstPlayerGtkVideoRenderer * self);
+GstPlayVideoRenderer * gst_play_gtk_video_renderer_new (void);
+GtkWidget * gst_play_gtk_video_renderer_get_widget (GstPlayGtkVideoRenderer * self);
 
 G_END_DECLS
 
index f7a7419..a09744f 100644 (file)
@@ -13,5 +13,5 @@ if gtk_dep.found()
         gtk_play_resources,
        'gtk-video-renderer.h',
        'gtk-video-renderer.c'],
-      dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplayer_dep, gtk_dep, x11_dep])
+      dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplay_dep, gtk_dep, x11_dep])
 endif