Fix preroll on some DVDs (#1196411)

This commit is contained in:
Wim Taymans 2015-06-15 10:10:43 +02:00
parent a56a57e647
commit edf4a8243a
2 changed files with 68 additions and 1 deletions

View File

@ -0,0 +1,62 @@
From 69e004344a74a7bd3ef7eac6812a696882d7af43 Mon Sep 17 00:00:00 2001
From: Jan Schmidt <jan@centricular.com>
Date: Sun, 8 Feb 2015 04:51:13 +1100
Subject: [PATCH] resindvd: Don't send meaningless segment position downstream
Don't place a meaningless value in the position field in
outgoing segments - values have to be in the range start->stop.
https://bugzilla.gnome.org/show_bug.cgi?id=740558
---
ext/resindvd/gstmpegdemux.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/ext/resindvd/gstmpegdemux.c b/ext/resindvd/gstmpegdemux.c
index fcf9d75..7753514 100644
--- a/ext/resindvd/gstmpegdemux.c
+++ b/ext/resindvd/gstmpegdemux.c
@@ -942,22 +942,20 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
demux->bytes_since_scr = 0;
GST_DEBUG_OBJECT (demux,
- "demux: received new segment start %" G_GINT64_FORMAT " stop %"
- G_GINT64_FORMAT " time %" G_GINT64_FORMAT
- " base %" G_GINT64_FORMAT, start, stop, time, base);
+ "demux: received new segment %" GST_SEGMENT_FORMAT,
+ &demux->sink_segment);
#if 0
g_print ("demux: received new segment start %" G_GINT64_FORMAT " stop %"
G_GINT64_FORMAT " time %" G_GINT64_FORMAT
" base %" G_GINT64_FORMAT "\n", start, stop, time, base);
#endif
- position = base - start;
- adjust = position + SCR_MUNGE;
+ adjust = base - start + SCR_MUNGE;
if (adjust >= 0)
demux->scr_adjust = GSTTIME_TO_MPEGTIME (adjust);
else
demux->scr_adjust = -GSTTIME_TO_MPEGTIME (-adjust);
- start = SCR_MUNGE;
+ position = start = SCR_MUNGE;
base = 0;
if (stop != -1)
@@ -973,12 +971,9 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
demux->src_segment.position = position;
GST_DEBUG_OBJECT (demux,
- "sending new segment: rate %g format %d, start: %"
- G_GINT64_FORMAT ", stop: %" G_GINT64_FORMAT ", time: %"
- G_GINT64_FORMAT ", base: %" G_GINT64_FORMAT
+ "sending new segment %" GST_SEGMENT_FORMAT
", scr_adjust: %" G_GINT64_FORMAT "(%" GST_TIME_FORMAT ")",
- segment->rate, segment->format, start, stop, time, base,
- demux->scr_adjust,
+ &demux->src_segment, demux->scr_adjust,
GST_TIME_ARGS (MPEGTIME_TO_GSTTIME (demux->scr_adjust)));
#if 0
g_print ("sending new segment: rate %g format %d, start: %"
--
2.4.2

View File

@ -10,7 +10,7 @@
Name: gstreamer1-plugins-bad-free
Version: 1.4.5
Release: 2%{?dist}
Release: 3%{?dist}
Summary: GStreamer streaming media framework "bad" plugins
License: LGPLv2+ and LGPLv2
@ -21,6 +21,7 @@ URL: http://gstreamer.freedesktop.org/
Source0: gst-plugins-bad-free-%{version}.tar.xz
Source1: gst-p-bad-cleanup.sh
Patch1: 0001-srtpdec-Add-support-for-RTP-RTCP-mixing-if-data-arri.patch
Patch2: 0001-resindvd-Don-t-send-meaningless-segment-position-dow.patch
BuildRequires: gstreamer1-devel >= %{version}
BuildRequires: gstreamer1-plugins-base-devel >= %{version}
@ -149,6 +150,7 @@ aren't tested well enough, or the code is not of good enough quality.
%prep
%setup -q -n gst-plugins-bad-%{version}
%patch1 -p1
%patch2 -p1
%build
@ -345,6 +347,9 @@ chrpath --delete $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/libgstcamerab
%{_libdir}/pkgconfig/gstreamer-plugins-bad-%{majorminor}.pc
%changelog
* Mon Jun 15 2015 Wim Taymans <wtaymans@redhat.com> - 1.4.5-3
- Fix preroll on some DVDs (#1196411)
* Fri Mar 06 2015 David Woodhouse <dwmw2@infradead.org> - 1.4.5-2
- Fix RTP/RTCP muxing (#1199578)