summaryrefslogtreecommitdiff
path: root/multimedia/gst-plugins1-libav
diff options
context:
space:
mode:
authorprlw1 <prlw1@pkgsrc.org>2017-11-17 23:21:06 +0000
committerprlw1 <prlw1@pkgsrc.org>2017-11-17 23:21:06 +0000
commit211aa2a79748f70ccaa1e2955044e0a9464f7865 (patch)
tree8441c3bfec437640dfd61443cbfc4d81d8659856 /multimedia/gst-plugins1-libav
parentcc855e582fcb1d91d2ef0397e8f50692e178ab3c (diff)
downloadpkgsrc-211aa2a79748f70ccaa1e2955044e0a9464f7865.tar.gz
gst-plugins1-libav: fix mp4 playback
From Jana Saout in https://bugzilla.gnome.org/show_bug.cgi?id=789193 Not meant as "fix" but as temporary workaround for people bothered by this issue: This quick & dirty hack replaces the deprecated call to avcodec_decode_video2 by calls to avcodec_send_packet and avcodec_receive_frame. Note that this is hack is really ugly, because the API really isn't meant to be used this way (the assumption is that each call to avcodec_send_packet will produce at most one new frame) and also the error handling and probably other cases are not handled correctly. However, MP4 videos seem to play fine for me.
Diffstat (limited to 'multimedia/gst-plugins1-libav')
-rw-r--r--multimedia/gst-plugins1-libav/Makefile3
-rw-r--r--multimedia/gst-plugins1-libav/distinfo3
-rw-r--r--multimedia/gst-plugins1-libav/patches/patch-ext_libav_gstavviddec.c30
3 files changed, 34 insertions, 2 deletions
diff --git a/multimedia/gst-plugins1-libav/Makefile b/multimedia/gst-plugins1-libav/Makefile
index f57c62acc7a..7bcab973875 100644
--- a/multimedia/gst-plugins1-libav/Makefile
+++ b/multimedia/gst-plugins1-libav/Makefile
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.35 2017/11/16 16:49:40 prlw1 Exp $
+# $NetBSD: Makefile,v 1.36 2017/11/17 23:21:06 prlw1 Exp $
DISTNAME= gst-libav-1.12.3
PKGNAME= ${DISTNAME:S/gst/gst-plugins1/}
+PKGREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= https://gstreamer.freedesktop.org/src/gst-libav/
EXTRACT_SUFX= .tar.xz
diff --git a/multimedia/gst-plugins1-libav/distinfo b/multimedia/gst-plugins1-libav/distinfo
index 33dc5929742..02748c6910e 100644
--- a/multimedia/gst-plugins1-libav/distinfo
+++ b/multimedia/gst-plugins1-libav/distinfo
@@ -1,7 +1,8 @@
-$NetBSD: distinfo,v 1.25 2017/11/16 16:49:40 prlw1 Exp $
+$NetBSD: distinfo,v 1.26 2017/11/17 23:21:06 prlw1 Exp $
SHA1 (gst-libav-1.12.3.tar.xz) = 6816850a9927d61b8f85ba1cb9a50d0050221dd7
RMD160 (gst-libav-1.12.3.tar.xz) = 66c3e475b9e4f5bdf5d356ceee1f4072d61ca949
SHA512 (gst-libav-1.12.3.tar.xz) = 33b380b7094afe1db57103eeeca5ae13db98a5bee6785f884a7ec8abb93a94f702eb52f0515f4fa27a0f157ecb0757cf3576df335dc456254f9a82567f5ab7a8
Size (gst-libav-1.12.3.tar.xz) = 8791724 bytes
SHA1 (patch-configure) = 208c4d685538518698ae074c1e6b03e9a3c229bb
+SHA1 (patch-ext_libav_gstavviddec.c) = c397a6c7e027453353a79c5d64f7b1d648c21739
diff --git a/multimedia/gst-plugins1-libav/patches/patch-ext_libav_gstavviddec.c b/multimedia/gst-plugins1-libav/patches/patch-ext_libav_gstavviddec.c
new file mode 100644
index 00000000000..cab81dd2839
--- /dev/null
+++ b/multimedia/gst-plugins1-libav/patches/patch-ext_libav_gstavviddec.c
@@ -0,0 +1,30 @@
+$NetBSD: patch-ext_libav_gstavviddec.c,v 1.1 2017/11/17 23:21:06 prlw1 Exp $
+
+"quick & dirty hack to use new decoding API for viddec" from
+https://bugzilla.gnome.org/show_bug.cgi?id=789193
+
+--- ext/libav/gstavviddec.c.orig 2017-08-10 15:56:34.000000000 +0000
++++ ext/libav/gstavviddec.c
+@@ -1525,8 +1525,20 @@ gst_ffmpegviddec_video_frame (GstFFMpegV
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=726020
+ */
+ GST_VIDEO_DECODER_STREAM_UNLOCK (ffmpegdec);
+- len = avcodec_decode_video2 (ffmpegdec->context,
+- ffmpegdec->picture, have_data, &packet);
++ *have_data = 0;
++ if (size > 0) {
++ len = avcodec_send_packet(ffmpegdec->context, &packet);
++ if (len == AVERROR(EAGAIN)) {
++ len = 0;
++ } else {
++ len = size;
++ }
++ if (len >= 0) {
++ int result = avcodec_receive_frame(ffmpegdec->context, ffmpegdec->picture);
++ if (result == 0)
++ *have_data = 1;
++ }
++ }
+ GST_VIDEO_DECODER_STREAM_LOCK (ffmpegdec);
+
+ GST_DEBUG_OBJECT (ffmpegdec, "after decode: len %d, have_data %d",