From 6bd0bc62b95aa9a99bd7db0b2a9afb69a34df1a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org>
Date: Tue, 11 Mar 2025 10:59:27 +0100
Subject: [PATCH] Use only keyframes when thumbnailing

---
 lazy_player/thumbnailer.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lazy_player/thumbnailer.py b/lazy_player/thumbnailer.py
index f12127b..fc222dc 100644
--- a/lazy_player/thumbnailer.py
+++ b/lazy_player/thumbnailer.py
@@ -9,7 +9,14 @@ from gi.repository import GLib, Gst
 if TYPE_CHECKING:
     from .file_model import FileItem
 
-DEFAULT_SEEK_FLAGS = Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT
+DEFAULT_SEEK_FLAGS = (
+    Gst.SeekFlags.FLUSH
+    | Gst.SeekFlags.KEY_UNIT
+    | Gst.SeekFlags.SNAP_NEAREST
+    | Gst.SeekFlags.TRICKMODE
+    | Gst.SeekFlags.TRICKMODE_KEY_UNITS
+    | Gst.SeekFlags.TRICKMODE_NO_AUDIO
+)
 
 
 class Thumbnailer(threading.Thread):
@@ -64,7 +71,7 @@ class Thumbnailer(threading.Thread):
             "uridecodebin name=uridecodebin ! "
             "videoconvert ! "
             "jpegenc quality=85 ! "
-            "appsink name=sink"
+            "appsink sync=false name=sink"
         )
 
         pipeline = Gst.parse_launch(pipeline_str)