Mercurial > libavformat.hg
changeset 741:56cf208ff0d0 libavformat
fix nonsense timestamp mess
author | michael |
---|---|
date | Tue, 26 Apr 2005 11:04:34 +0000 |
parents | 58a2da07cb18 |
children | 21c1ae78f041 |
files | dv.c |
diffstat | 1 files changed, 4 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/dv.c Tue Apr 26 10:01:17 2005 +0000 +++ b/dv.c Tue Apr 26 11:04:34 2005 +0000 @@ -593,6 +593,7 @@ avctx->frame_rate = sys->frame_rate; avctx->frame_rate_base = sys->frame_rate_base; + av_set_pts_info(c->vst, 64, sys->frame_rate_base, sys->frame_rate); avctx->width = sys->width; avctx->height = sys->height; avctx->pix_fmt = sys->pix_fmt; @@ -744,7 +745,6 @@ av_free(c); return NULL; } - av_set_pts_info(c->vst, 64, 1, 30000); c->fctx = s; c->ast[0] = c->ast[1] = NULL; @@ -803,7 +803,7 @@ pkt->size = size; pkt->flags |= PKT_FLAG_KEY; pkt->stream_index = c->vst->id; - pkt->pts = c->frames * sys->frame_rate_base * (30000/sys->frame_rate); + pkt->pts = c->frames; c->frames++; @@ -815,22 +815,11 @@ { // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) const DVprofile* sys = dv_codec_profile(&c->vst->codec); - int64_t frame_number, offset; + int64_t offset; int64_t size = url_filesize(url_fileno(&s->pb)); int64_t max_offset = ((size-1) / sys->frame_size) * sys->frame_size; - if (flags & AVSEEK_FLAG_BACKWARD) { - frame_number = av_rescale_rnd(timestamp, sys->frame_rate, - (int64_t) 30000 * sys->frame_rate_base, - AV_ROUND_DOWN); - } - else { - frame_number = av_rescale_rnd(timestamp, sys->frame_rate, - (int64_t) 30000 * sys->frame_rate_base, - AV_ROUND_UP); - } - - offset = sys->frame_size * frame_number; + offset = sys->frame_size * timestamp; if (offset > max_offset) offset = max_offset; else if (offset < 0) offset = 0;