diff options
Diffstat (limited to 'media-video/mplayer')
-rw-r--r-- | media-video/mplayer/Manifest | 19 | ||||
-rw-r--r-- | media-video/mplayer/files/dump_ffmpeg.sh | 74 | ||||
-rw-r--r-- | media-video/mplayer/files/mplayer-1.2-get_buffer.patch | 327 | ||||
-rw-r--r-- | media-video/mplayer/files/mplayer-1.2_pre20150730-chan.patch | 25 | ||||
-rw-r--r-- | media-video/mplayer/files/mplayer-1.2_pre20150730-encode.patch | 82 | ||||
-rw-r--r-- | media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch | 24 | ||||
-rw-r--r-- | media-video/mplayer/files/prepare_mplayer.sh | 25 | ||||
-rw-r--r-- | media-video/mplayer/metadata.xml | 41 | ||||
-rw-r--r-- | media-video/mplayer/mplayer-1.2.1-r1.ebuild | 632 | ||||
-rw-r--r-- | media-video/mplayer/mplayer-1.3.0-r2.ebuild | 626 | ||||
-rw-r--r-- | media-video/mplayer/mplayer-1.3.0-r3.ebuild | 628 | ||||
-rw-r--r-- | media-video/mplayer/mplayer-9999.ebuild | 626 |
12 files changed, 3129 insertions, 0 deletions
diff --git a/media-video/mplayer/Manifest b/media-video/mplayer/Manifest new file mode 100644 index 000000000000..22d72c22a719 --- /dev/null +++ b/media-video/mplayer/Manifest @@ -0,0 +1,19 @@ +AUX dump_ffmpeg.sh 2529 SHA256 fc26816195a1a5754a377c7ca9915823f599d8e33f4a6047413f217742cc7f50 SHA512 12c15efa5cdb99eac92ff808fa56c6137343cca48b73d5875a7a6b08cf36ebeda5022eb3bae0ba567ff9031d2a0f3b5dbe69ee191ae8ecf48b98a779504df66c WHIRLPOOL b8fe6da839579d0dfa94c77318d1713a73810960c914c8936100e091793ffedeec558565b2ce096138ad60cd7c18e690a0a8bd573e2b88b11a8399bab0ce224c +AUX mplayer-1.2-get_buffer.patch 12054 SHA256 ffffa0672bead0e97d970e98dc9ed4d1b9de444ee1eac3e83a16aeb0cac5c148 SHA512 9180c1d8cb151ce2c31ef196cbc10fc0a9e694995f49bc560e3335c76e424441b53306283d6fe89ea7a3ca933ef6801d5f155942951754a217fee3d3f34ad2a0 WHIRLPOOL 3efe38e95952dea7b36f3caf981786aa72e1a052ac3729daa29b84a850ad549996c514ff303d7a34e074e6c11842a7bffb18fab40173515fbfee8eaf4efd5397 +AUX mplayer-1.2_pre20150730-chan.patch 966 SHA256 d92a18180b023833a748ec4186a5e2914781247f8840d57d41b564cbe06eed48 SHA512 9ea28c193d26feba870283d110a69d42e739696571ac13d40f983b4b6f0c83f01befd12fa7825b2dca10d5f3279d29d71dd07f2f53553f78e88b182fd8250df4 WHIRLPOOL 8368cf41f1c1ca82674fde7ca39c46a7ec95569fd56acde0caba55b848a1a2635ae0b4b8b5e39c9b6f5f79bb6ad6401c2d7920568aee9d0c24e2e2def8a1f5fb +AUX mplayer-1.2_pre20150730-encode.patch 3022 SHA256 edf081f8704fdf3936be1971d2d1243b684f78772d4c2a9459ad56a2db9c87fa SHA512 c1da3944616205c92926910d93bf9ee39404f46cad07a68df28050aeab88a358480e9cfe09f41af8fa047b623d9400bcebc1a05c6982f704d5164a777e591792 WHIRLPOOL a928b0ff7bf40495a4a34a4f89f7c6cd17d76bf528ecc696828d9dd5b67a9121f455d22fd439d74dbe434b3e6c1c94e572023e694db8510fea3b6581bd95ab72 +AUX mplayer-1.3-CVE-2016-4352.patch 617 SHA256 3fac635945a9327b3e08d6707f7153966908df147b7bf3d06d0b72d2d3215ae5 SHA512 654bfa8368a02669ba249aa0c1a605f285d4d967b7038285df0ba7b83cd034ac3aff933a564fd6f33c7a153267be19d9eb517a52c8f4b53a6f81b6b2c5558512 WHIRLPOOL a7f36dbb623536ceeebdfc11f1389c97d51a7e5afba335345318b867bf2dbed9f8fdcfd695eb41de0b8fe648b3b40a04f61857c2845e43d46d8ad4ed0dfa08d5 +AUX prepare_mplayer.sh 757 SHA256 ee4c0765b2cbab5bcc99408c4864669647fb0ad42517e0a51a6524c12b55804f SHA512 0add0707e15d58cee331fc82f884a44b29908c503f9ddcbb63dc01e237e2f457f599bae8644ce49f1af2cc7b3183529364ce30e6748889355c17cb96cecee71a WHIRLPOOL a4de2ff8e6ecfe66e41881664a84bc8ad91147e7b559e2ec334f9ad6671d9892de01bddfdba514b9c2b0589956b38d22fc8d2ce6ff00c267bded4bfb6c3ef6f0 +DIST MPlayer-1.2.1.tar.xz 13029936 SHA256 831baf097d899bdfcdad0cb80f33cc8dff77fa52cb306bee5dee6843b5c52b5f SHA512 e6dd6de73ede9743855fab7f7316de2e957ac5a5b8fc8324ef3d57ca9796b0cb03676dee46b3827d932050836d43a6ad08f925cad3d28493a26933dbafdbb506 WHIRLPOOL d8f056a8a1d6cf2a7c99687bec9e34d123f574391df02a29959355c6e44f35f1f9a56ea5f2d0f6d1037d94de0897689429e78aa7e15f29f3df3042bbfc579c72 +DIST MPlayer-1.3.0.tar.xz 13278984 SHA256 3ad0846c92d89ab2e4e6fb83bf991ea677e7aa2ea775845814cbceb608b09843 SHA512 10007e471a941f8a3dabf6149e6e44fc1a364a9ccb5cd08c670fc22560e5053a15f3249e9d3e18cdda06b6b7e77e537026b5d33dc356e928c63747d6ed73dbae WHIRLPOOL 4aaa9609b0c27c0363671e32fb6b7cac8d2c0944c3425c8e76de0250fb76865d5f47c341b11704a0ea980401288d1d28fcd172a5f8469c9713ec37f977bcb088 +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 +EBUILD mplayer-1.2.1-r1.ebuild 17429 SHA256 96024a2fc6ec79a8c8fc32c9fb2173e4287d10807f6371961b3c95aaeaf81b75 SHA512 b36f8bfb7eb246787af2779b27d3cd17825a5f9e944a12c71a751615567b0f4a1015ca344b4e4a4bc64acdb52fb99dd1462a867505b24792472f5919fa6389c3 WHIRLPOOL 8f8e334b08ff302eeeb164f0aa48f052ce144a108e1f5de9ff2e37bcdb1e721d20c91cb823a4f7b11d0e6191c75d7c7c19b88ea36a822ef00e3b9b1eabfad97b +EBUILD mplayer-1.3.0-r2.ebuild 17194 SHA256 1424b2b4087e9f83d60f37a8f1fccae9f9818ef6372b1713670b08dda6b28ef9 SHA512 ec49627e9094314b6595a501c6057e5f0643b3035e92edebc6a2d778260a78c2553962b0cd72f56b290ceb80dffee891362786db18c2e948d295452eb0a9009d WHIRLPOOL 53a194edac6cf2520f9c4180f4f0741ce938a9c23fde391eb5cbc8452fe8be5b739e51c08cfd4587b35085b37142d26386b1424c90d25e3a6247a0ae8a12c393 +EBUILD mplayer-1.3.0-r3.ebuild 17293 SHA256 9c52d3314c6ea3a1ab50b9ab5e217e4360b80778fe83fe9e83f99fc4063c4ffb SHA512 e1f31085299fd1037f4a00f30a1d040ad09a7f14217f976475155feaa88b27ad056130d8a112c1b1a9ff2cc0c853fe7ba7de4337a3c3652047fdc044e86db35a WHIRLPOOL 852fd339e10315151ef83b134268fbc8de722c37a44471cdca0538f8fff4bff8beaa429000665adbae97938b6c4382744f27e2fad5a99541d512497158e774a5 +EBUILD mplayer-9999.ebuild 17206 SHA256 a8ce728287a09091c4d2917a3e91bc686e31eb7cb5bfbbbef6716d97ea64735e SHA512 b99dacae704b960366f0406bb5e99a9a34a3b454b29ce538ac8a46af48ecb86929ef0c59a80fd67b9187309fb7cca608a1385b6a229238fb114d0b2ebc9a723a WHIRLPOOL 1d23c6754b0c21f3eb3b515396a4a1dc4d2bcb3dee1b2472b38edf91fd987f31b7ee5fb7f229529f826a502d7ae4643b9d57df300cfcc21477a2c4aeb4591f47 +MISC ChangeLog 10735 SHA256 6c3dcfc43705566e97c1761d41f94e41aa26a6a1d7893c25b14e635979e2d267 SHA512 97d8be790bbc844cb59784d2b87dbf9ad0125e69949e502373a7e3cf230d6b5a964eea20b06648efc67634768af865ee5639aff155b61f4eecfa13e08ac93a73 WHIRLPOOL 28daecebbcea2937847c7c1122971327454dcc05ed41b01f1b4a79586c2d5d3db93226ed0ecf4870a2d43061d39192eb63b5fc05ef207ce9408c8b7873d5aa62 +MISC ChangeLog-2008 107064 SHA256 d9949e0e21fd6fd00f1417201455ee399240ef1010dcf56611ac0fc1f6f9505b SHA512 622543b379b4c44f5845566b4e697bd92dd3e864e2f01a1b0f303c8ae5c7fb5de24839f6503765d51b4a3bfa777d175a7e410383e62ef2bbacf3e87cdc28c705 WHIRLPOOL e731af47505ffa646c92386dfb14acaffc2bb14ab4da74520c0b4dbc15ca5c20aacadbb53c4b91ba8d126a75bf7d2fb61877eeda354064e20c48cf4137bf6a74 +MISC ChangeLog-2015 56770 SHA256 9f28ccd0477f9b944da1aa68615316746bda16974dfeee4b54831151e87c5bb6 SHA512 f84819c9ac53bd3d6226c490f18d27aa1b4f6c24476d338ae02b3fc4628a5d6ba295ef506a0ba9e6f1039b608d95a014ea27779aeb00417f55e82dc0ffa39c4c WHIRLPOOL 66af012bf54cb95287b79001f730b6c2d7b1034d460bf8d36484ece498463c17e14968e26202d06b4f1c9d899b2a0f507f50560c079b3c171078a6b730936cb7 +MISC metadata.xml 2530 SHA256 5cb25b11c6a110c0b1fe430a58f355760817d5616ee2f1e54165f4df787c60f4 SHA512 b650af6aa25ee064d81d3db5cc066d634eaf8c8ccdf8e1352d449f0579b0a310026be2ff873999767c5b82c25a76c138af722220892794b9c615ce477335a93b WHIRLPOOL 8e259e49d552aa40dce3f8df33900dfef3d6b509fd8e6158cc92c766d3be7311526e563fb51ea042ee3505326db7f3a4b7cd92bae515d13fc3033c6f8dc63ce9 diff --git a/media-video/mplayer/files/dump_ffmpeg.sh b/media-video/mplayer/files/dump_ffmpeg.sh new file mode 100644 index 000000000000..885946df8cc7 --- /dev/null +++ b/media-video/mplayer/files/dump_ffmpeg.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +FFMPEG_DIR=ffmpeg +FFMPEG_MOVED_DIR=ffmpeg_removed +SYSTEM_FFMPEG_DIR=${EPREFIX}/usr/include + +# Move directories + +[ -d "${FFMPEG_DIR}" ] && mv "${FFMPEG_DIR}" "${FFMPEG_MOVED_DIR}" +[ -d "${FFMPEG_MOVED_DIR}" ] || exit 1 +[ -d "${FFMPEG_DIR}" ] || mkdir "${FFMPEG_DIR}" + +# Keep required files and check them + +SANITIZED_REGEXP='^\#[[:space:]]*include.*\".*[.]h\"' +sanitize_includes() { + sed -e "s/^\#[[:space:]]*include.*\"config[.]h\"/#include <config.h>/" \ + -e "s/^\#[[:space:]]*include.*\"\(libav.*\/.*[.]h\)\"/#include \<\1\>/" \ + -e "/${SANITIZED_REGEXP}/{s:\"\(.*\)\":\<${2}\/\1\>:}" ${1} +} + +check_sanitized_includes() { + grep -q "${SANITIZED_REGEXP}" $1 +} + +get_header_deps() { + grep "^#[[:space:]]*include.*\<libav.*[.]h\>" ${1} | \ + sed -e "s/^#[[:space:]]*include.*\<\(libav.*[.]h\)\>/\1/" | \ + tr -d '<>' | tr '\n' ' ' +} + +check_header_deps() { + for i ; do + printf "Checking for the presence of ${i}...\n" + if [ ! -f "${SYSTEM_FFMPEG_DIR}/${i}" -a ! -f "${FFMPEG_DIR}/${i}" ] ; then + printf "Header depends on ${i}\n" + printf "... but that file cannot be found, aborting\n" + exit 1 + fi + done +} + +move_file() { + mydir="$(dirname $1)" + printf "Moving and checking file: ${1}\n" + [ -d "${FFMPEG_DIR}/${mydir}" ] || mkdir -p "${FFMPEG_DIR}/${mydir}" + if [ ! -f "${FFMPEG_DIR}/${1}" ] ; then + sanitize_includes "${FFMPEG_MOVED_DIR}/${1}" ${mydir} > "${FFMPEG_DIR}/${1}" + fi + if $(check_sanitized_includes "${FFMPEG_DIR}/${1}") ; then + printf "Error, found non sanitized file in ffmpeg:\n" + printf "${FFMPEG_DIR}/${1}\n" + printf "Please report it at bugs.gentoo.org\n" + exit 1 + fi + if [ "${1%.h}" != "${1}" ] ; then + mydeps=$(get_header_deps "${FFMPEG_DIR}/${1}") + check_header_deps ${mydeps} + fi +} + +# HEADERS (order matters for the consistency checks: leaves come first) +FILES="libavutil/wchar_filename.h libavformat/os_support.h libavformat/internal.h libavutil/x86/asm.h" +# Files that are sed'ed but not compiled, used to check for availability of +# some codecs +FILES="${FILES} libavcodec/allcodecs.c libavformat/allformats.c libavfilter/allfilters.c" + +for i in ${FILES} ; do + move_file $i +done + +rm -rf "${FFMPEG_MOVED_DIR}" + +exit 0 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 index 000000000000..3329b9803603 --- /dev/null +++ b/media-video/mplayer/files/mplayer-1.2-get_buffer.patch @@ -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/files/mplayer-1.2_pre20150730-chan.patch b/media-video/mplayer/files/mplayer-1.2_pre20150730-chan.patch new file mode 100644 index 000000000000..a448d0849458 --- /dev/null +++ b/media-video/mplayer/files/mplayer-1.2_pre20150730-chan.patch @@ -0,0 +1,25 @@ +r37447 | rtogni | 2015-08-14 21:30:34 +0200 (Fri, 14 Aug 2015) | 3 lines + +Replace deprecated avctx->request_channels with request_channel_layout + +Index: libmpcodecs/ad_ffmpeg.c +=================================================================== +--- libmpcodecs/ad_ffmpeg.c (revision 37446) ++++ libmpcodecs/ad_ffmpeg.c (revision 37447) +@@ -46,6 +46,7 @@ + + #include "libavcodec/avcodec.h" + #include "libavutil/dict.h" ++#include "libavutil/channel_layout.h" + + struct adctx { + int last_samplerate; +@@ -127,7 +128,7 @@ + lavc_context->bits_per_coded_sample = sh_audio->wf->wBitsPerSample; + } + lavc_context->channel_layout = sh_audio->channel_layout; +- lavc_context->request_channels = audio_output_channels; ++ lavc_context->request_channel_layout = av_get_default_channel_layout(audio_output_channels); + lavc_context->codec_tag = sh_audio->format; //FOURCC + lavc_context->codec_id = lavc_codec->id; // not sure if required, imho not --A'rpi + diff --git a/media-video/mplayer/files/mplayer-1.2_pre20150730-encode.patch b/media-video/mplayer/files/mplayer-1.2_pre20150730-encode.patch new file mode 100644 index 000000000000..06a33f832f07 --- /dev/null +++ b/media-video/mplayer/files/mplayer-1.2_pre20150730-encode.patch @@ -0,0 +1,82 @@ +r37453 | rtogni | 2015-08-23 22:32:50 +0200 (Sun, 23 Aug 2015) | 3 lines + +Replace deprecated av_encode_video() with av_encode_video2() + +Index: libmpcodecs/vf_uspp.c +=================================================================== +--- libmpcodecs/vf_uspp.c (revision 37452) ++++ libmpcodecs/vf_uspp.c (revision 37453) +@@ -177,11 +177,16 @@ + const int x1= offset[i+count-1][0]; + const int y1= offset[i+count-1][1]; + int offset; ++ AVPacket pkt; ++ int ret, got_pkt; + p->frame->data[0]= p->src[0] + x1 + y1 * p->frame->linesize[0]; + p->frame->data[1]= p->src[1] + x1/2 + y1/2 * p->frame->linesize[1]; + p->frame->data[2]= p->src[2] + x1/2 + y1/2 * p->frame->linesize[2]; + +- avcodec_encode_video(p->avctx_enc[i], p->outbuf, p->outbuf_size, p->frame); ++ av_init_packet(&pkt); ++ pkt.data = p->outbuf; ++ pkt.size = p->outbuf_size; ++ avcodec_encode_video2(p->avctx_enc[i], &pkt, p->frame, &got_pkt); + p->frame_dec = p->avctx_enc[i]->coded_frame; + + offset= (BLOCK-x1) + (BLOCK-y1)*p->frame_dec->linesize[0]; +Index: libmpcodecs/vf_lavc.c +=================================================================== +--- libmpcodecs/vf_lavc.c (revision 37452) ++++ libmpcodecs/vf_lavc.c (revision 37453) +@@ -86,6 +86,8 @@ + mp_image_t* dmpi; + int out_size; + AVFrame *pic= vf->priv->pic; ++ int ret, got_pkt; ++ AVPacket pkt; + + pic->data[0]=mpi->planes[0]; + pic->data[1]=mpi->planes[1]; +@@ -94,10 +96,14 @@ + pic->linesize[1]=mpi->stride[1]; + pic->linesize[2]=mpi->stride[2]; + +- out_size = avcodec_encode_video(&lavc_venc_context, +- vf->priv->outbuf, vf->priv->outbuf_size, pic); ++ av_init_packet(&pkt); ++ pkt.data = vf->priv->outbuf; ++ pkt.size = vf->priv->outbuf_size; ++ ret = avcodec_encode_video2(&lavc_venc_context, &pkt, pic, &got_pkt); + +- if(out_size<=0) return 1; ++ if(ret<=0) return 1; ++ if(!got_pkt) return 1; ++ out_size = pkt.size; + + dmpi=vf_get_image(vf->next,IMGFMT_MPEGPES, + MP_IMGTYPE_EXPORT, 0, +Index: libmpcodecs/vf_mcdeint.c +=================================================================== +--- libmpcodecs/vf_mcdeint.c (revision 37452) ++++ libmpcodecs/vf_mcdeint.c (revision 37453) +@@ -92,6 +92,8 @@ + + static void filter(struct vf_priv_s *p, uint8_t *dst[3], uint8_t *src[3], int dst_stride[3], int src_stride[3], int width, int height){ + int x, y, i; ++ int got_pkt; ++ AVPacket pkt; + + for(i=0; i<3; i++){ + p->frame->data[i]= src[i]; +@@ -101,7 +103,10 @@ + p->avctx_enc->me_cmp= + p->avctx_enc->me_sub_cmp= FF_CMP_SAD /*| (p->parity ? FF_CMP_ODD : FF_CMP_EVEN)*/; + p->frame->quality= p->qp*FF_QP2LAMBDA; +- avcodec_encode_video(p->avctx_enc, p->outbuf, p->outbuf_size, p->frame); ++ av_init_packet(&pkt); ++ pkt.data = p->outbuf; ++ pkt.size = p->outbuf_size; ++ avcodec_encode_video2(p->avctx_enc, &pkt, p->frame, &got_pkt); + p->frame_dec = p->avctx_enc->coded_frame; + + for(i=0; i<3; i++){ diff --git a/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch b/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch new file mode 100644 index 000000000000..4eabf8b5f28c --- /dev/null +++ b/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch @@ -0,0 +1,24 @@ +https://trac.mplayerhq.hu/ticket/2295 + +r37857 + +--- old/libmpdemux/demux_gif.c ++++ new/libmpdemux/demux_gif.c +@@ -304,6 +304,17 @@ + return NULL; + } + ++ // Validate image size, most code in this demuxer assumes w*h <= INT_MAX ++ if ((int64_t)gif->SWidth * gif->SHeight > INT_MAX) { ++ mp_msg(MSGT_DEMUX, MSGL_ERR, ++ "[demux_gif] Unsupported picture size %dx%d.\n", gif->SWidth, ++ gif->SHeight); ++ if (DGifCloseFile(gif) == GIF_ERROR) ++ print_gif_error(NULL); ++ free(priv); ++ return NULL; ++ } ++ + // create a new video stream header + sh_video = new_sh_video(demuxer, 0); + diff --git a/media-video/mplayer/files/prepare_mplayer.sh b/media-video/mplayer/files/prepare_mplayer.sh new file mode 100644 index 000000000000..57d47425689f --- /dev/null +++ b/media-video/mplayer/files/prepare_mplayer.sh @@ -0,0 +1,25 @@ +#!/bin/sh +VERSION=$(date +%Y%m%d) +PACKAGE="mplayer-1.2_pre${VERSION}" +DUMP_FFMPEG="$(dirname $0)/dump_ffmpeg.sh" + +svn checkout svn://svn.mplayerhq.hu/mplayer/trunk ${PACKAGE} + +pushd ${PACKAGE} > /dev/null + # ffmpeg is in git now so no svn external anymore + rm -rf ffmpeg + git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg/ + sh "$DUMP_FFMPEG" + STORE_VERSION=$(LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2) + printf "$STORE_VERSION" > snapshot_version +popd > /dev/null + +find "${PACKAGE}" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf +find "${PACKAGE}" -type d -name '.git' -prune -print0 | xargs -0 rm -rf + +tar cJf ${PACKAGE}.tar.xz ${PACKAGE} +rm -rf ${PACKAGE}/ + +echo "Tarball: \"${PACKAGE}.tar.xz\"" + +echo "** all done **" diff --git a/media-video/mplayer/metadata.xml b/media-video/mplayer/metadata.xml new file mode 100644 index 000000000000..d6c05ce054c6 --- /dev/null +++ b/media-video/mplayer/metadata.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>media-video@gentoo.org</email> + </maintainer> + <use> + <flag name="bl">Blinkenlights video output</flag> + <flag name="bluray">Enable playback of Blu-ray filesystems</flag> + <flag name="bs2b">Enable Bauer stereophonic-to-binaural headphone filter</flag> + <flag name="cdio">Use libcdio for CD support (instead of cdparanoia)</flag> + <flag name="cpudetection">Enables runtime CPU detection (useful for binpkgs, compatibility on other CPUs)</flag> + <flag name="dvdnav">Use forked libdvdnav, navigate menus in GUIs</flag> + <flag name="enca">Enables support for charset discovery and conversion</flag> + <flag name="faac">Use external faac library for AAC encoding</flag> + <flag name="faad">Use external faad library for AAC decoding</flag> + <flag name="libmpeg2">Build support for mpeg2 over media-libs/libmpeg2 rather than using ffmpeg.</flag> + <flag name="live">Enables live.com streaming media support</flag> + <flag name="md5sum">Enables md5sum video output</flag> + <flag name="mng">MNG input support</flag> + <flag name="network">Enables network streaming support</flag> + <flag name="nut">Enables support for the NUT container format</flag> + <flag name="osdmenu">Enables support for on-screen display (OSD) menus</flag> + <flag name="pnm">Add PNM video output option, to create PPM/PGM/PGMYUV images</flag> + <flag name="pvr">Enable Video4Linux2 MPEG PVR</flag> + <flag name="radio">Enable V4L2 radio interface and support</flag> + <flag name="rar">Enable Unique RAR File Library</flag> + <flag name="rtc">Enables usage of the linux real time clock. The alternative is software emulation of rtc</flag> + <flag name="rtmp">Enables RTMPDump Streaming Media support</flag> + <flag name="shm">Enable support for shm</flag> + <flag name="tga">Enables Targa video output</flag> + <flag name="toolame">Enable toolame MPEG-2 encoding</flag> + <flag name="tremor">Enable internal support for Vorbis</flag> + <flag name="twolame">Enable twolame MPEG-2 encoding</flag> + <flag name="vcd">Enables VCD support</flag> + <flag name="vidix">Support for vidix video output</flag> + <flag name="xvmc">Enables X-Video Motion Compensation support</flag> + <flag name="yuv4mpeg">Enables yuv4mpeg video output</flag> + <flag name="zoran">Enables ZR360[56]7/ZR36060 video output</flag> + </use> +</pkgmetadata> diff --git a/media-video/mplayer/mplayer-1.2.1-r1.ebuild b/media-video/mplayer/mplayer-1.2.1-r1.ebuild new file mode 100644 index 000000000000..da0d2b6068cb --- /dev/null +++ b/media-video/mplayer/mplayer-1.2.1-r1.ebuild @@ -0,0 +1,632 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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 vcd vdpau vidix +vorbis +X x264 xinerama +xscreensaver +xv xvid xvmc yuv4mpeg 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 dev-libs/libcdio-paranoia ) + 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:0= ) + gsm? ( media-sound/gsm ) + iconv? ( virtual/libiconv ) + jack? ( virtual/jack ) + jpeg? ( virtual/jpeg:0 ) + jpeg2k? ( media-libs/openjpeg:0 ) + ladspa? ( media-libs/ladspa-sdk ) + libass? ( >=media-libs/libass-0.9.10:= ) + 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} ) + 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 ia64 ppc ppc64 sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris" +else + KEYWORDS="alpha arm hppa ia64 ppc ppc64 sparc" +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 )" + +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 vcd" # 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" + 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 yuv4mpeg" + 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" +} diff --git a/media-video/mplayer/mplayer-1.3.0-r2.ebuild b/media-video/mplayer/mplayer-1.3.0-r2.ebuild new file mode 100644 index 000000000000..d6bfb7e6ba2d --- /dev/null +++ b/media-video/mplayer/mplayer-1.3.0-r2.ebuild @@ -0,0 +1,626 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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 vcd vdpau vidix +vorbis +X x264 xinerama +xscreensaver +xv xvid xvmc yuv4mpeg 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-3.0: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:0= dev-libs/libcdio-paranoia ) + 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:0= ) + gsm? ( media-sound/gsm ) + iconv? ( virtual/libiconv ) + jack? ( virtual/jack ) + jpeg? ( virtual/jpeg:0 ) + jpeg2k? ( media-libs/openjpeg:0 ) + ladspa? ( media-libs/ladspa-sdk ) + libass? ( >=media-libs/libass-0.9.10:= ) + 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} ) + 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 ~ia64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris" +else + KEYWORDS="~alpha ~arm ~hppa ~ia64" +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 )" + +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 +} + +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 vcd" # 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" + 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 yuv4mpeg" + 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" +} diff --git a/media-video/mplayer/mplayer-1.3.0-r3.ebuild b/media-video/mplayer/mplayer-1.3.0-r3.ebuild new file mode 100644 index 000000000000..68459860f46a --- /dev/null +++ b/media-video/mplayer/mplayer-1.3.0-r3.ebuild @@ -0,0 +1,628 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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 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 vcd vdpau vidix +vorbis +X x264 xinerama +xscreensaver +xv xvid xvmc yuv4mpeg 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-3.0: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:0= dev-libs/libcdio-paranoia ) + 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:0= ) + gsm? ( media-sound/gsm ) + iconv? ( virtual/libiconv ) + jack? ( virtual/jack ) + jpeg? ( virtual/jpeg:0 ) + ladspa? ( media-libs/ladspa-sdk ) + libass? ( >=media-libs/libass-0.9.10:= ) + 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} ) + 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 ~ia64 ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris" +else + KEYWORDS="~alpha ~arm ~hppa ~ia64 ~ppc ~ppc64" +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 )" + +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 + else + epatch "${FILESDIR}"/${PN}-1.3-CVE-2016-4352.patch + 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 +} + +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 vcd" # 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" + for i in ${uses}; do + use ${i} || myconf+=" --disable-${i}" + done + # Pulls an outdated libopenjpeg, ffmpeg provides better support for it + 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 yuv4mpeg" + 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" +} diff --git a/media-video/mplayer/mplayer-9999.ebuild b/media-video/mplayer/mplayer-9999.ebuild new file mode 100644 index 000000000000..61554438bfc0 --- /dev/null +++ b/media-video/mplayer/mplayer-9999.ebuild @@ -0,0 +1,626 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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 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 vcd vdpau vidix +vorbis +X x264 xinerama +xscreensaver +xv xvid xvmc yuv4mpeg 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-3.0: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:0= dev-libs/libcdio-paranoia ) + 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:0= ) + gsm? ( media-sound/gsm ) + iconv? ( virtual/libiconv ) + jack? ( virtual/jack ) + jpeg? ( virtual/jpeg:0 ) + ladspa? ( media-libs/ladspa-sdk ) + libass? ( >=media-libs/libass-0.9.10:= ) + 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} ) + 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 ~ia64 ~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 )" + +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 +} + +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 vcd" # 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" + for i in ${uses}; do + use ${i} || myconf+=" --disable-${i}" + done + # Pulls an outdated libopenjpeg, ffmpeg provides better support for it + 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 yuv4mpeg" + 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" +} |