diff options
author | prlw1 <prlw1@pkgsrc.org> | 2017-11-17 23:21:06 +0000 |
---|---|---|
committer | prlw1 <prlw1@pkgsrc.org> | 2017-11-17 23:21:06 +0000 |
commit | 211aa2a79748f70ccaa1e2955044e0a9464f7865 (patch) | |
tree | 8441c3bfec437640dfd61443cbfc4d81d8659856 /multimedia/gst-plugins1-libav | |
parent | cc855e582fcb1d91d2ef0397e8f50692e178ab3c (diff) | |
download | pkgsrc-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/Makefile | 3 | ||||
-rw-r--r-- | multimedia/gst-plugins1-libav/distinfo | 3 | ||||
-rw-r--r-- | multimedia/gst-plugins1-libav/patches/patch-ext_libav_gstavviddec.c | 30 |
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", |