diff options
author | Ilya Tumaykin <itumaykin@gmail.com> | 2016-04-25 02:57:42 +0300 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2016-04-25 07:30:47 +0000 |
commit | 128e34bb2eb08a4eac51e3e334bf197b0edeb88f (patch) | |
tree | 1a6c7552e05ffbdce63e008428ff5494cf4a1c67 /media-video | |
parent | media-video/mpv: move 0.17.0 patches under files/0.17.0/ directory (diff) | |
download | gentoo-128e34bb2eb08a4eac51e3e334bf197b0edeb88f.tar.gz gentoo-128e34bb2eb08a4eac51e3e334bf197b0edeb88f.tar.bz2 gentoo-128e34bb2eb08a4eac51e3e334bf197b0edeb88f.zip |
media-video/mpv: revbump to 0.17.0-r1 to backport some upstream fixes
Closes: https://github.com/gentoo/gentoo/pull/1341
Package-Manager: portage-2.2.28
Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
Diffstat (limited to 'media-video')
8 files changed, 529 insertions, 0 deletions
diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-avoid-deprecated-API-usage.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-avoid-deprecated-API-usage.patch new file mode 100644 index 000000000000..16a284552ac6 --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-avoid-deprecated-API-usage.patch @@ -0,0 +1,28 @@ +commit 78346e9c9a8a70fa581989b2cc8b4e0933765330 +Author: wm4 <wm4@nowhere> +Date: Wed Apr 20 19:37:45 2016 +0200 + +ad_spdif: take care of deprecated libavcodec API usage +--- + +diff --git a/audio/decode/ad_spdif.c b/audio/decode/ad_spdif.c +index eb2e2bb..56e4a81 100644 +--- a/audio/decode/ad_spdif.c ++++ b/audio/decode/ad_spdif.c +@@ -116,9 +116,16 @@ static int determine_codec_profile(struct dec_audio *da, AVPacket *pkt) + goto done; + } + ++#if HAVE_AVCODEC_NEW_CODEC_API ++ if (avcodec_send_packet(ctx, pkt) < 0) ++ goto done; ++ if (avcodec_receive_frame(ctx, frame) < 0) ++ goto done; ++#else + int got_frame = 0; + if (avcodec_decode_audio4(ctx, frame, &got_frame, pkt) < 1 || !got_frame) + goto done; ++#endif + + profile = ctx->profile; + diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-hwdec-fallback.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-hwdec-fallback.patch new file mode 100644 index 000000000000..725752569261 --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-hwdec-fallback.patch @@ -0,0 +1,63 @@ +commit b1a8e8dba66fb9c85e3a1d4e812d4f842db68fe6 +Author: wm4 <wm4@nowhere> +Date: Fri Apr 22 15:45:23 2016 +0200 + +vd_lavc: fix hwdec fallback if hwdec pre-initialization fails + +Damn. +--- + +diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c +index a444f88..0bbe84c 100644 +--- a/video/decode/vd_lavc.c ++++ b/video/decode/vd_lavc.c +@@ -284,17 +284,14 @@ static void uninit(struct dec_video *vd) + talloc_free(vd->priv); + } + +-static bool force_fallback(struct dec_video *vd) ++static void force_fallback(struct dec_video *vd) + { + vd_ffmpeg_ctx *ctx = vd->priv; +- if (!ctx->hwdec) +- return false; + + uninit_avctx(vd); + int lev = ctx->hwdec_notified ? MSGL_WARN : MSGL_V; + mp_msg(vd->log, lev, "Falling back to software decoding.\n"); + init_avctx(vd, ctx->decoder, NULL); +- return true; + } + + static void reinit(struct dec_video *vd) +@@ -332,7 +329,7 @@ static void reinit(struct dec_video *vd) + } + + init_avctx(vd, decoder, hwdec); +- if (!ctx->avctx) ++ if (!ctx->avctx && hwdec) + force_fallback(vd); + } + +@@ -767,7 +764,8 @@ static struct mp_image *decode_with_fallback(struct dec_video *vd, + decode(vd, packet, flags, &mpi); + if (ctx->hwdec_failed) { + // Failed hardware decoding? Try again in software. +- if (force_fallback(vd) && ctx->avctx) ++ force_fallback(vd); ++ if (ctx->avctx) + decode(vd, packet, flags, &mpi); + } + +@@ -805,8 +803,10 @@ static int control(struct dec_video *vd, int cmd, void *arg) + return CONTROL_TRUE; + } + case VDCTRL_FORCE_HWDEC_FALLBACK: +- if (force_fallback(vd)) ++ if (ctx->hwdec) { ++ force_fallback(vd); + return ctx->avctx ? CONTROL_OK : CONTROL_ERROR; ++ } + return CONTROL_FALSE; + case VDCTRL_REINIT: + reinit(vd); diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-parsing-multiple-input-command-prefixes.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-parsing-multiple-input-command-prefixes.patch new file mode 100644 index 000000000000..b78db811cd60 --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-parsing-multiple-input-command-prefixes.patch @@ -0,0 +1,19 @@ +commit 1f1117d0dd61e47d1c64f567be1ca80ac968bd22 +Author: Philip Sequeira <phsequei@gmail.com> +Date: Sun Apr 17 02:09:54 2016 -0400 + +input: fix parsing multiple input command prefixes +--- + +diff --git a/input/cmd_parse.c b/input/cmd_parse.c +index c2c3270..01e4bb6 100644 +--- a/input/cmd_parse.c ++++ b/input/cmd_parse.c +@@ -273,7 +273,6 @@ static struct mp_cmd *parse_cmd_str(struct mp_log *log, void *tmp, + break; + if (pctx_read_token(ctx, &cur_token) < 0) + goto error; +- break; + } + + if (!find_cmd(ctx->log, cmd, cur_token)) diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-relative-seeking-with-coverart.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-relative-seeking-with-coverart.patch new file mode 100644 index 000000000000..c50e45e55a84 --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-relative-seeking-with-coverart.patch @@ -0,0 +1,59 @@ +commit 786f37ae1c77b46b34ed66b4a73c42ff64bfc9b8 +Author: wm4 <wm4@nowhere> +Date: Sat Apr 23 17:16:54 2016 +0200 + +player: cleaner determination of current playback PTS + +In particular, this won't overwrite the playback PTS in coverart mode, +which actually fixes relative seeks. +--- + +diff --git a/player/playloop.c b/player/playloop.c +index 71ecd7e..6eadcbc 100644 +--- a/player/playloop.c ++++ b/player/playloop.c +@@ -958,6 +958,17 @@ void run_playloop(struct MPContext *mpctx) + fill_audio_out_buffers(mpctx); + write_video(mpctx); + ++ if (mpctx->vo_chain && !mpctx->vo_chain->is_coverart && ++ mpctx->video_status >= STATUS_PLAYING && ++ mpctx->video_status < STATUS_EOF) ++ { ++ mpctx->playback_pts = mpctx->video_pts; ++ } else if (mpctx->audio_status >= STATUS_PLAYING && ++ mpctx->audio_status < STATUS_EOF) ++ { ++ mpctx->playback_pts = playing_audio_pts(mpctx); ++ } ++ + if (mpctx->lavfi) { + if (lavfi_process(mpctx->lavfi)) + mpctx->sleeptime = 0; +@@ -967,14 +978,6 @@ void run_playloop(struct MPContext *mpctx) + + handle_playback_restart(mpctx); + +- // Use the audio timestamp if no video, or video is enabled, but has ended. +- if (mpctx->video_status == STATUS_EOF && +- mpctx->audio_status >= STATUS_PLAYING && +- mpctx->audio_status < STATUS_EOF) +- { +- mpctx->playback_pts = playing_audio_pts(mpctx); +- } +- + handle_dummy_ticks(mpctx); + + update_osd_msg(mpctx); +diff --git a/player/video.c b/player/video.c +index 0af0b90..7610c12 100644 +--- a/player/video.c ++++ b/player/video.c +@@ -1380,7 +1380,6 @@ void write_video(struct MPContext *mpctx) + + mpctx->video_pts = mpctx->next_frames[0]->pts; + mpctx->last_vo_pts = mpctx->video_pts; +- mpctx->playback_pts = mpctx->video_pts; + + shift_frames(mpctx); + diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-use-after-free.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-use-after-free.patch new file mode 100644 index 000000000000..17b08a1ae3f5 --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-use-after-free.patch @@ -0,0 +1,25 @@ +commit 4ebac1e936f761f08d455acf77be40c93048f6d5 +Author: wm4 <wm4@nowhere> +Date: Thu Apr 14 22:39:10 2016 +0200 + +player: fix use-after-free with --screenshot-directory + +Probably fixes #3049. +--- + +diff --git a/player/screenshot.c b/player/screenshot.c +index 02cbb4a..33b972b 100644 +--- a/player/screenshot.c ++++ b/player/screenshot.c +@@ -287,9 +287,10 @@ static char *gen_fname(screenshot_ctx *ctx, const char *file_ext) + void *t = fname; + dir = mp_get_user_path(t, ctx->mpctx->global, dir); + fname = mp_path_join(NULL, dir, fname); +- talloc_free(t); + + mp_mkdirp(dir); ++ ++ talloc_free(t); + } + + if (!mp_path_exists(fname)) diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-video-frame-info-memleak.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-video-frame-info-memleak.patch new file mode 100644 index 000000000000..eee65cc5705c --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-fix-video-frame-info-memleak.patch @@ -0,0 +1,19 @@ +commit e232f1a731a9089a13d88def6c1f2c1a069a6353 +Author: trUSTssc <trUSTssc@users.noreply.github.com> +Date: Sun Apr 24 20:11:36 2016 +0200 + +player: fix memleak when using video-frame-info +--- + +diff --git a/player/command.c b/player/command.c +index 7f65534..738865b 100644 +--- a/player/command.c ++++ b/player/command.c +@@ -2581,6 +2581,7 @@ static int mp_property_video_frame_info(void *ctx, struct m_property *prop, + {0} + }; + ++ talloc_free(f); + return m_property_read_sub(props, action, arg); + } + diff --git a/media-video/mpv/files/0.17.0/mpv-0.17.0-remove-unneeded-X11-include.patch b/media-video/mpv/files/0.17.0/mpv-0.17.0-remove-unneeded-X11-include.patch new file mode 100644 index 000000000000..7d2d1cc1a32d --- /dev/null +++ b/media-video/mpv/files/0.17.0/mpv-0.17.0-remove-unneeded-X11-include.patch @@ -0,0 +1,21 @@ +commit 8c02c92ab962107ee43c71854bd9712cc492046e +Author: wm4 <wm4@nowhere> +Date: Fri Apr 15 09:45:15 2016 +0200 + +vo_opengl: rpi: don't include x11 header file + +Copy & paste bug. +--- + +diff --git a/video/out/opengl/context_rpi.c b/video/out/opengl/context_rpi.c +index c01c173..c0ca733 100644 +--- a/video/out/opengl/context_rpi.c ++++ b/video/out/opengl/context_rpi.c +@@ -19,7 +19,6 @@ + #include <assert.h> + + #include "common/common.h" +-#include "video/out/x11_common.h" + #include "context.h" + + #include "context_rpi.h" diff --git a/media-video/mpv/mpv-0.17.0-r1.ebuild b/media-video/mpv/mpv-0.17.0-r1.ebuild new file mode 100644 index 000000000000..446f818d399f --- /dev/null +++ b/media-video/mpv/mpv-0.17.0-r1.ebuild @@ -0,0 +1,295 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +PYTHON_COMPAT=( python{2_7,3_3,3_4,3_5} ) +PYTHON_REQ_USE='threads(+)' + +WAF_PV='1.8.12' + +inherit fdo-mime gnome2-utils pax-utils python-any-r1 toolchain-funcs waf-utils + +DESCRIPTION="Media player based on MPlayer and mplayer2" +HOMEPAGE="https://mpv.io/" + +if [[ ${PV} != *9999* ]]; then + SRC_URI="https://github.com/mpv-player/mpv/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux" + DOCS=( RELEASE_NOTES ) +else + EGIT_REPO_URI="https://github.com/mpv-player/mpv.git" + inherit git-r3 +fi +SRC_URI+=" https://waf.io/waf-${WAF_PV}" +DOCS+=( README.md ) + +# See Copyright in source tarball and bug #506946. Waf is BSD, libmpv is ISC. +LICENSE="GPL-2+ BSD ISC" +SLOT="0" +IUSE="aqua +alsa archive bluray cdda +cli coreaudio doc drm dvb +dvd +egl +enca + encode gbm +iconv jack jpeg lcms +libass libav libcaca libguess libmpv lua + luajit openal +opengl oss pulseaudio raspberry-pi rubberband samba -sdl + selinux test uchardet v4l vaapi vdpau vf-dlopen wayland +X xinerama + +xscreensaver +xv zsh-completion" + +REQUIRED_USE=" + || ( cli libmpv ) + aqua? ( opengl ) + egl? ( || ( gbm X wayland ) ) + enca? ( iconv ) + gbm? ( drm egl ) + lcms? ( || ( opengl egl ) ) + libguess? ( iconv ) + luajit? ( lua ) + uchardet? ( iconv ) + v4l? ( || ( alsa oss ) ) + vaapi? ( || ( gbm X wayland ) ) + vdpau? ( X ) + wayland? ( egl ) + xinerama? ( X ) + xscreensaver? ( X ) + xv? ( X ) + zsh-completion? ( cli ) +" + +COMMON_DEPEND=" + !libav? ( >=media-video/ffmpeg-2.4:0=[encode?,threads,vaapi?,vdpau?] ) + libav? ( >=media-video/libav-11:0=[encode?,threads,vaapi?,vdpau?] ) + sys-libs/zlib + alsa? ( >=media-libs/alsa-lib-1.0.18 ) + archive? ( >=app-arch/libarchive-3.0.0:= ) + bluray? ( >=media-libs/libbluray-0.3.0 ) + cdda? ( dev-libs/libcdio-paranoia ) + drm? ( x11-libs/libdrm ) + dvb? ( virtual/linuxtv-dvb-headers ) + dvd? ( + >=media-libs/libdvdnav-4.2.0 + >=media-libs/libdvdread-4.1.0 + ) + egl? ( media-libs/mesa[egl,gbm(-)?,wayland(-)?] ) + iconv? ( + virtual/libiconv + enca? ( app-i18n/enca ) + libguess? ( >=app-i18n/libguess-1.0 ) + uchardet? ( dev-libs/uchardet ) + ) + jack? ( virtual/jack ) + jpeg? ( virtual/jpeg:0 ) + lcms? ( >=media-libs/lcms-2.6:2 ) + libass? ( + >=media-libs/libass-0.12.1:=[fontconfig,harfbuzz] + virtual/ttf-fonts + ) + libcaca? ( >=media-libs/libcaca-0.99_beta18 ) + lua? ( + !luajit? ( || ( =dev-lang/lua-5.1*:= =dev-lang/lua-5.2*:= ) ) + luajit? ( dev-lang/luajit:2 ) + ) + openal? ( >=media-libs/openal-1.13 ) + opengl? ( !aqua? ( virtual/opengl ) ) + pulseaudio? ( media-sound/pulseaudio ) + raspberry-pi? ( + >=media-libs/raspberrypi-userland-0_pre20160305-r1 + media-libs/mesa[egl,gles2] + ) + rubberband? ( >=media-libs/rubberband-1.8.0 ) + samba? ( net-fs/samba ) + sdl? ( media-libs/libsdl2[sound,threads,video,X?,wayland?] ) + v4l? ( media-libs/libv4l ) + vaapi? ( >=x11-libs/libva-1.4.0[drm?,X?,wayland?] ) + wayland? ( + >=dev-libs/wayland-1.6.0 + >=x11-libs/libxkbcommon-0.3.0 + ) + X? ( + x11-libs/libX11 + x11-libs/libXext + >=x11-libs/libXrandr-1.2.0 + opengl? ( x11-libs/libXdamage ) + vdpau? ( >=x11-libs/libvdpau-0.2 ) + xinerama? ( x11-libs/libXinerama ) + xscreensaver? ( x11-libs/libXScrnSaver ) + xv? ( x11-libs/libXv ) + ) +" +DEPEND="${COMMON_DEPEND} + ${PYTHON_DEPS} + >=dev-lang/perl-5.8 + dev-python/docutils + virtual/pkgconfig + doc? ( dev-python/rst2pdf ) + test? ( >=dev-util/cmocka-1.0.0 ) +" +RDEPEND="${COMMON_DEPEND} + selinux? ( sec-policy/selinux-mplayer ) +" + +PATCHES=( + "${FILESDIR}/${PV}/${P}-fix-seeking-without-first-index-entry.patch" + "${FILESDIR}/${PV}/${P}-fix-use-after-free.patch" + "${FILESDIR}/${PV}/${P}-remove-unneeded-X11-include.patch" + "${FILESDIR}/${PV}/${P}-add-missing-math-include.patch" + "${FILESDIR}/${PV}/${P}-fix-parsing-multiple-input-command-prefixes.patch" + "${FILESDIR}/${PV}/${P}-avoid-deprecated-API-usage.patch" + "${FILESDIR}/${PV}/${P}-fix-hwdec-fallback.patch" + "${FILESDIR}/${PV}/${P}-fix-relative-seeking-with-coverart.patch" + "${FILESDIR}/${PV}/${P}-fix-video-frame-info-memleak.patch" +) + +pkg_pretend() { + if [[ ${MERGE_TYPE} != "binary" ]] && ! tc-has-tls && use vaapi && use egl; then + die "Your compiler lacks C++11 TLS support. Use GCC>=4.8.0 or Clang>=3.3." + fi +} + +src_prepare() { + cp "${DISTDIR}/waf-${WAF_PV}" "${S}"/waf || die + chmod +x "${S}"/waf || die + default +} + +src_configure() { + local mywafargs=( + --confdir="${EPREFIX}"/etc/${PN} + --docdir="${EPREFIX}"/usr/share/doc/${PF} + + --disable-gpl3 # Unclear license info. See Gentoo bug 571728. + + $(usex cli '' '--disable-cplayer') + $(use_enable libmpv libmpv-shared) + + # See deep down below for build-date + --disable-libmpv-static + --disable-static-build + --disable-optimize # Do not add '-O2' to CFLAGS + --disable-debug-build # Do not add '-g' to CFLAGS + + $(use_enable doc html-build) + $(use_enable doc pdf-build) + $(use_enable vf-dlopen vf-dlopen-filters) + $(use_enable zsh-completion zsh-comp) + $(use_enable test) + + $(use_enable iconv) + $(use_enable samba libsmbclient) + $(use_enable lua) + $(usex luajit '--lua=luajit' '') + $(use_enable libass) + $(use_enable libass libass-osd) + $(use_enable encode encoding) + $(use_enable bluray libbluray) + $(use_enable dvd dvdread) + $(use_enable dvd dvdnav) + $(use_enable cdda) + $(use_enable enca) + $(use_enable libguess) + $(use_enable uchardet) + $(use_enable rubberband) + $(use_enable lcms lcms2) + --disable-vapoursynth # Only available in overlays + --disable-vapoursynth-lazy + $(use_enable archive libarchive) + + --enable-libavdevice + + # Audio outputs + $(use_enable sdl sdl2) # Listed under audio, but also includes video + --disable-sdl1 + $(use_enable oss oss-audio) + --disable-rsound # Only available in overlays + $(use_enable pulseaudio pulse) + $(use_enable jack) + $(use_enable openal) + --disable-opensles + $(use_enable alsa) + $(use_enable coreaudio) + + # Video outputs + $(use_enable aqua cocoa) + $(use_enable drm) + $(use_enable gbm) + $(use_enable wayland) + $(use_enable X x11) + $(use_enable xscreensaver xss) + $(use_enable X xext) + $(use_enable xv) + $(use_enable xinerama) + $(use_enable X xrandr) + $(usex opengl "$(use_enable aqua gl-cocoa)" '--disable-gl-cocoa') + $(usex opengl "$(use_enable X gl-x11)" '--disable-gl-x11') + $(usex egl "$(use_enable X egl-x11)" '--disable-egl-x11') + $(usex egl "$(use_enable gbm egl-drm)" '--disable-egl-drm') + $(use_enable wayland gl-wayland) + $(use_enable vdpau) + $(usex vdpau "$(use_enable opengl vdpau-gl-x11)" '--disable-vdpau-gl-x11') + $(use_enable vaapi) # See below for vaapi-glx, vaapi-x-egl + $(usex vaapi "$(use_enable X vaapi-x11)" '--disable-vaapi-x11') + $(usex vaapi "$(use_enable wayland vaapi-wayland)" '--disable-vaapi-wayland') + $(usex vaapi "$(use_enable gbm vaapi-drm)" '--disable-vaapi-drm') + $(use_enable libcaca caca) + $(use_enable jpeg) + --disable-android + $(use_enable raspberry-pi rpi) + $(usex libmpv "$(use_enable opengl plain-gl)" '--disable-plain-gl') + + # HWaccels + # Automagic Video Toolbox HW acceleration. See Gentoo bug 577332. + $(use_enable vaapi vaapi-hwaccel) + # Automagic VDPAU HW acceleration. See Gentoo bug 558870. + + # TV features + $(use_enable v4l tv) + $(use_enable v4l tv-v4l2) + $(use_enable v4l libv4l2) + $(use_enable v4l audio-input) + $(use_enable dvb dvbin) + + # Miscellaneous features + --disable-apple-remote # Needs testing first. See Gentoo bug 577332. + ) + + if use vaapi && use X; then + mywafargs+=( + $(use_enable opengl vaapi-glx) + $(use_enable egl vaapi-x-egl) + ) + fi + + # Create reproducible non-live builds + [[ ${PV} != *9999* ]] && mywafargs+=(--disable-build-date) + + waf-utils_src_configure "${mywafargs[@]}" +} + +src_install() { + waf-utils_src_install + + if use cli && use luajit; then + pax-mark -m "${ED}usr/bin/${PN}" + fi +} + +pkg_preinst() { + gnome2_icon_savelist +} + +pkg_postinst() { + fdo-mime_desktop_database_update + gnome2_icon_cache_update +} + +pkg_postrm() { + fdo-mime_desktop_database_update + gnome2_icon_cache_update +} + +src_test() { + cd "${S}"/build/test || die + for test in *; do + if [[ -x ${test} ]]; then + ./"${test}" || die "Test suite failed" + fi + done +} |