[totem] backend: Rewind to beginning of chapter



commit d97997a5e3393dc8fad678dc14007ff0d7df8ba5
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Mar 18 08:26:12 2013 +0100

    backend: Rewind to beginning of chapter
    
    If the seek happened within 4 seconds of the start of the start
    of the chapter, go to the previous chapter, otherwise, seek
    back to the beginning of the chapter.

 src/backend/bacon-video-widget.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/src/backend/bacon-video-widget.c b/src/backend/bacon-video-widget.c
index c282046..34aa281 100644
--- a/src/backend/bacon-video-widget.c
+++ b/src/backend/bacon-video-widget.c
@@ -95,6 +95,7 @@
 #define OSD_SIZE 130                           /* Size of the OSD popup */
 #define OSD_MARGIN 8                           /* Pixels from the top-left */
 #define LOGO_SIZE 256                          /* Maximum size of the logo */
+#define REWIND_OR_PREVIOUS 4000
 
 #define MAX_NETWORK_SPEED 10752
 #define BUFFERING_LEFT_RATIO 1.1
@@ -4060,8 +4061,18 @@ handle_chapters_seek (BaconVideoWidget *bvw,
   entry = NULL;
   if (forward && l->next)
     entry = l->next->data;
-  else if (!forward && l->prev)
-    entry = l->prev->data;
+  else if (!forward) {
+    gint64 current_start;
+    if (gst_toc_entry_get_start_stop_times (l->data, &current_start, NULL)) {
+      if (bvw->priv->current_time - current_start / GST_MSECOND < REWIND_OR_PREVIOUS &&
+         bvw->priv->current_time - current_start / GST_MSECOND > 0 &&
+         l->prev) {
+       entry = l->prev->data;
+      } else {
+       entry = l->data;
+      }
+    }
+  }
 
   if (!entry)
     return FALSE;


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