Date: Wednesday, July 31, 2013 @ 14:35:13 Author: bpiotrowski Revision: 94857
upgpkg: mplayer2 20130428-4 - re-enable gif support Added: mplayer2/trunk/giflib-5.0.patch Modified: mplayer2/trunk/PKGBUILD Deleted: mplayer2/trunk/0001-demux_gif-declare-missing-PrintGifError.patch ----------------------------------------------------+ 0001-demux_gif-declare-missing-PrintGifError.patch | 34 ----- PKGBUILD | 11 + giflib-5.0.patch | 111 +++++++++++++++++++ 3 files changed, 117 insertions(+), 39 deletions(-) Deleted: 0001-demux_gif-declare-missing-PrintGifError.patch =================================================================== --- 0001-demux_gif-declare-missing-PrintGifError.patch 2013-07-31 10:33:01 UTC (rev 94856) +++ 0001-demux_gif-declare-missing-PrintGifError.patch 2013-07-31 12:35:13 UTC (rev 94857) @@ -1,34 +0,0 @@ -From 5194f95d39ffbb0a4a7b027d8f1b084436feb22c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Bart=C5=82omiej=20Piotrowski?= <b...@bpiotrowski.pl> -Date: Sun, 14 Jul 2013 10:51:11 +0200 -Subject: [PATCH] demux_gif: declare missing PrintGifError - -Apparently it has been removed from newer Giflib releases. ---- - libmpdemux/demux_gif.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/libmpdemux/demux_gif.c b/libmpdemux/demux_gif.c -index eee7a85..3d761c0 100644 ---- a/libmpdemux/demux_gif.c -+++ b/libmpdemux/demux_gif.c -@@ -44,6 +44,16 @@ typedef struct { - - #define GIF_SIGNATURE (('G' << 16) | ('I' << 8) | 'F') - -+static void PrintGifError(void) -+{ -+ char *Err = GifErrorString(); -+ -+ if (Err != NULL) -+ fprintf(stderr, "\nGIF-LIB error: %s.\n", Err); -+ else -+ fprintf(stderr, "\nGIF-LIB undefined error %d.\n", GifError()); -+} -+ - #ifndef CONFIG_GIF_TVT_HACK - // not supported by certain versions of the library - static int my_read_gif(GifFileType *gif, uint8_t *buf, int len) --- -1.8.3.2 - Modified: PKGBUILD =================================================================== --- PKGBUILD 2013-07-31 10:33:01 UTC (rev 94856) +++ PKGBUILD 2013-07-31 12:35:13 UTC (rev 94857) @@ -5,7 +5,7 @@ pkgname=mplayer2 pkgver=20130428 -pkgrel=3 +pkgrel=4 pkgdesc='Advanced general-purpose media player. A fork of the original MPlayer project' arch=('i686' 'x86_64') license=('GPL') @@ -16,16 +16,16 @@ 'libcaca' 'libcdio-paranoia' 'libdca' 'libdvdcss' 'libdvdnav' 'libdvdread' 'libgl' 'libjpeg' 'libmad' 'libpulse' 'libquvi' 'libtheora' 'libvdpau' 'libxinerama' 'libxss' 'libxv' 'libxxf86dga' 'libxxf86vm' 'lirc-utils' - 'mpg123' 'ncurses' 'sdl' 'ttf-dejavu') + 'mpg123' 'ncurses' 'sdl' 'ttf-dejavu' 'giflib') makedepends=('mesa' 'mesa-libgl' 'unzip' 'yasm' 'python' 'python-docutils' 'git') backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf') provides=('mplayer') conflicts=('mplayer') options=(!emptydirs) source=(git://git.mplayer2.org/mplayer2.git#commit=6c87a981baa - 0001-demux_gif-declare-missing-PrintGifError.patch) + giflib-5.0.patch) sha256sums=('SKIP' - 'f5442289fee5eaf3c86c28cc5cbf2af8e85c6ccfdc9c2a73c71aa22efb7cdf09') + '20706ebb35e7c1935ae263c48d623a878db3b634ca575927913f56d9ce059c7a') pkgver() { cd $pkgname @@ -36,7 +36,7 @@ cd $pkgname sed 's/gmplayer/mplayer/g' -i etc/mplayer.desktop find -type f -exec sed -e 's/python3/python/' -i {} \; - patch -Np1 -i ../0001-demux_gif-declare-missing-PrintGifError.patch + patch -Np1 -i ../giflib-5.0.patch } build() { @@ -46,6 +46,7 @@ --enable-translation --language=all \ --enable-runtime-cpudetection \ --enable-joystick \ + --enable-gif \ --disable-speex \ --disable-openal \ --disable-libdv \ Added: giflib-5.0.patch =================================================================== --- giflib-5.0.patch (rev 0) +++ giflib-5.0.patch 2013-07-31 12:35:13 UTC (rev 94857) @@ -0,0 +1,111 @@ +diff --git a/libvo/vo_gif89a.c b/libvo/vo_gif89a.c +index b808f81..c61d86c 100644 +--- a/libvo/vo_gif89a.c ++++ b/libvo/vo_gif89a.c +@@ -196,7 +196,11 @@ static int config(uint32_t s_width, uint32_t s_height, uint32_t d_width, + mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: Some functionality has been disabled.\n"); + #endif + ++#if GIFLIB_MAJOR > 4 ++ new_gif = EGifOpenFileName(gif_filename, 0, NULL); ++#else + new_gif = EGifOpenFileName(gif_filename, 0); ++#endif + if (new_gif == NULL) { + mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: error opening file \"%s\" for output.\n", gif_filename); + return 1; +@@ -215,7 +219,11 @@ static int config(uint32_t s_width, uint32_t s_height, uint32_t d_width, + return 1; + } + ++#if GIFLIB_MAJOR > 4 ++ reduce_cmap = GifMakeMapObject(256, NULL); ++#else + reduce_cmap = MakeMapObject(256, NULL); ++#endif + if (reduce_cmap == NULL) { + free(slice_data); slice_data = NULL; + free(reduce_data); reduce_data = NULL; +@@ -267,7 +275,11 @@ static int gif_reduce(int width, int height, uint8_t *src, uint8_t *dst, GifColo + } + + R = Ra; G = Ga; B = Ba; ++#if GIFLIB_MAJOR > 4 ++ return GifQuantizeBuffer(width, height, &size, R, G, B, dst, colors); ++#else + return QuantizeBuffer(width, height, &size, R, G, B, dst, colors); ++#endif + } + + static void flip_page(void) +@@ -365,8 +377,11 @@ static void uninit(void) + free(gif_filename); + free(slice_data); + free(reduce_data); ++#if GIFLIB_MAJOR > 4 ++ if (reduce_cmap != NULL) GifFreeMapObject(reduce_cmap); ++#else + if (reduce_cmap != NULL) FreeMapObject(reduce_cmap); +- ++#endif + // set the pointers back to null. + new_gif = NULL; + gif_filename = NULL; + +diff --git a/configure b/configure +index 95a5ae8..d9c826f 100755 +--- a/configure ++++ b/configure +@@ -3659,6 +3659,7 @@ if test "$_gif" = auto ; then + _gif=no + for _ld_gif in "-lungif" "-lgif" ; do + statement_check gif_lib.h 'QuantizeBuffer(0, 0, 0, 0, 0, 0, 0, 0)' $_ld_gif && _gif=yes && break ++ statement_check gif_lib.h 'GifQuantizeBuffer(0, 0, 0, 0, 0, 0, 0, 0)' $_ld_gif && _gif=yes && break + done + fi + +diff --git a/libmpdemux/demux_gif.c b/libmpdemux/demux_gif.c +index eee7a85..a764474 100644 +--- a/libmpdemux/demux_gif.c ++++ b/libmpdemux/demux_gif.c +@@ -44,6 +44,16 @@ typedef struct { + + #define GIF_SIGNATURE (('G' << 16) | ('I' << 8) | 'F') + ++static void PrintGifError(errcode) ++{ ++ char *Err = GifErrorString(errcode); ++ ++ if (Err != NULL) ++ fprintf(stderr, "\nGIF-LIB error: %s.\n", Err); ++ else ++ fprintf(stderr, "\nGIF-LIB undefined error %d.\n", errcode); ++} ++ + #ifndef CONFIG_GIF_TVT_HACK + // not supported by certain versions of the library + static int my_read_gif(GifFileType *gif, uint8_t *buf, int len) +@@ -240,6 +250,7 @@ static demuxer_t* demux_open_gif(demuxer_t* demuxer) + gif_priv_t *priv = calloc(1, sizeof(gif_priv_t)); + sh_video_t *sh_video = NULL; + GifFileType *gif = NULL; ++ int GifError; + + priv->current_pts = 0; + demuxer->seekable = 0; // FIXME +@@ -254,12 +265,12 @@ static demuxer_t* demux_open_gif(demuxer_t* demuxer) + // not read from the beginning of the file and the command will fail. + // with this hack enabled, you will lose the ability to stream a GIF. + lseek(demuxer->stream->fd, 0, SEEK_SET); +- gif = DGifOpenFileHandle(demuxer->stream->fd); ++ gif = DGifOpenFileHandle(demuxer->stream->fd, &GifError); + #else +- gif = DGifOpen(demuxer->stream, my_read_gif); ++ gif = DGifOpen(demuxer->stream, my_read_gif, &GifError); + #endif + if (!gif) { +- PrintGifError(); ++ PrintGifError(GifError); + free(priv); + return NULL; + }