summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Tumaykin <itumaykin@gmail.com>2016-03-10 20:48:52 +0300
committerPatrice Clement <monsieurp@gentoo.org>2016-03-10 21:35:15 +0000
commit137f714824e5b676ca22de257d30e9b8977bce31 (patch)
tree87a37474fe0a238518bf20fd6b49ae2cb984d960 /media-video/mpv/files
parentmedia-video/mpv: bump EAPI to 6 in 9999 (diff)
downloadgentoo-137f714824e5b676ca22de257d30e9b8977bce31.tar.gz
gentoo-137f714824e5b676ca22de257d30e9b8977bce31.tar.bz2
gentoo-137f714824e5b676ca22de257d30e9b8977bce31.zip
media-video/mpv: revbump to 0.16.0-r1
Prevent NULL dereference on Wayland. Fix known regressions since 0.15.0. Sync with 9999. Package-Manager: portage-2.2.27 Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
Diffstat (limited to 'media-video/mpv/files')
-rw-r--r--media-video/mpv/files/mpv-0.16.0-avoid-NULL-dereference-on-wayland.patch23
-rw-r--r--media-video/mpv/files/mpv-0.16.0-fix-bitrate-calculation.patch31
-rw-r--r--media-video/mpv/files/mpv-0.16.0-fix-coverart-decoding.patch39
-rw-r--r--media-video/mpv/files/mpv-0.16.0-set-correct-seekable-flags.patch36
4 files changed, 129 insertions, 0 deletions
diff --git a/media-video/mpv/files/mpv-0.16.0-avoid-NULL-dereference-on-wayland.patch b/media-video/mpv/files/mpv-0.16.0-avoid-NULL-dereference-on-wayland.patch
new file mode 100644
index 000000000000..9af5e246ac2e
--- /dev/null
+++ b/media-video/mpv/files/mpv-0.16.0-avoid-NULL-dereference-on-wayland.patch
@@ -0,0 +1,23 @@
+commit 5c2026336419805202fbf7a817b2960b0584ce5d
+Author: wm4 <wm4@nowhere>
+Date: Thu Mar 3 15:30:28 2016 +0100
+
+ vo_opengl: wayland: don't destroy NULL wl_egl_window
+
+ The wayland client API crashes intentionally when trying to free NULL
+ objects. (Thanks.)
+
+diff --git a/video/out/opengl/context_wayland.c b/video/out/opengl/context_wayland.c
+index 63a1453..a100073 100644
+--- a/video/out/opengl/context_wayland.c
++++ b/video/out/opengl/context_wayland.c
+@@ -183,7 +183,8 @@ static void waylandgl_uninit(MPGLContext *ctx)
+
+ if (wl->egl_context.egl.ctx) {
+ eglReleaseThread();
+- wl_egl_window_destroy(wl->egl_context.egl_window);
++ if (wl->egl_context.egl_window)
++ wl_egl_window_destroy(wl->egl_context.egl_window);
+ eglDestroySurface(wl->egl_context.egl.dpy, wl->egl_context.egl_surface);
+ eglMakeCurrent(wl->egl_context.egl.dpy, NULL, NULL, EGL_NO_CONTEXT);
+ eglDestroyContext(wl->egl_context.egl.dpy, wl->egl_context.egl.ctx);
diff --git a/media-video/mpv/files/mpv-0.16.0-fix-bitrate-calculation.patch b/media-video/mpv/files/mpv-0.16.0-fix-bitrate-calculation.patch
new file mode 100644
index 000000000000..2515b3ae7ee9
--- /dev/null
+++ b/media-video/mpv/files/mpv-0.16.0-fix-bitrate-calculation.patch
@@ -0,0 +1,31 @@
+commit 5c1fe2a4f3e559a0c6a010e48b0c225d01c1cd0a
+Author: wm4 <wm4@nowhere>
+Date: Sat Mar 5 12:48:58 2016 +0100
+
+ demux: delay bitrate calculation on packets with unknown timestamps
+
+ Commit 503c6f7f essentially removed timestamps from "laces" (Block sub-
+ divisions), which means many audio packets will have no timestamp.
+ There's no reason why bitrate calculation can't just delayed to a point
+ when the next timestamp is known.
+
+ Fixes #2903 (no audio bitrate with mkv files).
+
+diff --git a/demux/demux.c b/demux/demux.c
+index bd3211a..a7241d9 100644
+--- a/demux/demux.c
++++ b/demux/demux.c
+@@ -681,11 +681,11 @@ static struct demux_packet *dequeue_packet(struct demux_stream *ds)
+ if (ts != MP_NOPTS_VALUE)
+ ds->base_ts = ts;
+
+- if (pkt->keyframe) {
++ if (pkt->keyframe && ts != MP_NOPTS_VALUE) {
+ // Update bitrate - only at keyframe points, because we use the
+ // (possibly) reordered packet timestamps instead of realtime.
+ double d = ts - ds->last_br_ts;
+- if (ts == MP_NOPTS_VALUE || ds->last_br_ts == MP_NOPTS_VALUE || d < 0) {
++ if (ds->last_br_ts == MP_NOPTS_VALUE || d < 0) {
+ ds->bitrate = -1;
+ ds->last_br_ts = ts;
+ ds->last_br_bytes = 0;
diff --git a/media-video/mpv/files/mpv-0.16.0-fix-coverart-decoding.patch b/media-video/mpv/files/mpv-0.16.0-fix-coverart-decoding.patch
new file mode 100644
index 000000000000..1166b36fb054
--- /dev/null
+++ b/media-video/mpv/files/mpv-0.16.0-fix-coverart-decoding.patch
@@ -0,0 +1,39 @@
+commit c53c6bbd387ca582091a8bfca33140d65c200be0
+Author: wm4 <wm4@nowhere>
+Date: Mon Mar 7 15:00:08 2016 +0100
+
+ video: fix coverart decoding
+
+ Deselecting cover art and then reselecting it did not work. The second
+ time the cover art picture is not displayed again. (This seems to break
+ every other month...)
+
+ The reason is commit 6640b22a. It mutates the input packet. And it is
+ correct that we don't own d_video->header->attached_picture at this
+ point. Fix it by creating a new packet reference.
+
+diff --git a/video/decode/dec_video.c b/video/decode/dec_video.c
+index e8a5774..fc0b090 100644
+--- a/video/decode/dec_video.c
++++ b/video/decode/dec_video.c
+@@ -363,9 +363,10 @@ void video_work(struct dec_video *d_video)
+ return;
+
+ if (d_video->header->attached_picture) {
++ struct demux_packet *packet =
++ demux_copy_packet(d_video->header->attached_picture);
+ if (d_video->current_state == DATA_AGAIN && !d_video->cover_art_mpi) {
+- d_video->cover_art_mpi =
+- decode_packet(d_video, d_video->header->attached_picture, 0);
++ d_video->cover_art_mpi = decode_packet(d_video, packet, 0);
+ // Might need flush.
+ if (!d_video->cover_art_mpi)
+ d_video->cover_art_mpi = decode_packet(d_video, NULL, 0);
+@@ -375,6 +376,7 @@ void video_work(struct dec_video *d_video)
+ d_video->current_mpi = mp_image_new_ref(d_video->cover_art_mpi);
+ // (DATA_OK is returned the first time, when current_mpi is sill set)
+ d_video->current_state = DATA_EOF;
++ talloc_free(packet);
+ return;
+ }
+
diff --git a/media-video/mpv/files/mpv-0.16.0-set-correct-seekable-flags.patch b/media-video/mpv/files/mpv-0.16.0-set-correct-seekable-flags.patch
new file mode 100644
index 000000000000..75ac650ca2ac
--- /dev/null
+++ b/media-video/mpv/files/mpv-0.16.0-set-correct-seekable-flags.patch
@@ -0,0 +1,36 @@
+commit a6f8a6977ec59d314b617780c60e374b585ebaca
+Author: wm4 <wm4@nowhere>
+Date: Thu Mar 3 15:30:55 2016 +0100
+
+ demux_timeline: set correct seekable flags
+
+ Tricky misleading crap.
+
+ Fixes #2898.
+
+diff --git a/demux/demux.h b/demux/demux.h
+index e882e90..2c1e3a2 100644
+--- a/demux/demux.h
++++ b/demux/demux.h
+@@ -174,7 +174,7 @@ typedef struct demuxer {
+ int64_t filepos; // input stream current pos.
+ char *filename; // same as stream->url
+ bool seekable;
+- bool partially_seekable; // implies seekable=true
++ bool partially_seekable; // true if _maybe_ seekable; implies seekable=true
+ double start_time;
+ // File format allows PTS resets (even if the current file is without)
+ bool ts_resets_possible;
+diff --git a/demux/demux_timeline.c b/demux/demux_timeline.c
+index 0c6c398..92cf1e6 100644
+--- a/demux/demux_timeline.c
++++ b/demux/demux_timeline.c
+@@ -344,7 +344,7 @@ static int d_open(struct demuxer *demuxer, enum demux_check check)
+ print_timeline(demuxer);
+
+ demuxer->seekable = true;
+- demuxer->partially_seekable = true;
++ demuxer->partially_seekable = false;
+
+ demuxer->filetype = meta->filetype ? meta->filetype : meta->desc->name;
+