parent
ed4522bb25
commit
ad5832082a
@ -1,12 +0,0 @@
|
||||
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.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.3.0-r1.ebuild 17253 SHA256 36bf0b3ff878c64a3473b1211df362cf84c8f0d27037d399ea09b966454ccc53 SHA512 4996160be01c32b477e9db3ae5a23162c7dedb860fb8981633f262dcd36f59027519bc8e92d7130f8fd03d57b6e1d2936809d699d0a0b6e59ee24446291b068c WHIRLPOOL 95c3600982a5438025a07776c8029d494c534a6be6ac722031cbaa033c422a8864dd0058ba5c4b324892bafb98b22a846aa1114ca0dfce3de15e2da161912d40
|
||||
MISC metadata.xml 2530 SHA256 5cb25b11c6a110c0b1fe430a58f355760817d5616ee2f1e54165f4df787c60f4 SHA512 b650af6aa25ee064d81d3db5cc066d634eaf8c8ccdf8e1352d449f0579b0a310026be2ff873999767c5b82c25a76c138af722220892794b9c615ce477335a93b WHIRLPOOL 8e259e49d552aa40dce3f8df33900dfef3d6b509fd8e6158cc92c766d3be7311526e563fb51ea042ee3505326db7f3a4b7cd92bae515d13fc3033c6f8dc63ce9
|
@ -1,74 +0,0 @@
|
||||
#!/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
|
@ -1,327 +0,0 @@
|
||||
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;
|
||||
+}
|
@ -1,25 +0,0 @@
|
||||
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
|
||||
|
@ -1,82 +0,0 @@
|
||||
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++){
|
@ -1,24 +0,0 @@
|
||||
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);
|
||||
|
@ -1,25 +0,0 @@
|
||||
#!/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 **"
|
@ -1,41 +0,0 @@
|
||||
<?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>
|
@ -1,628 +0,0 @@
|
||||
# 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
|
||||
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
|
||||
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"
|
||||
}
|
Loading…
Reference in new issue