Use same seek parameters everywhere

This commit is contained in:
Jan Hamal Dvořák 2025-03-11 10:05:41 +01:00
parent c62963091d
commit 4985de9ca8
2 changed files with 9 additions and 25 deletions

View file

@ -7,6 +7,8 @@ from gi.repository import Gst
from .file_model import FileItem
DEFAULT_SEEK_FLAGS = Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT
class Thumbnailer(threading.Thread):
queue: Queue[FileItem | None]
@ -84,11 +86,7 @@ class Thumbnailer(threading.Thread):
return
seek_pos = duration // 3
pipeline.seek_simple(
Gst.Format.TIME,
Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT,
seek_pos,
)
pipeline.seek_simple(Gst.Format.TIME, DEFAULT_SEEK_FLAGS, seek_pos)
# Start playing to capture frame
pipeline.set_state(Gst.State.PLAYING)

View file

@ -4,6 +4,8 @@ from pathlib import Path
from gi.repository import GObject, Gst, Gtk
DEFAULT_SEEK_FLAGS = Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT
class VideoPlayer(GObject.Object):
pipeline: Gst.Pipeline
@ -65,11 +67,7 @@ class VideoPlayer(GObject.Object):
if position:
# Seek to saved position
self.pipeline.seek_simple(
Gst.Format.TIME,
Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE,
position,
)
self.pipeline.seek_simple(Gst.Format.TIME, DEFAULT_SEEK_FLAGS, position)
# Start playing
self.pipeline.set_state(Gst.State.PLAYING)
@ -102,29 +100,17 @@ class VideoPlayer(GObject.Object):
if new_pos < 0:
new_pos = 0
self.pipeline.seek_simple(
Gst.Format.TIME,
Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT,
new_pos,
)
self.pipeline.seek_simple(Gst.Format.TIME, DEFAULT_SEEK_FLAGS, new_pos)
def seek_start(self):
"""Seek to the start of the video."""
self.pipeline.seek_simple(
Gst.Format.TIME,
Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT,
0,
)
self.pipeline.seek_simple(Gst.Format.TIME, DEFAULT_SEEK_FLAGS, 0)
def seek_end(self):
"""Seek to the end of the video."""
duration = self.get_duration()
if duration:
self.pipeline.seek_simple(
Gst.Format.TIME,
Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT,
duration,
)
self.pipeline.seek_simple(Gst.Format.TIME, DEFAULT_SEEK_FLAGS, duration)
def get_position(self) -> int | None:
"""Get current playback position in nanoseconds"""