media-video/mplayer: bump to release 1.2
authorAlexis Ballier <aballier@gentoo.org>
Sun, 4 Oct 2015 17:32:12 +0000 (19:32 +0200)
committerAlexis Ballier <aballier@gentoo.org>
Sun, 4 Oct 2015 17:32:25 +0000 (19:32 +0200)
Package-Manager: portage-2.2.22

media-video/mplayer/Manifest
media-video/mplayer/files/mplayer-1.2-get_buffer.patch [new file with mode: 0644]
media-video/mplayer/mplayer-1.2.ebuild [new file with mode: 0644]
media-video/mplayer/mplayer-9999.ebuild

index 8aad2a9450d784293014319fae5b86c77e9c949d..bb818f3cb48f62834e5a751979bc1879e6b73816 100644 (file)
@@ -1,4 +1,5 @@
 DIST MPlayer-1.1.1.tar.xz 11202492 SHA256 ce8fc7c3179e6a57eb3a58cb7d1604388756b8a61764cc93e095e7aff3798c76 SHA512 06371d47b02caec83c7662f6bb4a827eafb7f3309f6cda959a0f49b647df031166a6e7c5d530b57b580104289ee260aa96f3f43cbfffcef816cea776b0d5aed0 WHIRLPOOL 3cd0f3845cd45961b778c384a322bc628cc9cd6fef3801b62389bd616a443ba5270c378a889412a7dc72d37ff26704d5d989d2c995a2a4a6540f6313ccacbb63
+DIST MPlayer-1.2.tar.xz 13019196 SHA256 ffe7f6f10adf2920707e8d6c04f0d3ed34c307efc6cd90ac46593ee8fba2e2b6 SHA512 ac10dd4facd0d8fbc3454a3a2eae0e0d2ed76fa60f30ebd6f8495632e4541af712ab2d005e88bc2baa8302ccb98d63ba80a051db80d2b76ac928a2bd779b47aa WHIRLPOOL 65bcda55684dced6b286e505df4180f849d6a9f2e1e44560f3393311694ea5a0e96cd7c454b8bbc4198b92c1fd3b0fb4f7c5f6842710b40dc47216037a88b33b
 DIST font-arial-cp1250.tar.bz2 249705 SHA256 423a07e780bb130cd8e4730715545c5d919c248dda595aab7a0a01de3c83fd12 SHA512 4f77ff5ceb8ec6e5d9f8f34d8950a6a6276d1fd5a947772fcbdb6554988b1ea665c12b82f45164f91fb7bd08000cb4afc26fa35beb4c760464160e22b9b8c340 WHIRLPOOL d635f54be65b0ca1047d943b6f6da433cda9fce6ed74fcab993501cf7f6b443eb711e182cd7fff09e553d251b5fd1c60196aa22e8370cba99fa175ed5ecdb47f
 DIST font-arial-iso-8859-1.tar.bz2 234242 SHA256 9730f481764f367c9089d0166fb6ccf9148808ffbbfeca635cf0e6db75765d29 SHA512 a1d03b6f09c48f48b7733f3bc0402ceab239a9abf88b860d852ea9fe69b4da690208a79d6f29d30204f5b37becf10672e8e8c0bfef201846d80ec54df617d029 WHIRLPOOL 8050362b125d3ca98214526cee2fa685e31487d13a6483c765bfc844bdc5e07beeba2c1ba313458096d43a63edd6c5e80b8b388c2792fc0ec7421e4072d8ca25
 DIST font-arial-iso-8859-2.tar.bz2 222208 SHA256 71debfc960007c2f6242dfc91e8b1c005b30a99e129aeb00ab8c03f4371b41c1 SHA512 5671e628303fd816f64a51ad10e2f4dd9c3dc1b34c379a2ecf489b83931db7af668aaa4e00e96a00cacd63ed98daeae6b6a4d5925edfb06fc98d3a923f70257d WHIRLPOOL 08178087b4ea1dfb2250f4673785e31dd876b06af51c51b2bddc172b23e6e33cbc1b2c6b710a317e42dc05486974b26ed0ad3ca50a185567aa77d49bd1e72aee
