Package: pitivi Version: 2020.09.2-2 Severity: grave Tags: upstream patch Justification: renders package unusable Forwarded: https://gitlab.gnome.org/GNOME/pitivi/-/issues/2498
Dear Maintainer, The version of pitivi in bullseye is affected by the bug listed above: rendered videos have A/V out of sync by a few seconds, while they sound just find in the preview. I'm attaching the upstream patch that fixed the issue, already backported to the current Debian package. I rebuilt pitivi locally with this patch, and confirmed that it does fix the issue. -- System Information: Debian Release: bullseye/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'unstable'), (500, 'testing'), (1, 'experimental-debug'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: arm64 Kernel: Linux 5.10.0-4-amd64 (SMP w/4 CPU threads) Locale: LANG=pt_BR.UTF-8, LC_CTYPE=pt_BR.UTF-8 (charmap=UTF-8), LANGUAGE=pt_BR:pt:en Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages pitivi depends on: ii gir1.2-gdkpixbuf-2.0 2.42.2+dfsg-1 ii gir1.2-ges-1.0 1.18.3-1 ii gir1.2-glib-2.0 1.66.1-1+b1 ii gir1.2-gst-plugins-bad-1.0 1.18.3-1+b1 ii gir1.2-gst-plugins-base-1.0 1.18.3-1 ii gir1.2-gstreamer-1.0 1.18.3-1 ii gir1.2-gtk-3.0 3.24.24-3 ii gir1.2-pango-1.0 1.46.2-3 ii gir1.2-peas-1.0 1.28.0-2+b1 pn gstreamer1.0-audiosink <none> ii gstreamer1.0-gl [gstreamer1.0-videosink] 1.18.3-1 ii gstreamer1.0-gtk3 [gstreamer1.0-videosink] 1.18.3-1 ii gstreamer1.0-plugins-bad [gstreamer1.0-videosink] 1.18.3-1+b1 ii gstreamer1.0-plugins-base 1.18.3-1 ii gstreamer1.0-plugins-good [gstreamer1.0-videosink] 1.18.3-1 ii gstreamer1.0-x [gstreamer1.0-videosink] 1.18.3-1 ii libc6 2.31-9 ii libcairo2 1.16.0-5 ii libglib2.0-0 2.66.7-2 ii libgstreamer1.0-0 1.18.3-1 ii libpython3.9 3.9.2-1 ii python3 3.9.2-2 ii python3-cairo 1.16.2-4+b2 ii python3-dbus 1.2.16-5 ii python3-ges-1.0 1.18.3-1 ii python3-gi 3.38.0-2 ii python3-gi-cairo 3.38.0-2 ii python3-gst-1.0 1.18.3-1 ii python3-matplotlib 3.3.4-1 ii python3-numpy 1:1.19.5-1 ii python3-xdg 0.27-2 ii python3.9 3.9.2-1 pitivi recommends no packages. Versions of packages pitivi suggests: pn frei0r-plugins <none> ii gir1.2-gnomedesktop-3.0 3.38.4-1 pn gir1.2-gsound-1.0 <none> ii gir1.2-notify-0.7 0.7.9-3 ii gstreamer1.0-libav 1.18.3-1 ii gstreamer1.0-plugins-ugly 1.18.3-1 -- no debconf information
From: Thibault Saunier <tsaun...@igalia.com> Date: Mon, 11 Jan 2021 17:50:26 -0300 Subject: pipeline: Avoid committing the timeline while rendering This can cause weird behavior and in particular it can lead to de-synchronized audio/video streams. Fixes https://gitlab.gnome.org/GNOME/pitivi/-/issues/2498 --- pitivi/editorperspective.py | 3 +++ pitivi/utils/pipeline.py | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pitivi/editorperspective.py b/pitivi/editorperspective.py index a25450c..49cbf61 100644 --- a/pitivi/editorperspective.py +++ b/pitivi/editorperspective.py @@ -128,6 +128,9 @@ class EditorPerspective(Perspective, Loggable): # Nothing to work with, Pitivi is starting up. return + if self.app.project_manager.current_project.pipeline.rendering(): + return + # Commit the timeline so its nested timelines assets are refreshed. ges_timeline.commit() diff --git a/pitivi/utils/pipeline.py b/pitivi/utils/pipeline.py index 95be106..c92c880 100644 --- a/pitivi/utils/pipeline.py +++ b/pitivi/utils/pipeline.py @@ -424,7 +424,7 @@ class SimplePipeline(GObject.Object, Loggable): Gst.debug_bin_to_dot_file_with_ts(self._pipeline, Gst.DebugGraphDetails.ALL, "pitivi.error") - if not self._rendering(): + if not self.rendering(): self._remove_waiting_for_async_done_timeout() self._recover() elif message.type == Gst.MessageType.DURATION_CHANGED: @@ -498,7 +498,7 @@ class SimplePipeline(GObject.Object, Loggable): raise PipelineError("Couldn't get duration: Returned None") return dur - def _rendering(self): + def rendering(self): return False @@ -611,7 +611,7 @@ class Pipeline(GES.Pipeline, SimplePipeline): # Nowhere to seek. return - if self._rendering(): + if self.rendering(): raise PipelineError("Trying to seek while rendering") st = Gst.Structure.new_empty("seek") @@ -675,6 +675,6 @@ class Pipeline(GES.Pipeline, SimplePipeline): self._was_empty = True self._remove_waiting_for_async_done_timeout() - def _rendering(self): + def rendering(self): mask = GES.PipelineFlags.RENDER | GES.PipelineFlags.SMART_RENDER return self._pipeline.get_mode() & mask != 0
signature.asc
Description: PGP signature