[Mplayer-cvslog] CVS: main/libmpdemux demux_gif.c,1.3,1.4

Alex Beregszaszi alex at mplayerhq.hu
Wed Feb 19 17:55:26 CET 2003


Update of /cvsroot/mplayer/main/libmpdemux
In directory mail:/var/tmp.root/cvs-serv3401/libmpdemux

Modified Files:
	demux_gif.c 
Log Message:
gif library incompatibility fixes and prefere libungif over libgif. Patch by Joey Parrish <joey at nicewarrior.org>

Index: demux_gif.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_gif.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- demux_gif.c	8 Feb 2003 17:29:43 -0000	1.3
+++ demux_gif.c	19 Feb 2003 16:55:14 -0000	1.4
@@ -24,9 +24,12 @@
 
 #define GIF_SIGNATURE (('G' << 16) | ('I' << 8) | 'F')
 
+#ifndef HAVE_GIF_TVT_HACK
+// not supported by certain versions of the library
 int my_read_gif(GifFileType *gif, uint8_t *buf, int len) {
   return stream_read(gif->UserData, buf, len);
 }
+#endif
   
 int gif_check_file(demuxer_t *demuxer)
 {
@@ -156,7 +159,17 @@
   // go back to the beginning
   stream_seek(demuxer->stream,demuxer->stream->start_pos);
 
+#ifdef HAVE_GIF_TVT_HACK
+  // without the TVT functionality of libungif, a hard seek must be
+  // done to the beginning of the file.  this is because libgif is
+  // unable to use mplayer's cache, and without this lseek libgif will
+  // 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);
+#else
   gif = DGifOpen(demuxer->stream, my_read_gif);
+#endif
   if (!gif) {
     PrintGifError();
     return NULL;



More information about the MPlayer-cvslog mailing list