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>
This commit is contained in:
Ilya Tumaykin
2016-04-25 07:30:47 +00:00
committed by Patrice Clement
parent 82c88af0f5
commit 128e34bb2e
8 changed files with 529 additions and 0 deletions
@@ -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;
@@ -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);
@@ -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))
@@ -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);
@@ -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))
@@ -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);
}
@@ -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"
+295
View File
@@ -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
}