Mercurial > libavformat.hg
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) {