diff options
author | Philip Gladstone <philipjsg@users.sourceforge.net> | 2002-12-11 03:20:05 +0000 |
---|---|---|
committer | Philip Gladstone <philipjsg@users.sourceforge.net> | 2002-12-11 03:20:05 +0000 |
commit | c9646fda016605426a690bc4c105c0568752750a (patch) | |
tree | 5b1b2eaff315b34891d8a7fe45554e94190c6c8e | |
parent | 38758ab0cd029473cd6bec061b59ab9dadc97b5d (diff) | |
download | ffmpeg-c9646fda016605426a690bc4c105c0568752750a.tar.gz |
* Extend the syntax of a filename for the img reader to allow looping. Thus
%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
-rw-r--r-- | libavformat/utils.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 239b14eb55..d36df449b4 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -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; |