diff --git a/media-video/mplayer/files/mplayer-1.2-get_buffer.patch b/media-video/mplayer/files/mplayer-1.2-get_buffer.patch
new file mode 100644 (file)
index 0000000..3329b98
--- /dev/null
@@ -0,0 +1,327 @@
+r37476 | rtogni | 2015-09-05 18:20:27 +0200 (Sat, 05 Sep 2015) | 5 lines
+
+Replace deprecated get_buffer, buffer_hints, and others
+
+This is needed to compile with latest FFmpeg
+
+Index: libmpcodecs/vd_ffmpeg.c
+===================================================================
+--- libmpcodecs/vd_ffmpeg.c    (revision 37475)
++++ libmpcodecs/vd_ffmpeg.c    (revision 37476)
+@@ -40,6 +40,7 @@
+ #if CONFIG_VDPAU
+ #include "libavcodec/vdpau.h"
+ #endif
++#include "libavutil/pixdesc.h"
+ static const vd_info_t info = {
+     "FFmpeg's libavcodec codec family",
+@@ -95,8 +96,11 @@
+ #include "m_option.h"
+-static int get_buffer(AVCodecContext *avctx, AVFrame *pic);
++static int get_buffer(AVCodecContext *avctx, AVFrame *pic, int isreference);
++static int mpcodec_default_get_buffer(AVCodecContext *avctx, AVFrame *frame);
++static int get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags);
+ static void release_buffer(AVCodecContext *avctx, AVFrame *pic);
++static void mpcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic);
+ static void draw_slice(struct AVCodecContext *s, const AVFrame *src, int offset[4],
+                        int y, int type, int height);
+@@ -269,19 +273,10 @@
+     if (lavc_param_vismv || (lavc_param_debug & (FF_DEBUG_VIS_MB_TYPE|FF_DEBUG_VIS_QP))) {
+         ctx->do_slices = ctx->do_dr1 = 0;
+     }
+-#ifndef CODEC_FLAG_EMU_EDGE
+-#define CODEC_FLAG_EMU_EDGE 0
+-#endif
+     if(ctx->do_dr1){
+-        avctx->flags |= CODEC_FLAG_EMU_EDGE;
+-        avctx->  reget_buffer =
+-        avctx->    get_buffer =     get_buffer;
+-        avctx->release_buffer = release_buffer;
++        avctx->get_buffer2 = get_buffer2;
+     } else if (lavc_codec->capabilities & CODEC_CAP_DR1) {
+-        avctx->flags &= ~CODEC_FLAG_EMU_EDGE;
+-        avctx->  reget_buffer = avcodec_default_reget_buffer;
+-        avctx->    get_buffer = avcodec_default_get_buffer;
+-        avctx->release_buffer = avcodec_default_release_buffer;
++        avctx->get_buffer2 = avcodec_default_get_buffer2;
+     }
+     avctx->slice_flags = 0;
+ }
+@@ -309,9 +304,7 @@
+     if (IMGFMT_IS_HWACCEL(imgfmt)) {
+         ctx->do_dr1    = 1;
+         ctx->nonref_dr = 0;
+-        avctx->get_buffer      = get_buffer;
+-        avctx->release_buffer  = release_buffer;
+-        avctx->reget_buffer    = get_buffer;
++        avctx->get_buffer2 = get_buffer2;
+         mp_msg(MSGT_DECVIDEO, MSGL_V, IMGFMT_IS_XVMC(imgfmt) ?
+                MSGTR_MPCODECS_XVMCAcceleratedMPEG2 :
+                "[VD_FFMPEG] VDPAU accelerated decoding\n");
+@@ -384,7 +377,6 @@
+ #endif
+     avctx->flags2|= lavc_param_fast;
+     avctx->codec_tag= sh->format;
+-    avctx->stream_codec_tag= sh->video.fccHandler;
+     avctx->idct_algo= lavc_param_idct_algo;
+     avctx->error_concealment= lavc_param_error_concealment;
+     avctx->debug= lavc_param_debug;
+@@ -668,7 +660,7 @@
+     return 0;
+ }
+-static int get_buffer(AVCodecContext *avctx, AVFrame *pic){
++static int get_buffer(AVCodecContext *avctx, AVFrame *pic, int isreference){
+     sh_video_t *sh = avctx->opaque;
+     vd_ffmpeg_ctx *ctx = sh->context;
+     mp_image_t *mpi=NULL;
+@@ -677,27 +669,12 @@
+     int width = FFMAX(avctx->width,  -(-avctx->coded_width  >> avctx->lowres));
+     int height= FFMAX(avctx->height, -(-avctx->coded_height >> avctx->lowres));
+     // special case to handle reget_buffer
+-    if (pic->opaque && pic->data[0] && (!pic->buffer_hints || pic->buffer_hints & FF_BUFFER_HINTS_REUSABLE))
++    if (pic->opaque && pic->data[0])
+         return 0;
+     avcodec_align_dimensions(avctx, &width, &height);
+ //printf("get_buffer %d %d %d\n", pic->reference, ctx->ip_count, ctx->b_count);
+-    if (pic->buffer_hints) {
+-        mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "Buffer hints: %u\n", pic->buffer_hints);
+-        type = MP_IMGTYPE_TEMP;
+-        if (pic->buffer_hints & FF_BUFFER_HINTS_READABLE)
+-            flags |= MP_IMGFLAG_READABLE;
+-        if (pic->buffer_hints & FF_BUFFER_HINTS_PRESERVE ||
+-            pic->buffer_hints & FF_BUFFER_HINTS_REUSABLE) {
+-            ctx->ip_count++;
+-            type = MP_IMGTYPE_IP;
+-            flags |= MP_IMGFLAG_PRESERVE;
+-        }
+-        flags|=(avctx->skip_idct<=AVDISCARD_DEFAULT && avctx->skip_frame<=AVDISCARD_DEFAULT && ctx->do_slices) ?
+-                 MP_IMGFLAG_DRAW_CALLBACK:0;
+-        mp_msg(MSGT_DECVIDEO, MSGL_DBG2, type == MP_IMGTYPE_IP ? "using IP\n" : "using TEMP\n");
+-    } else {
+-        if(!pic->reference){
++        if(!isreference){
+             ctx->b_count++;
+             flags|=(avctx->skip_idct<=AVDISCARD_DEFAULT && avctx->skip_frame<=AVDISCARD_DEFAULT && ctx->do_slices) ?
+                      MP_IMGFLAG_DRAW_CALLBACK:0;
+@@ -711,11 +688,10 @@
+         }else{
+             type= MP_IMGTYPE_IP;
+         }
+-    }
+     if (ctx->nonref_dr) {
+         if (flags & MP_IMGFLAG_PRESERVE)
+-            return avcodec_default_get_buffer(avctx, pic);
++            return mpcodec_default_get_buffer(avctx, pic);
+         // Use NUMBERED since for e.g. TEMP vos assume there will
+         // be no other frames between the get_image and matching put_image.
+         type = MP_IMGTYPE_NUMBERED;
+@@ -722,7 +698,6 @@
+     }
+     if(init_vo(sh, avctx->pix_fmt, 1) < 0){
+-        avctx->release_buffer= avcodec_default_release_buffer;
+         goto disable_dr1;
+     }
+@@ -822,7 +797,6 @@
+ else
+     printf(".");
+ #endif
+-    pic->type= FF_BUFFER_TYPE_USER;
+     return 0;
+ disable_dr1:
+@@ -829,13 +803,11 @@
+     ctx->do_dr1 = 0;
+     // For frame-multithreading these contexts aren't
+     // the same and must both be updated.
+-    ctx->avctx->get_buffer   =
+-    avctx->get_buffer        = avcodec_default_get_buffer;
+-    ctx->avctx->reget_buffer =
+-    avctx->reget_buffer      = avcodec_default_reget_buffer;
++    ctx->avctx->get_buffer2   =
++    avctx->get_buffer2 = avcodec_default_get_buffer2;
+     if (pic->data[0])
+-        release_buffer(avctx, pic);
+-    return avctx->get_buffer(avctx, pic);
++        mpcodec_default_release_buffer(avctx, pic);
++    return avctx->get_buffer2(avctx, pic,0);
+ }
+ static void release_buffer(struct AVCodecContext *avctx, AVFrame *pic){
+@@ -843,8 +815,8 @@
+     sh_video_t *sh = avctx->opaque;
+     vd_ffmpeg_ctx *ctx = sh->context;
+     int i;
+-    if (pic->type != FF_BUFFER_TYPE_USER) {
+-        avcodec_default_release_buffer(avctx, pic);
++    if (pic->opaque == NULL) {
++        mpcodec_default_release_buffer(avctx, pic);
+         return;
+     }
+@@ -954,7 +926,7 @@
+     // even when we do dr we might actually get a buffer we had
+     // FFmpeg allocate - this mostly happens with nonref_dr.
+     // Ensure we treat it correctly.
+-    dr1= ctx->do_dr1 && pic->type == FF_BUFFER_TYPE_USER;
++    dr1= ctx->do_dr1 && pic->opaque != NULL;
+     if(ret<0) mp_msg(MSGT_DECVIDEO, MSGL_WARN, "Error while decoding frame!\n");
+ //printf("repeat: %d\n", pic->repeat_pict);
+ //-- vstats generation
+@@ -1128,3 +1100,148 @@
+     set_format_params(avctx, selected_format);
+     return selected_format;
+ }
++
++
++/*
++ FFWrapper
++*/
++static int mpcodec_default_get_buffer(AVCodecContext *avctx, AVFrame *frame)
++{
++    return avcodec_default_get_buffer2(avctx, frame, 0);
++}
++
++static void mpcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic)
++{
++    av_frame_unref(pic);
++}
++
++typedef struct CompatReleaseBufPriv {
++    AVCodecContext avctx;
++    AVFrame frame;
++    uint8_t avframe_padding[1024]; // hack to allow linking to a avutil with larger AVFrame
++} CompatReleaseBufPriv;
++
++static void compat_free_buffer(void *opaque, uint8_t *data)
++{
++    CompatReleaseBufPriv *priv = opaque;
++    release_buffer(&priv->avctx, &priv->frame);
++    av_freep(&priv);
++}
++
++static void compat_release_buffer(void *opaque, uint8_t *data)
++{
++    AVBufferRef *buf = opaque;
++    av_buffer_unref(&buf);
++}
++
++static int get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags)
++{
++    /*
++     * Wrap an old get_buffer()-allocated buffer in a bunch of AVBuffers.
++     * We wrap each plane in its own AVBuffer. Each of those has a reference to
++     * a dummy AVBuffer as its private data, unreffing it on free.
++     * When all the planes are freed, the dummy buffer's free callback calls
++     * release_buffer().
++     */
++    CompatReleaseBufPriv *priv = NULL;
++    AVBufferRef *dummy_buf = NULL;
++    int planes, i, ret;
++
++    ret = get_buffer(avctx, frame, flags & AV_GET_BUFFER_FLAG_REF);
++    if (ret < 0)
++        return ret;
++
++    /* return if the buffers are already set up
++     * this would happen e.g. when a custom get_buffer() calls
++     * avcodec_default_get_buffer
++     */
++    if (frame->buf[0])
++        goto end0;
++
++    priv = av_mallocz(sizeof(*priv));
++    if (!priv) {
++        ret = AVERROR(ENOMEM);
++        goto fail;
++    }
++    priv->avctx = *avctx;
++    priv->frame = *frame;
++
++    dummy_buf = av_buffer_create(NULL, 0, compat_free_buffer, priv, 0);
++    if (!dummy_buf) {
++        ret = AVERROR(ENOMEM);
++        goto fail;
++    }
++
++#define WRAP_PLANE(ref_out, data, data_size)                            \
++do {                                                                    \
++    AVBufferRef *dummy_ref = av_buffer_ref(dummy_buf);                  \
++    if (!dummy_ref) {                                                   \
++        ret = AVERROR(ENOMEM);                                          \
++        goto fail;                                                      \
++    }                                                                   \
++    ref_out = av_buffer_create(data, data_size, compat_release_buffer,  \
++                               dummy_ref, 0);                           \
++    if (!ref_out) {                                                     \
++        av_buffer_unref(&dummy_ref);                                    \
++        av_frame_unref(frame);                                          \
++        ret = AVERROR(ENOMEM);                                          \
++        goto fail;                                                      \
++    }                                                                   \
++} while (0)
++
++    if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) {
++        const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format);
++
++        planes = av_pix_fmt_count_planes(frame->format);
++        /* workaround for AVHWAccel plane count of 0, buf[0] is used as
++           check for allocated buffers: make libavcodec happy */
++        if (desc && desc->flags & AV_PIX_FMT_FLAG_HWACCEL)
++            planes = 1;
++        if (!desc || planes <= 0) {
++            ret = AVERROR(EINVAL);
++            goto fail;
++        }
++
++        for (i = 0; i < planes; i++) {
++            int v_shift    = (i == 1 || i == 2) ? desc->log2_chroma_h : 0;
++            int plane_size = (frame->height >> v_shift) * frame->linesize[i];
++
++            WRAP_PLANE(frame->buf[i], frame->data[i], plane_size);
++        }
++    } else {
++        int planar = av_sample_fmt_is_planar(frame->format);
++        planes = planar ? avctx->channels : 1;
++
++        if (planes > FF_ARRAY_ELEMS(frame->buf)) {
++            frame->nb_extended_buf = planes - FF_ARRAY_ELEMS(frame->buf);
++            frame->extended_buf = av_malloc_array(sizeof(*frame->extended_buf),
++                                            frame->nb_extended_buf);
++            if (!frame->extended_buf) {
++                ret = AVERROR(ENOMEM);
++                goto fail;
++            }
++        }
++
++        for (i = 0; i < FFMIN(planes, FF_ARRAY_ELEMS(frame->buf)); i++)
++            WRAP_PLANE(frame->buf[i], frame->extended_data[i], frame->linesize[0]);
++
++        for (i = 0; i < frame->nb_extended_buf; i++)
++            WRAP_PLANE(frame->extended_buf[i],
++                       frame->extended_data[i + FF_ARRAY_ELEMS(frame->buf)],
++                       frame->linesize[0]);
++    }
++
++    av_buffer_unref(&dummy_buf);
++
++end0:
++    frame->width  = avctx->width;
++    frame->height = avctx->height;
++
++    return 0;
++
++fail:
++    release_buffer(avctx, frame);
++    av_freep(&priv);
++    av_buffer_unref(&dummy_buf);
++    return ret;
++}
diff --git a/media-video/mplayer/mplayer-1.2.ebuild b/media-video/mplayer/mplayer-1.2.ebuild
new file mode 100644 (file)
index 0000000..3289e6b
--- /dev/null
@@ -0,0 +1,639 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+EGIT_REPO_URI="git://git.videolan.org/ffmpeg.git"
+ESVN_REPO_URI="svn://svn.mplayerhq.hu/mplayer/trunk"
+[[ ${PV} = *9999* ]] && SVN_ECLASS="subversion git-2" || SVN_ECLASS=""
+
+inherit toolchain-funcs eutils flag-o-matic multilib base ${SVN_ECLASS}
+
+IUSE="cpu_flags_x86_3dnow cpu_flags_x86_3dnowext a52 aalib +alsa altivec aqua bidi bl bluray
+bs2b cddb +cdio cdparanoia cpudetection debug dga
+directfb doc dts dv dvb +dvd +dvdnav +enca +encode faac faad fbcon
+ftp gif ggi gsm +iconv ipv6 jack joystick jpeg jpeg2k kernel_linux ladspa
++libass libcaca libmpeg2 lirc live lzo mad md5sum +cpu_flags_x86_mmx cpu_flags_x86_mmxext mng mp3 nas
++network nut openal opengl +osdmenu oss png pnm pulseaudio pvr
+radio rar rtc rtmp samba selinux +shm sdl speex cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_ssse3
+tga theora tremor +truetype toolame twolame +unicode v4l vdpau vidix
+vorbis +X x264 xanim xinerama +xscreensaver +xv xvid xvmc zoran"
+
+VIDEO_CARDS="s3virge mga tdfx"
+for x in ${VIDEO_CARDS}; do
+       IUSE+=" video_cards_${x}"
+done
+
+FONT_URI="
+       mirror://mplayer/releases/fonts/font-arial-iso-8859-1.tar.bz2
+       mirror://mplayer/releases/fonts/font-arial-iso-8859-2.tar.bz2
+       mirror://mplayer/releases/fonts/font-arial-cp1250.tar.bz2
+"
+if [[ ${PV} == *9999* ]]; then
+       RELEASE_URI=""
+elif [ "${PV%_rc*}" = "${PV}" -a "${PV%_pre*}" = "${PV}" ]; then
+       MY_P="MPlayer-${PV}"
+       S="${WORKDIR}/${MY_P}"
+       RELEASE_URI="mirror://mplayer/releases/${MY_P}.tar.xz"
+else
+       RELEASE_URI="mirror://gentoo/${P}.tar.xz"
+fi
+SRC_URI="${RELEASE_URI}
+       !truetype? ( ${FONT_URI} )"
+
+DESCRIPTION="Media Player for Linux"
+HOMEPAGE="http://www.mplayerhq.hu/"
+
+FONT_RDEPS="
+       virtual/ttf-fonts
+       media-libs/fontconfig
+       >=media-libs/freetype-2.2.1:2
+"
+X_RDEPS="
+       x11-libs/libXext
+       x11-libs/libXxf86vm
+"
+# Rar: althrought -gpl version is nice, it cant do most functions normal rars can
+#      nemesi? ( net-libs/libnemesi )
+RDEPEND+="
+       sys-libs/ncurses:0=
+       app-arch/bzip2
+       sys-libs/zlib
+       >=media-video/ffmpeg-2.6:0=[vdpau?]
+       a52? ( media-libs/a52dec )
+       aalib? ( media-libs/aalib )
+       alsa? ( media-libs/alsa-lib )
+       bidi? ( dev-libs/fribidi )
+       bluray? ( >=media-libs/libbluray-0.2.1 )
+       bs2b? ( media-libs/libbs2b )
+       cdio? ( dev-libs/libcdio )
+       cdparanoia? ( !cdio? ( media-sound/cdparanoia ) )
+       dga? ( x11-libs/libXxf86dga )
+       directfb? ( dev-libs/DirectFB )
+       dts? ( media-libs/libdca )
+       dv? ( media-libs/libdv )
+       dvb? ( virtual/linuxtv-dvb-headers )
+       dvd? ( >=media-libs/libdvdread-4.1.3 )
+       dvdnav? ( >=media-libs/libdvdnav-4.1.3 )
+       encode? (
+               !twolame? ( toolame? ( media-sound/toolame ) )
+               twolame? ( media-sound/twolame )
+               faac? ( media-libs/faac )
+               mp3? ( media-sound/lame )
+               x264? ( >=media-libs/x264-0.0.20100423:= )
+               xvid? ( media-libs/xvid )
+       )
+       enca? ( app-i18n/enca )
+       faad? ( media-libs/faad2 )
+       ggi? ( media-libs/libggi media-libs/libggiwmh )
+       gif? ( media-libs/giflib )
+       gsm? ( media-sound/gsm )
+       iconv? ( virtual/libiconv )
+       jack? ( media-sound/jack-audio-connection-kit )
+       jpeg? ( virtual/jpeg:0 )
+       jpeg2k? ( media-libs/openjpeg:0 )
+       ladspa? ( media-libs/ladspa-sdk )
+       libass? ( >=media-libs/libass-0.9.10:=[enca?] )
+       libcaca? ( media-libs/libcaca )
+       libmpeg2? ( media-libs/libmpeg2 )
+       lirc? ( app-misc/lirc )
+       live? ( media-plugins/live )
+       lzo? ( >=dev-libs/lzo-2 )
+       mad? ( media-libs/libmad )
+       mng? ( media-libs/libmng:= )
+       mp3? ( media-sound/mpg123 )
+       nas? ( media-libs/nas )
+       nut? ( >=media-libs/libnut-661 )
+       openal? ( media-libs/openal )
+       opengl? ( virtual/opengl )
+       png? ( media-libs/libpng:0= )
+       pnm? ( media-libs/netpbm )
+       pulseaudio? ( media-sound/pulseaudio )
+       rar? (
+               || (
+                       app-arch/unrar
+                       app-arch/rar
+               )
+       )
+       rtmp? ( media-video/rtmpdump )
+       samba? ( net-fs/samba )
+       sdl? ( media-libs/libsdl )
+       speex? ( media-libs/speex )
+       theora? ( media-libs/libtheora[encode?] )
+       tremor? ( media-libs/tremor )
+       truetype? ( ${FONT_RDEPS} )
+       vdpau? ( x11-libs/libvdpau )
+       vorbis? ( !tremor? ( media-libs/libvorbis ) )
+       X? ( ${X_RDEPS} )
+       xanim? ( media-video/xanim )
+       xinerama? ( x11-libs/libXinerama )
+       xscreensaver? ( x11-libs/libXScrnSaver )
+       xv? ( x11-libs/libXv )
+       xvmc? ( x11-libs/libXvMC )
+"
+
+X_DEPS="
+       x11-proto/videoproto
+       x11-proto/xf86vidmodeproto
+"
+ASM_DEP="dev-lang/yasm"
+DEPEND="${RDEPEND}
+       virtual/pkgconfig
+       dga? ( x11-proto/xf86dgaproto )
+       X? ( ${X_DEPS} )
+       xinerama? ( x11-proto/xineramaproto )
+       xscreensaver? ( x11-proto/scrnsaverproto )
+       amd64? ( ${ASM_DEP} )
+       doc? (
+               dev-libs/libxslt app-text/docbook-xml-dtd
+               app-text/docbook-xsl-stylesheets
+       )
+       x86? ( ${ASM_DEP} )
+       x86-fbsd? ( ${ASM_DEP} )
+"
+RDEPEND+="
+       selinux? ( sec-policy/selinux-mplayer )
+"
+
+SLOT="0"
+LICENSE="GPL-2"
+if [[ ${PV} != *9999* ]]; then
+       KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
+else
+       KEYWORDS=""
+fi
+
+# faac codecs are nonfree
+# libcdio support: prefer libcdio over cdparanoia and don't check for cddb w/cdio
+# dvd navigation requires dvd read support
+# ass and freetype font require iconv and ass requires freetype fonts
+# unicode transformations are usefull only with iconv
+# radio requires oss or alsa backend
+# xvmc requires xvideo support
+REQUIRED_USE="
+       dga? ( X )
+       dvdnav? ( dvd )
+       enca? ( iconv )
+       ggi? ( X )
+       libass? ( truetype )
+       opengl? ( X )
+       osdmenu? ( X )
+       truetype? ( iconv )
+       vdpau? ( X )
+       vidix? ( X )
+       xinerama? ( X )
+       xscreensaver? ( X )
+       xv? ( X )
+       xvmc? ( xv )"
+RESTRICT="faac? ( bindist )"
+
+PATCHES=(
+       # Work with pulseaudio-6, bug #549680, https://trac.mplayerhq.hu/ticket/2241
+       "${FILESDIR}"/${PN}-1.2_pre20150214-pulseaudio-6.0.patch
+)
+
+pkg_setup() {
+       if [[ ${PV} == *9999* ]]; then
+               elog
+               elog "This is a live ebuild which installs the latest from upstream's"
+               elog "subversion repository, and is unsupported by Gentoo."
+               elog "Everything but bugs in the ebuild itself will be ignored."
+               elog
+       fi
+
+       if use cpudetection; then
+               ewarn
+               ewarn "You've enabled the cpudetection flag. This feature is"
+               ewarn "included mainly for people who want to use the same"
+               ewarn "binary on another system with a different CPU architecture."
+               ewarn "MPlayer will already detect your CPU settings by default at"
+               ewarn "buildtime; this flag is used for runtime detection."
+               ewarn "You won't need this turned on if you are only building"
+               ewarn "mplayer for this system. Also, if your compile fails, try"
+               ewarn "disabling this use flag."
+       fi
+
+       if has_version 'media-video/libav' ; then
+               ewarn "Please note that upstream uses media-video/ffmpeg."
+               ewarn "media-video/libav should be fine in theory but if you"
+               ewarn "experience any problem, try to move to media-video/ffmpeg."
+       fi
+}
+
+src_unpack() {
+       if [[ ${PV} = *9999* ]]; then
+               subversion_src_unpack
+               cd "${WORKDIR}"
+               rm -rf "${WORKDIR}/${P}/ffmpeg/"
+               ( S="${WORKDIR}/${P}/ffmpeg/" git-2_src_unpack )
+       else
+               unpack ${A}
+       fi
+
+       if [[ ${PV} = *9999* ]] || [[ "${PV%_rc*}" = "${PV}" ]]; then
+               cd "${S}"
+               cp "${FILESDIR}/dump_ffmpeg.sh" . || die
+               chmod +x dump_ffmpeg.sh
+               ./dump_ffmpeg.sh || die
+       fi
+
+       if ! use truetype; then
+               unpack font-arial-iso-8859-1.tar.bz2 \
+                       font-arial-iso-8859-2.tar.bz2 \
+                       font-arial-cp1250.tar.bz2
+       fi
+}
+
+src_prepare() {
+       local svf=snapshot_version
+       if [[ ${PV} = *9999* ]]; then
+               # Set SVN version manually
+               subversion_wc_info
+               printf "${ESVN_WC_REVISION}" > $svf
+       fi
+       if [ ! -f VERSION ] ; then
+               [ -f "$svf" ] || die "Missing ${svf}. Did you generate your snapshot with prepare_mplayer.sh?"
+               local sv=$(<$svf)
+               printf "SVN-r${sv} (Gentoo)" > VERSION
+       fi
+
+       # fix path to bash executable in configure scripts
+       sed -i -e "1c\#!${EPREFIX}/bin/bash" configure version.sh || die
+
+       base_src_prepare
+
+       # Use sane default for >=virtual/udev-197
+       sed -i -e '/default_dvd_device/s:/dev/dvd:/dev/cdrom:' configure || die
+
+       if has_version '>=media-video/ffmpeg-2.9'; then
+               epatch "${FILESDIR}/${PN}-1.2_pre20150730-chan.patch"
+               epatch "${FILESDIR}/${PN}-1.2-get_buffer.patch"
+               epatch "${FILESDIR}/${PN}-1.2_pre20150730-encode.patch"
+       fi
+}
+
+src_configure() {
+       local myconf=""
+       local uses i
+
+       # set LINGUAS
+       [[ -n $LINGUAS ]] && LINGUAS="${LINGUAS/da/dk}"
+       [[ -n $LINGUAS ]] && LINGUAS="${LINGUAS/zh/zh_CN}" #482968
+
+       # mplayer ebuild uses "use foo || --disable-foo" to forcibly disable
+       # compilation in almost every situation. The reason for this is
+       # because if --enable is used, it will force the build of that option,
+       # regardless of whether the dependency is available or not.
+
+       ###################
+       #Optional features#
+       ###################
+       # disable svga since we don't want it
+       # disable arts since we don't have kde3
+       # always disable internal ass
+       # disable opus and ilbc since it only controls support in internal
+       #         ffmpeg which we do not use
+       myconf+="
+               --disable-svga --disable-svgalib_helper
+               --disable-ass-internal
+               --disable-arts
+               --disable-kai
+               --disable-libopus
+               --disable-libilbc
+               $(use_enable network networking)
+               $(use_enable joystick)
+       "
+       uses="bl bluray enca ftp rtc" # nemesi <- not working with in-tree ebuild
+       myconf+=" --disable-nemesi" # nemesi automagic disable
+       for i in ${uses}; do
+               use ${i} || myconf+=" --disable-${i}"
+       done
+       use bidi  || myconf+=" --disable-fribidi"
+       use ipv6  || myconf+=" --disable-inet6"
+       use libass || myconf+=" --disable-ass"
+       use nut   || myconf+=" --disable-libnut"
+       use rar   || myconf+=" --disable-unrarexec"
+       use samba || myconf+=" --disable-smb"
+       use lirc  || myconf+=" --disable-lirc --disable-lircc --disable-apple-ir"
+
+       # libcdio support: prefer libcdio over cdparanoia
+       # don't check for cddb w/cdio
+       if use cdio; then
+               myconf+=" --disable-cdparanoia"
+       else
+               myconf+=" --disable-libcdio"
+               use cdparanoia || myconf+=" --disable-cdparanoia"
+               use cddb || myconf+=" --disable-cddb"
+       fi
+
+       ################################
+       # DVD read, navigation support #
+       ################################
+       #
+       # dvdread - accessing a DVD
+       # dvdnav - navigation of menus
+       use dvd || myconf+=" --disable-dvdread"
+       use dvdnav || myconf+=" --disable-dvdnav"
+
+       #############
+       # Subtitles #
+       #############
+       #
+       # SRT/ASS/SSA (subtitles) requires freetype support
+       # freetype support requires iconv
+       # iconv optionally can use unicode
+       use truetype || myconf+=" --disable-freetype"
+       use iconv || myconf+=" --disable-iconv --charset=noconv"
+       use iconv && use unicode && myconf+=" --charset=UTF-8"
+
+       #####################################
+       # DVB / Video4Linux / Radio support #
+       #####################################
+       myconf+=" --disable-tv-bsdbt848"
+       # broken upstream, won't work with recent kernels
+       myconf+=" --disable-ivtv"
+       # gone since linux-headers-2.6.38
+       myconf+=" --disable-tv-v4l1"
+       if { use dvb || use v4l || use pvr || use radio; }; then
+               use dvb || myconf+=" --disable-dvb"
+               use pvr || myconf+=" --disable-pvr"
+               use v4l || myconf+=" --disable-tv-v4l2"
+               if use radio && { use dvb || use v4l; }; then
+                       myconf+="
+                               --enable-radio
+                               $(use_enable encode radio-capture)
+                       "
+               else
+                       myconf+="
+                               --disable-radio-v4l2
+                               --disable-radio-bsdbt848
+                       "
+               fi
+       else
+               myconf+="
+                       --disable-tv
+                       --disable-tv-v4l2
+                       --disable-radio
+                       --disable-radio-v4l2
+                       --disable-radio-bsdbt848
+                       --disable-dvb
+                       --disable-v4l2
+                       --disable-pvr"
+       fi
+
+       ##########
+       # Codecs #
+       ##########
+       myconf+=" --disable-musepack" # Use internal musepack codecs for SV7 and SV8 support
+       myconf+=" --disable-libmpeg2-internal" # always use system media-libs/libmpeg2
+       use dts || myconf+=" --disable-libdca"
+       if ! use mp3; then
+               myconf+="
+                       --disable-mp3lame
+                       --disable-mpg123
+               "
+       fi
+       uses="a52 bs2b dv gsm lzo rtmp vorbis"
+       for i in ${uses}; do
+               use ${i} || myconf+=" --disable-lib${i}"
+       done
+
+       uses="faad gif jpeg libmpeg2 live mad mng png pnm speex tga theora tremor xanim"
+       for i in ${uses}; do
+               use ${i} || myconf+=" --disable-${i}"
+       done
+       use jpeg2k || myconf+=" --disable-libopenjpeg"
+
+       # Encoding
+       uses="faac x264 xvid toolame twolame"
+       if use encode; then
+               for i in ${uses}; do
+                       use ${i} || myconf+=" --disable-${i}"
+               done
+       else
+               myconf+=" --disable-mencoder"
+               for i in ${uses}; do
+                       myconf+=" --disable-${i}"
+                       use ${i} && elog "Useflag \"${i}\" will only be useful for encoding, i.e., with \"encode\" useflag enabled."
+               done
+       fi
+
+       #################
+       # Binary codecs #
+       #################
+       myconf+=" --disable-qtx --disable-real --disable-win32dll"
+
+       ################
+       # Video Output #
+       ################
+       uses="directfb md5sum sdl"
+       for i in ${uses}; do
+               use ${i} || myconf+=" --disable-${i}"
+       done
+       use aalib || myconf+=" --disable-aa"
+       use fbcon || myconf+=" --disable-fbdev"
+       use fbcon && use video_cards_s3virge && myconf+=" --enable-s3fb"
+       use libcaca || myconf+=" --disable-caca"
+       use zoran || myconf+=" --disable-zr"
+
+       if ! use kernel_linux || ! use video_cards_mga; then
+                myconf+=" --disable-mga --disable-xmga"
+       fi
+
+       if use video_cards_tdfx; then
+               myconf+="
+                       $(use_enable video_cards_tdfx tdfxvid)
+                       $(use_enable fbcon tdfxfb)
+               "
+       else
+               myconf+="
+                       --disable-3dfx
+                       --disable-tdfxvid
+                       --disable-tdfxfb
+               "
+       fi
+
+       # sun card, disable by default, see bug #258729
+       myconf+=" --disable-xvr100"
+
+       ################
+       # Audio Output #
+       ################
+       myconf+=" --disable-esd"
+       uses="alsa jack ladspa nas openal"
+       for i in ${uses}; do
+               use ${i} || myconf+=" --disable-${i}"
+       done
+       use pulseaudio || myconf+=" --disable-pulse"
+       if ! use radio; then
+               use oss || myconf+=" --disable-ossaudio"
+       fi
+
+       ####################
+       # Advanced Options #
+       ####################
+       # Platform specific flags, hardcoded on amd64 (see below)
+       use cpudetection && myconf+=" --enable-runtime-cpudetection"
+
+       uses="3dnow 3dnowext mmx mmxext sse sse2 ssse3"
+       for i in ${uses}; do
+               myconf+=" $(use_enable cpu_flags_x86_${i} ${i})"
+       done
+
+       uses="altivec shm"
+       for i in ${uses}; do
+               myconf+=" $(use_enable ${i})"
+       done
+
+       use debug && myconf+=" --enable-debug=3"
+
+       if use x86 && gcc-specs-pie; then
+               filter-flags -fPIC -fPIE
+               append-ldflags -nopie
+       fi
+
+       ###########################
+       # X enabled configuration #
+       ###########################
+       myconf+=" --disable-gui"
+       myconf+=" --disable-vesa"
+       uses="ggi vdpau xinerama xv"
+       for i in ${uses}; do
+               use ${i} || myconf+=" --disable-${i}"
+       done
+       use dga          || myconf+=" --disable-dga1 --disable-dga2"
+       use opengl       || myconf+=" --disable-gl"
+       use osdmenu      && myconf+=" --enable-menu"
+       use vidix        || myconf+=" --disable-vidix --disable-vidix-pcidb"
+       use xscreensaver || myconf+=" --disable-xss"
+       use X            || myconf+=" --disable-x11"
+       if use xvmc; then
+               myconf+=" --enable-xvmc --with-xvmclib=XvMCW"
+       else
+               myconf+=" --disable-xvmc"
+       fi
+
+       ############################
+       # OSX (aqua) configuration #
+       ############################
+       if use aqua; then
+               myconf+="
+                       --enable-macosx-finder
+                       --enable-macosx-bundle
+               "
+       fi
+
+       ./configure \
+               --cc="$(tc-getCC)" \
+               --host-cc="$(tc-getBUILD_CC)" \
+               --prefix="${EPREFIX}/usr" \
+               --bindir="${EPREFIX}/usr/bin" \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               --confdir="${EPREFIX}/etc/mplayer" \
+               --datadir="${EPREFIX}/usr/share/mplayer${namesuf}" \
+               --mandir="${EPREFIX}/usr/share/man" \
+               --disable-ffmpeg_a \
+               ${myconf} || die
+}
+
+src_compile() {
+       base_src_compile
+       # Build only user-requested docs if they're available.
+       if use doc ; then
+               # select available languages from $LINGUAS
+               local ALLOWED_LINGUAS="cs de en es fr hu it pl ru zh_CN"
+               local BUILT_DOCS=""
+               for i in ${LINGUAS} ; do
+                       has ${i} ${ALLOWED_LINGUAS} && BUILT_DOCS+=" ${i}"
+               done
+               if [[ -z $BUILT_DOCS ]]; then
+                       emake -j1 html-chunked
+               else
+                       for i in ${BUILT_DOCS}; do
+                               emake -j1 html-chunked-${i}
+                       done
+               fi
+       fi
+}
+
+src_install() {
+       local i
+
+       emake \
+               DESTDIR="${D}" \
+               INSTALLSTRIP="" \
+               install
+
+       dodoc AUTHORS Changelog Copyright README etc/codecs.conf
+
+       docinto tech/
+       dodoc DOCS/tech/{*.txt,MAINTAINERS,mpsub.sub,playtree,TODO,wishlist}
+       docinto TOOLS/
+       dodoc -r TOOLS
+       docinto tech/mirrors/
+       dodoc DOCS/tech/mirrors/*
+
+       if use doc; then
+               docinto html/
+               dohtml -r "${S}"/DOCS/HTML/*
+       fi
+
+       if ! use truetype; then
+               dodir /usr/share/mplayer/fonts
+               # Do this generic, as the mplayer people like to change the structure
+               # of their zips ...
+               for i in $(find "${WORKDIR}/" -type d -name 'font-arial-*'); do
+                       cp -pPR "${i}" "${ED}/usr/share/mplayer/fonts"
+               done
+               # Fix the font symlink ...
+               rm -rf "${ED}/usr/share/mplayer/font"
+               dosym fonts/font-arial-14-iso-8859-1 /usr/share/mplayer/font
+       fi
+
+       insinto /etc/mplayer
+       newins "${S}/etc/example.conf" mplayer.conf
+       cat >> "${ED}/etc/mplayer/mplayer.conf" << _EOF_
+# Config options can be section specific, global
+# options should go in the default section
+[default]
+_EOF_
+       doins "${S}/etc/input.conf"
+       if use osdmenu; then
+               doins "${S}/etc/menu.conf"
+       fi
+
+       if use truetype; then
+               cat >> "${ED}/etc/mplayer/mplayer.conf" << _EOF_
+fontconfig=1
+subfont-osd-scale=4
+subfont-text-scale=3
+_EOF_
+       fi
+
+       # bug 256203
+       if use rar; then
+               cat >> "${ED}/etc/mplayer/mplayer.conf" << _EOF_
+unrarexec=${EPREFIX}/usr/bin/unrar
+_EOF_
+       fi
+
+       dosym ../../../etc/mplayer/mplayer.conf /usr/share/mplayer/mplayer.conf
+       newbin "${S}/TOOLS/midentify.sh" midentify
+}
+
+pkg_preinst() {
+       [[ -d ${EROOT}/usr/share/mplayer/Skin/default ]] && \
+               rm -rf "${EROOT}/usr/share/mplayer/Skin/default"
+}
+
+pkg_postrm() {
+       # Cleanup stale symlinks
+       [ -L "${EROOT}/usr/share/mplayer/font" -a \
+                       ! -e "${EROOT}/usr/share/mplayer/font" ] && \
+               rm -f "${EROOT}/usr/share/mplayer/font"
+
+       [ -L "${EROOT}/usr/share/mplayer/subfont.ttf" -a \
+                       ! -e "${EROOT}/usr/share/mplayer/subfont.ttf" ] && \
+               rm -f "${EROOT}/usr/share/mplayer/subfont.ttf"
+}
index af049c62e32c8568656497b827bbde094f53116b..04b762c7d3baae6761a298a5f415967235d0b197 100644 (file)
@@ -60,7 +60,7 @@ RDEPEND+="
        sys-libs/ncurses:0=
        app-arch/bzip2
        sys-libs/zlib
-       >=media-video/ffmpeg-2.6:0=[vdpau?]
+       >=media-video/ffmpeg-2.8:0=[vdpau?]
        a52? ( media-libs/a52dec )
        aalib? ( media-libs/aalib )
        alsa? ( media-libs/alsa-lib )