changeset 199:66a05c4f8350 libavformat

suppressed frame number modulus hack - added loop_input hack which I find easier to understand
author bellard
date Sun, 24 Aug 2003 21:20:44 +0000
parents 64dbc0b60dbe
children c0d49b5d246c
files img.c utils.c
diffstat 2 files changed, 18 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/img.c	Sun Aug 24 13:59:05 2003 +0000
+++ b/img.c	Sun Aug 24 21:20:44 2003 +0000
@@ -20,10 +20,16 @@
 #include "avformat.h"
 #include "os_support.h"
 
+/* XXX: this is a hack */
+int loop_input = 0;
+
 typedef struct {
     int width;
     int height;
+    int img_first;
+    int img_last;
     int img_number;
+    int img_count;
     int img_size;
     AVImageFormat *img_fmt;
     int pix_fmt;
@@ -121,7 +127,8 @@
 
     strcpy(s->path, s1->filename);
     s->img_number = 0;
-
+    s->img_count = 0;
+    
     /* find format */
     if (s1->iformat->flags & AVFMT_NOFILE)
         s->is_pipe = 0;
@@ -139,6 +146,8 @@
     if (!s->is_pipe) {
         if (find_image_range(&first_index, &last_index, s->path) < 0)
             goto fail;
+        s->img_first = first_index;
+        s->img_last = last_index;
         s->img_number = first_index;
         /* compute duration */
         st->start_time = 0;
@@ -198,6 +207,10 @@
     ByteIOContext f1, *f;
 
     if (!s->is_pipe) {
+        /* loop over input */
+        if (loop_input && s->img_number > s->img_last) {
+            s->img_number = s->img_first;
+        }
         if (get_frame_filename(filename, sizeof(filename),
                                s->path, s->img_number) < 0)
             return -EIO;
@@ -223,7 +236,10 @@
         av_free_packet(pkt);
         return -EIO; /* signal EOF */
     } else {
-        pkt->pts = av_rescale((int64_t)s->img_number * s1->streams[0]->codec.frame_rate_base, s1->pts_den, s1->streams[0]->codec.frame_rate) / s1->pts_num;
+        /* XXX: computing this pts is not necessary as it is done in
+           the generic code too */
+        pkt->pts = av_rescale((int64_t)s->img_count * s1->streams[0]->codec.frame_rate_base, s1->pts_den, s1->streams[0]->codec.frame_rate) / s1->pts_num;
+        s->img_count++;
         s->img_number++;
         return 0;
     }
--- a/utils.c	Sun Aug 24 13:59:05 2003 +0000
+++ b/utils.c	Sun Aug 24 21:20:44 2003 +0000
@@ -606,7 +606,6 @@
             st->start_time < start_time)
             start_time = st->start_time;
     }
-    fprintf(stderr, "start=%lld\n", start_time);
     if (start_time != MAXINT64)
         ic->start_time = start_time;
     
@@ -1504,12 +1503,6 @@
                     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) {