[FFmpeg-cvslog] avformat/gif: Do not write GIF89a header if loop is set to -1.

Eugene Dzhurinsky git at videolan.org
Wed Jul 10 01:20:01 CEST 2013


ffmpeg | branch: master | Eugene Dzhurinsky <jdevelop at gmail.com> | Fri Jul  5 20:27:56 2013 -0400| [09f59d6adfa19d1ad5049416c1d0fbc996f509fd] | committer: Michael Niedermayer

avformat/gif: Do not write GIF89a header if loop is set to -1.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=09f59d6adfa19d1ad5049416c1d0fbc996f509fd
---

 libavformat/gif.c |   25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/libavformat/gif.c b/libavformat/gif.c
index 4189850..f6e7625 100644
--- a/libavformat/gif.c
+++ b/libavformat/gif.c
@@ -52,15 +52,18 @@ static int gif_image_write_header(AVIOContext *pb, int width, int height,
         avio_w8(pb, 0); /* aspect ratio */
     }
 
-    /* "NETSCAPE EXTENSION" for looped animation GIF */
-    avio_w8(pb, 0x21); /* GIF Extension code */
-    avio_w8(pb, 0xff); /* Application Extension Label */
-    avio_w8(pb, 0x0b); /* Length of Application Block */
-    avio_write(pb, "NETSCAPE2.0", sizeof("NETSCAPE2.0") - 1);
-    avio_w8(pb, 0x03); /* Length of Data Sub-Block */
-    avio_w8(pb, 0x01);
-    avio_wl16(pb, (uint16_t)loop_count);
-    avio_w8(pb, 0x00); /* Data Sub-block Terminator */
+
+    if (loop_count >= 0 ) {
+        /* "NETSCAPE EXTENSION" for looped animation GIF */
+        avio_w8(pb, 0x21); /* GIF Extension code */
+        avio_w8(pb, 0xff); /* Application Extension Label */
+        avio_w8(pb, 0x0b); /* Length of Application Block */
+        avio_write(pb, "NETSCAPE2.0", sizeof("NETSCAPE2.0") - 1);
+        avio_w8(pb, 0x03); /* Length of Data Sub-Block */
+        avio_w8(pb, 0x01);
+        avio_wl16(pb, (uint16_t)loop_count);
+        avio_w8(pb, 0x00); /* Data Sub-block Terminator */
+    }
 
     return 0;
 }
@@ -189,8 +192,8 @@ static int gif_write_trailer(AVFormatContext *s)
 #define OFFSET(x) offsetof(GIFContext, x)
 #define ENC AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
-    { "loop", "Number of times to loop the output.", OFFSET(loop),
-      AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 65535, ENC },
+    { "loop", "Number of times to loop the output: -1 - no loop, 0 - infinite loop", OFFSET(loop),
+      AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 65535, ENC },
     { "final_delay", "Force delay (in ms) after the last frame", OFFSET(last_delay),
       AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 65535, ENC },
     { NULL },



More information about the ffmpeg-cvslog mailing list