diff options
author | Ilya Tumaykin <itumaykin@gmail.com> | 2016-03-10 20:48:52 +0300 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2016-03-10 21:35:15 +0000 |
commit | 137f714824e5b676ca22de257d30e9b8977bce31 (patch) | |
tree | 87a37474fe0a238518bf20fd6b49ae2cb984d960 /media-video/mpv/files | |
parent | media-video/mpv: bump EAPI to 6 in 9999 (diff) | |
download | gentoo-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')
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; + |