* Extend the syntax of a filename for the img reader to allow looping. Thus
authorPhilip Gladstone <philipjsg@users.sourceforge.net>
Wed, 11 Dec 2002 03:20:05 +0000 (03:20 +0000)
committerPhilip Gladstone <philipjsg@users.sourceforge.net>
Wed, 11 Dec 2002 03:20:05 +0000 (03:20 +0000)
  %125*d means substitute the frame number MOD 125 into the filename. This
  is a cheap method of having an infinite stream.

Originally committed as revision 1332 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/utils.c

index 239b14eb558b9e1b1c8340752172011362963626..d36df449b4bf7d2534343c9d05027b2a4ec83591 100644 (file)
@@ -1089,11 +1089,20 @@ int get_frame_filename(char *buf, int buf_size,
         if (c == '\0')
             break;
         if (c == '%') {
-            nd = 0;
-            while (*p >= '0' && *p <= '9') {
-                nd = nd * 10 + *p++ - '0';
-            }
-            c = *p++;
+            do {
+                nd = 0;
+                while (isdigit(*p)) {
+                    nd = nd * 10 + *p++ - '0';
+                }
+                c = *p++;
+                if (c == '*' && nd > 0) {
+                    // The nd field is actually the modulus
+                    number = number % nd;
+                    c = *p++;
+                    nd = 0;
+                }
+            } while (isdigit(c));
+
             switch(c) {
             case '%':
                 goto addchar;