From owner-svn-ports-branches@freebsd.org Sat Aug 29 22:07:26 2015 Return-Path: Delivered-To: svn-ports-branches@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D5D6A9C4FAC; Sat, 29 Aug 2015 22:07:26 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C58E733C; Sat, 29 Aug 2015 22:07:26 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7TM7QEg043582; Sat, 29 Aug 2015 22:07:26 GMT (envelope-from jbeich@FreeBSD.org) Received: (from jbeich@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7TM7QjT043579; Sat, 29 Aug 2015 22:07:26 GMT (envelope-from jbeich@FreeBSD.org) Message-Id: <201508292207.t7TM7QjT043579@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jbeich set sender to jbeich@FreeBSD.org using -f From: Jan Beich Date: Sat, 29 Aug 2015 22:07:26 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r395576 - in branches/2015Q3/multimedia/mplayer2: . files X-SVN-Group: ports-branches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-branches@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the branches of the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 Aug 2015 22:07:27 -0000 Author: jbeich Date: Sat Aug 29 22:07:25 2015 New Revision: 395576 URL: https://svnweb.freebsd.org/changeset/ports/395576 Log: MFH: r395460 multimedia/mplayer2: make GIF=on actually work GIF option was both auto-disabled during configure and broken when forced to be enabled. So, bump PORTREVISION to restore GIF support for users with GIF=on. PR: 202404 Submitted by: Carlos J Puga Medina (maintainer) Approved by: ports-secteam (delphij) Added: branches/2015Q3/multimedia/mplayer2/files/patch-libvo_vo_gif89a.c - copied unchanged from r395460, head/multimedia/mplayer2/files/patch-libvo_vo_gif89a.c Modified: branches/2015Q3/multimedia/mplayer2/Makefile branches/2015Q3/multimedia/mplayer2/files/patch-libmpdemux-demux_gif.c Directory Properties: branches/2015Q3/ (props changed) Modified: branches/2015Q3/multimedia/mplayer2/Makefile ============================================================================== --- branches/2015Q3/multimedia/mplayer2/Makefile Sat Aug 29 21:58:27 2015 (r395575) +++ branches/2015Q3/multimedia/mplayer2/Makefile Sat Aug 29 22:07:25 2015 (r395576) @@ -2,7 +2,7 @@ PORTNAME= mplayer2 PORTVERSION= ${MPLAYER2_PORT_VERSION} -PORTREVISION= 14 +PORTREVISION= 15 CATEGORIES= multimedia audio MASTER_SITES= LOCAL/gblach/ @@ -93,6 +93,7 @@ CONFIGURE_ARGS+= --disable-inet6 .if ${PORT_OPTIONS:MGIF} LIB_DEPENDS+= libgif.so:${PORTSDIR}/graphics/giflib +CONFIGURE_ARGS+= --enable-gif .else CONFIGURE_ARGS+= --disable-gif .endif Modified: branches/2015Q3/multimedia/mplayer2/files/patch-libmpdemux-demux_gif.c ============================================================================== --- branches/2015Q3/multimedia/mplayer2/files/patch-libmpdemux-demux_gif.c Sat Aug 29 21:58:27 2015 (r395575) +++ branches/2015Q3/multimedia/mplayer2/files/patch-libmpdemux-demux_gif.c Sat Aug 29 22:07:25 2015 (r395576) @@ -1,19 +1,86 @@ ---- libmpdemux/demux_gif.c.orig 2012-12-31 00:26:50.000000000 +0100 -+++ libmpdemux/demux_gif.c 2012-12-31 00:30:54.000000000 +0100 -@@ -44,6 +44,16 @@ +--- libmpdemux/demux_gif.c.orig 2013-07-09 16:33:16 UTC ++++ libmpdemux/demux_gif.c +@@ -93,14 +93,14 @@ static int demux_gif_fill_buffer(demuxer - #define GIF_SIGNATURE (('G' << 16) | ('I' << 8) | 'F') + while (type != IMAGE_DESC_RECORD_TYPE) { + if (DGifGetRecordType(gif, &type) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + return 0; // oops + } + if (type == TERMINATE_RECORD_TYPE) + return 0; // eof + if (type == SCREEN_DESC_RECORD_TYPE) { + if (DGifGetScreenDesc(gif) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + return 0; // oops + } + } +@@ -108,7 +108,7 @@ static int demux_gif_fill_buffer(demuxer + int code; + unsigned char *p = NULL; + if (DGifGetExtension(gif, &code, &p) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + return 0; // oops + } + if (code == 0xF9) { +@@ -137,7 +137,7 @@ static int demux_gif_fill_buffer(demuxer + comments[length] = 0; + printf("%s", comments); + if (DGifGetExtensionNext(gif, &p) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + return 0; // oops + } + } +@@ -145,7 +145,7 @@ static int demux_gif_fill_buffer(demuxer + } + while (p != NULL) { + if (DGifGetExtensionNext(gif, &p) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + return 0; // oops + } + } +@@ -153,7 +153,7 @@ static int demux_gif_fill_buffer(demuxer + } -+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) + if (DGifGetImageDesc(gif) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + return 0; // oops + } + +@@ -166,7 +166,7 @@ static int demux_gif_fill_buffer(demuxer + memset(dp->buffer, gif->SBackGroundColor, priv->w * priv->h); + + if (DGifGetLine(gif, buf, len) == GIF_ERROR) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + free(buf); + return 0; // oops + } +@@ -256,10 +256,10 @@ static demuxer_t* demux_open_gif(demuxer + lseek(demuxer->stream->fd, 0, SEEK_SET); + gif = DGifOpenFileHandle(demuxer->stream->fd); + #else +- gif = DGifOpen(demuxer->stream, my_read_gif); ++ gif = DGifOpen(demuxer->stream, my_read_gif, NULL); + #endif + if (!gif) { +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + free(priv); + return NULL; + } +@@ -301,7 +301,7 @@ static void demux_close_gif(demuxer_t* d + gif_priv_t *priv = demuxer->priv; + if (!priv) return; + if (priv->gif && DGifCloseFile(priv->gif) == GIF_ERROR) +- PrintGifError(); ++ printf("%s\n", GifErrorString(GIF_ERROR)); + free(priv->refimg); + free(priv); + } Copied: branches/2015Q3/multimedia/mplayer2/files/patch-libvo_vo_gif89a.c (from r395460, head/multimedia/mplayer2/files/patch-libvo_vo_gif89a.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2015Q3/multimedia/mplayer2/files/patch-libvo_vo_gif89a.c Sat Aug 29 22:07:25 2015 (r395576, copy of r395460, head/multimedia/mplayer2/files/patch-libvo_vo_gif89a.c) @@ -0,0 +1,117 @@ +--- libvo/vo_gif89a.c.orig 2013-07-09 16:33:16 UTC ++++ libvo/vo_gif89a.c +@@ -44,13 +44,13 @@ + * entire argument being interpretted as the filename. + */ + +-#include +- + #include + #include + #include + #include + ++#include ++ + #include "config.h" + #include "subopt-helper.h" + #include "video_out.h" +@@ -69,6 +69,15 @@ static const vo_info_t info = { + + const LIBVO_EXTERN(gif89a) + ++#if defined GIFLIB_MAJOR && GIFLIB_MAJOR >= 5 ++#define EGifOpenFileName(a, b) EGifOpenFileName(a, b, NULL) ++#define MakeMapObject GifMakeMapObject ++#define FreeMapObject GifFreeMapObject ++#define QuantizeBuffer GifQuantizeBuffer ++#if defined GIFLIB_MINOR && GIFLIB_MINOR >= 1 ++#define EGifCloseFile(a) EGifCloseFile(a, NULL) ++#endif ++#endif + + // how many frames per second we are aiming for during output. + static float target_fps; +@@ -92,6 +101,8 @@ static uint32_t img_width; + static uint32_t img_height; + // image data for slice rendering + static uint8_t *slice_data = NULL; ++// pointer for whole frame rendering ++static uint8_t *frame_data = NULL; + // reduced image data for flip_page + static uint8_t *reduce_data = NULL; + // reduced color map for flip_page +@@ -156,7 +167,7 @@ static int config(uint32_t s_width, uint + uint32_t d_height, uint32_t flags, char *title, + uint32_t format) + { +-#ifdef CONFIG_GIF_4 ++#if defined CONFIG_GIF_4 || GIFLIB_MAJOR >= 5 + // these are control blocks for the gif looping extension. + char LB1[] = "NETSCAPE2.0"; + char LB2[] = { 1, 0, 0 }; +@@ -185,23 +196,25 @@ static int config(uint32_t s_width, uint + return 1; + } + ++ new_gif = EGifOpenFileName(gif_filename, 0); ++ if (new_gif == NULL) { ++ mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: error opening file \"%s\" for output.\n", gif_filename); ++ return 1; ++ } ++ ++#if defined GIFLIB_MAJOR && GIFLIB_MAJOR >= 5 ++ EGifSetGifVersion(new_gif, 1); ++#elif defined CONFIG_GIF_4 + // the EGifSetGifVersion line causes segfaults in certain + // earlier versions of libungif. i don't know exactly which, + // but certainly in all those before v4. if you have problems, + // you need to upgrade your gif library. +-#ifdef CONFIG_GIF_4 + EGifSetGifVersion("89a"); + #else + mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: Your version of libungif needs to be upgraded.\n"); + mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: Some functionality has been disabled.\n"); + #endif + +- new_gif = EGifOpenFileName(gif_filename, 0); +- if (new_gif == NULL) { +- mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: error opening file \"%s\" for output.\n", gif_filename); +- return 1; +- } +- + slice_data = malloc(img_width * img_height * 3); + if (slice_data == NULL) { + mp_msg(MSGT_VO, MSGL_ERR, "GIF89a: malloc failed.\n"); +@@ -231,7 +244,12 @@ static int config(uint32_t s_width, uint + + // set the initial width and height info. + EGifPutScreenDesc(new_gif, s_width, s_height, 256, 0, reduce_cmap); +-#ifdef CONFIG_GIF_4 ++#if defined GIFLIB_MAJOR && GIFLIB_MAJOR >= 5 ++ EGifPutExtensionLeader(new_gif, 0xFF); ++ EGifPutExtensionBlock(new_gif, 11, LB1); ++ EGifPutExtensionBlock(new_gif, 3, LB2); ++ EGifPutExtensionTrailer(new_gif); ++#elif defined CONFIG_GIF_4 + // version 3 of libungif does not support multiple control blocks. + // looping requires multiple control blocks. + // therefore, looping is only enabled for v4 and up. +@@ -311,7 +329,8 @@ static void flip_page(void) + + static int draw_frame(uint8_t *src[]) + { +- return 1; ++ frame_data = src[0]; ++ return 0; + } + + static int draw_slice(uint8_t *src[], int stride[], int w, int h, int x, int y) +@@ -370,6 +389,7 @@ static void uninit(void) + // set the pointers back to null. + new_gif = NULL; + gif_filename = NULL; ++ frame_data = NULL; + slice_data = NULL; + reduce_data = NULL; + reduce_cmap = NULL;