=== modified file 'Audience/Audience.vala'
--- Audience/Audience.vala	2013-04-13 20:13:03 +0000
+++ Audience/Audience.vala	2013-04-15 17:37:26 +0000
@@ -242,13 +242,24 @@
                         mainwindow.destroy ();
                         break;
                     case Gdk.Key.Left:
-                        if ((video_player.progress - 0.05) < 0)
-                            video_player.progress = 0.0;
+                        if ((e.state & Gdk.ModifierType.CONTROL_MASK) != Gdk.ModifierType.CONTROL_MASK)
+                        {
+                            video_player.rewind_seconds (-3);
+                        }
                         else
-                            video_player.progress -= 0.05;
+                        {
+                            video_player.rewind_seconds (-60);
+                        }
                         break;
                     case Gdk.Key.Right:
-                        video_player.progress += 0.05;
+                        if ((e.state & Gdk.ModifierType.CONTROL_MASK) != Gdk.ModifierType.CONTROL_MASK)
+                        {
+                            video_player.rewind_seconds (3);
+                        }
+                        else
+                        {
+                            video_player.rewind_seconds (60);
+                        }
                         break;
                     case Gdk.Key.a:
                         next_audio ();

=== modified file 'Audience/Widgets/VideoPlayer.vala'
--- Audience/Widgets/VideoPlayer.vala	2013-04-07 18:53:17 +0000
+++ Audience/Widgets/VideoPlayer.vala	2013-04-15 17:37:26 +0000
@@ -624,5 +624,26 @@
 				dpy.get_screensaver (out timeout, out interval, out prefer_blanking, out allow_exposures);
 			dpy.set_screensaver (enable ? timeout : 0, interval, prefer_blanking, allow_exposures);
 		}
+
+		public void rewind_seconds (int seconds)
+		{
+			int64 gstSecond = 1000000000;
+			int64 position, length;
+			var time = Gst.Format.TIME;
+#if HAS_CLUTTER_GST_1
+			playbin.query_duration (Gst.Format.TIME, out length);
+			playbin.query_position (Gst.Format.TIME, out position);
+#else
+			playbin.query_duration (ref time, out length);
+			playbin.query_position (ref time, out position);
+#endif
+			if ((position + seconds * gstSecond) < 0)
+			{
+				playbin.seek_simple (Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE, 1);
+				return;
+			}
+			
+			playbin.seek_simple (Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE, (int64)(position + seconds * gstSecond));
+		}
 	}
 }

