[totem] Bug 151909 – Add frame-by-frame playback



commit 5cc7ad5f8521684612443298944a4517e6923e72
Author: Bastien Nocera <hadess hadess net>
Date:   Tue Jun 30 17:39:16 2009 +0100

    Bug 151909 â?? Add frame-by-frame playback
    
    2009-06-30  Bastien Nocera  <hadess hadess net>
    
    	* src/backend/bacon-video-widget-gst-0.10.c
    	(bacon_video_widget_step):
    	* src/backend/bacon-video-widget.h:
    	* src/totem-object.c (totem_action_handle_key_press):
    	Add frame-by-frame stepping, requires gstreamer 0.10.24,
    	and a newer gst-plugins-base (Closes: #151909)

 ChangeLog                                 |    9 +++++++++
 src/backend/bacon-video-widget-gst-0.10.c |   13 +++++++++++++
 src/backend/bacon-video-widget.h          |    2 ++
 src/totem-object.c                        |    4 ++++
 4 files changed, 28 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 77174c6..64e4f29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2009-06-30  Bastien Nocera  <hadess hadess net>
 
+	* src/backend/bacon-video-widget-gst-0.10.c
+	(bacon_video_widget_step):
+	* src/backend/bacon-video-widget.h:
+	* src/totem-object.c (totem_action_handle_key_press):
+	Add frame-by-frame stepping, requires gstreamer 0.10.24,
+	and a newer gst-plugins-base (Closes: #151909)
+
+2009-06-30  Bastien Nocera  <hadess hadess net>
+
 	* src/plugins/lirc/totem_lirc_default: Small tweaks for the
 	default LIRC setup
 
diff --git a/src/backend/bacon-video-widget-gst-0.10.c b/src/backend/bacon-video-widget-gst-0.10.c
index 5a1462e..95a19e4 100644
--- a/src/backend/bacon-video-widget-gst-0.10.c
+++ b/src/backend/bacon-video-widget-gst-0.10.c
@@ -3391,6 +3391,19 @@ bacon_video_widget_seek (BaconVideoWidget *bvw, double position, GError **error)
   return bacon_video_widget_seek_time (bvw, seek_time / GST_MSECOND, error);
 }
 
+gboolean
+bacon_video_widget_step (BaconVideoWidget *bvw, GError **error)
+{
+#if GST_CHECK_VERSION(0,10,24)
+  GstEvent *event;
+
+  event = gst_event_new_step (GST_FORMAT_BUFFERS, 1, 1.0, TRUE, FALSE);
+
+  gst_element_send_event (bvw->priv->play, event);
+#endif
+  return TRUE;
+}
+
 static void
 bvw_stop_play_pipeline (BaconVideoWidget * bvw)
 {
diff --git a/src/backend/bacon-video-widget.h b/src/backend/bacon-video-widget.h
index 616cfe9..112c710 100644
--- a/src/backend/bacon-video-widget.h
+++ b/src/backend/bacon-video-widget.h
@@ -183,6 +183,8 @@ gboolean bacon_video_widget_seek		 (BaconVideoWidget *bvw,
 gboolean bacon_video_widget_seek_time		 (BaconVideoWidget *bvw,
 						  gint64 time,
 						  GError **error);
+gboolean bacon_video_widget_step		 (BaconVideoWidget *bvw,
+						  GError **error);
 gboolean bacon_video_widget_can_direct_seek	 (BaconVideoWidget *bvw);
 double bacon_video_widget_get_position           (BaconVideoWidget *bvw);
 gint64 bacon_video_widget_get_current_time       (BaconVideoWidget *bvw);
diff --git a/src/totem-object.c b/src/totem-object.c
index 5f711f0..3f0a26c 100644
--- a/src/totem-object.c
+++ b/src/totem-object.c
@@ -3463,6 +3463,10 @@ totem_action_handle_key_press (Totem *totem, GdkEventKey *event)
 		else 
 			totem_action_play_pause (totem);
 		break;
+	case GDK_period:
+		totem_action_pause (totem);
+		bacon_video_widget_step (totem->bvw, NULL);
+		break;
 #ifdef HAVE_XFREE
 	case XF86XK_AudioPause:
 	case XF86XK_AudioStop:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]