Hello community, here is the log from the commit of package gstreamer-plugins-libav for openSUSE:Factory checked in at 2017-11-12 18:10:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-libav (Old) and /work/SRC/openSUSE:Factory/.gstreamer-plugins-libav.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-libav" Sun Nov 12 18:10:23 2017 rev:4 rq:541039 version:1.12.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-plugins-libav/gstreamer-plugins-libav.changes 2017-11-11 14:23:38.362331104 +0100 +++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-libav.new/gstreamer-plugins-libav.changes 2017-11-12 18:10:23.435239263 +0100 @@ -1,0 +2,10 @@ +Fri Nov 10 20:35:21 UTC 2017 - zai...@opensuse.org + +- Add gstreamer-plugins-libav-avdemux-reset.patch: avdemux: reset + to 0 negative pts for us pts are unsigned so reset to 0 negative + pts returned from libav. This is better than outputs completly + wrong timestamps (bgo#787795). +- Split out doc sub-package. +- Cleanup with spec-cleaner. + +------------------------------------------------------------------- New: ---- gstreamer-plugins-libav-avdemux-reset.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-plugins-libav.spec ++++++ --- /var/tmp/diff_new_pack.UYMjRg/_old 2017-11-12 18:10:24.671194301 +0100 +++ /var/tmp/diff_new_pack.UYMjRg/_new 2017-11-12 18:10:24.671194301 +0100 @@ -17,7 +17,6 @@ %define gst_branch 1.0 - Name: gstreamer-plugins-libav Version: 1.12.3 Release: 0 @@ -29,6 +28,9 @@ Source1000: baselibs.conf # PATCH-FIX-UPSTREAM gst-libav-ffmpeg-3.4-hackfix.patch bgo#789193 zai...@opensuse.org -- Workaround api change in ffmpeg 3.4 and newer Patch0: gst-libav-ffmpeg-3.4-hackfix.patch +# PATCH-FIX-UPSTREAM gstreamer-plugins-libav-avdemux-reset.patch bgo#787795 zai...@opensuse.org -- avdemux: reset to 0 negative pts +Patch1: gstreamer-plugins-libav-avdemux-reset.patch +BuildRequires: pkgconfig BuildRequires: yasm BuildRequires: pkgconfig(bzip2) BuildRequires: pkgconfig(glib-2.0) @@ -45,9 +47,8 @@ BuildRequires: pkgconfig(orc-0.4) >= 0.4.16 BuildRequires: pkgconfig(zlib) Requires: gstreamer >= %{version} -Supplements: packageand(%{name}:gstreamer) Enhances: gstreamer -BuildRoot: %{_tmppath}/%{name}-%{version}-build +Supplements: packageand(%{name}:gstreamer) %description GStreamer is a streaming media framework, based on graphs of filters which @@ -60,16 +61,33 @@ This plugin contains the FFmpeg codecs, containing codecs for most popular multimedia formats. +%package doc +Summary: GStreamer Streaming-Media Framework Plug-Ins +Group: Development/Libraries/C and C++ +Requires: %{name} = %{version} + +%description doc +GStreamer is a streaming media framework, based on graphs of filters which +operate on media data. Applications using this library can do anything +from real-time sound processing to playing videos, and just about anything +else media-related. Its plugin-based architecture means that new data +types or processing capabilities can be added simply by installing new +plug-ins. + +This plugin contains the documentation + %prep %setup -q -n gst-libav-%{version} %patch0 -p1 +%patch1 -p1 # Ensure we cannot use the embedded libav rm -rf gst-libs/ext/libav %build %configure \ --with-system-libav \ - --enable-gpl + --enable-gpl \ + %{nil} make %{?_smp_mflags} %install @@ -77,9 +95,11 @@ find %{buildroot}%{_libdir} -name '*.la' -delete -print %files -%defattr(0644, root, root, 0755) -%doc AUTHORS COPYING NEWS README TODO -%doc %{_datadir}/gtk-doc/html/ +%doc COPYING %{_libdir}/gstreamer-%{gst_branch}/libgstlibav.so +%files doc +%doc AUTHORS NEWS README TODO +%doc %{_datadir}/gtk-doc/html/ + %changelog ++++++ gstreamer-plugins-libav-avdemux-reset.patch ++++++ >From e87c20d325eaf9e6813c46654292d68f8b9bc521 Mon Sep 17 00:00:00 2001 From: Nicola Murino <nicola.mur...@gmail.com> Date: Sat, 23 Sep 2017 17:14:03 +0200 Subject: avdemux: reset to 0 negative pts for us pts are unsigned so reset to 0 negative pts returned from libav. This is better than outputs completly wrong timestamps https://bugzilla.gnome.org/show_bug.cgi?id=787795 diff --git a/ext/libav/gstavdemux.c b/ext/libav/gstavdemux.c index c119798..3728705 100644 --- a/ext/libav/gstavdemux.c +++ b/ext/libav/gstavdemux.c @@ -1394,6 +1394,7 @@ gst_ffmpegdemux_loop (GstFFMpegDemux * demux) gint outsize; gboolean rawvideo; GstFlowReturn stream_last_flow; + gint64 pts; /* open file if we didn't so already */ if (!demux->opened) @@ -1421,7 +1422,21 @@ gst_ffmpegdemux_loop (GstFFMpegDemux * demux) /* do timestamps, we do this first so that we can know when we * stepped over the segment stop position. */ - timestamp = gst_ffmpeg_time_ff_to_gst (pkt.pts, avstream->time_base); + pts = pkt.pts; + if (G_UNLIKELY (pts < 0)) { + /* some streams have pts such this: + * 0 + * -2 + * -1 + * 1 + * + * we reset pts to 0 since for us timestamp are unsigned + */ + GST_WARNING_OBJECT (demux, + "negative pts detected: %" G_GINT64_FORMAT " resetting to 0", pts); + pts = 0; + } + timestamp = gst_ffmpeg_time_ff_to_gst (pts, avstream->time_base); if (GST_CLOCK_TIME_IS_VALID (timestamp)) { stream->last_ts = timestamp; } -- cgit v0.10.2