summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Gladstone <philipjsg@users.sourceforge.net>2002-12-11 03:20:05 +0000
committerPhilip Gladstone <philipjsg@users.sourceforge.net>2002-12-11 03:20:05 +0000
commitc9646fda016605426a690bc4c105c0568752750a (patch)
tree5b1b2eaff315b34891d8a7fe45554e94190c6c8e
parent38758ab0cd029473cd6bec061b59ab9dadc97b5d (diff)
* 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.c19
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;