Originally committed as revision 4166 to svn://svn.ffmpeg.org/ffmpeg/trunk
Michael Niedermayer authored on 2005/04/26 20:04:34... | ... |
@@ -593,6 +593,7 @@ static int dv_extract_video_info(DVDemuxContext *c, uint8_t* frame) |
593 | 593 |
|
594 | 594 |
avctx->frame_rate = sys->frame_rate; |
595 | 595 |
avctx->frame_rate_base = sys->frame_rate_base; |
596 |
+ av_set_pts_info(c->vst, 64, sys->frame_rate_base, sys->frame_rate); |
|
596 | 597 |
avctx->width = sys->width; |
597 | 598 |
avctx->height = sys->height; |
598 | 599 |
avctx->pix_fmt = sys->pix_fmt; |
... | ... |
@@ -744,7 +745,6 @@ DVDemuxContext* dv_init_demux(AVFormatContext *s) |
744 | 744 |
av_free(c); |
745 | 745 |
return NULL; |
746 | 746 |
} |
747 |
- av_set_pts_info(c->vst, 64, 1, 30000); |
|
748 | 747 |
|
749 | 748 |
c->fctx = s; |
750 | 749 |
c->ast[0] = c->ast[1] = NULL; |
... | ... |
@@ -803,7 +803,7 @@ int dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, |
803 | 803 |
pkt->size = size; |
804 | 804 |
pkt->flags |= PKT_FLAG_KEY; |
805 | 805 |
pkt->stream_index = c->vst->id; |
806 |
- pkt->pts = c->frames * sys->frame_rate_base * (30000/sys->frame_rate); |
|
806 |
+ pkt->pts = c->frames; |
|
807 | 807 |
|
808 | 808 |
c->frames++; |
809 | 809 |
|
... | ... |
@@ -815,22 +815,11 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, |
815 | 815 |
{ |
816 | 816 |
// FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) |
817 | 817 |
const DVprofile* sys = dv_codec_profile(&c->vst->codec); |
818 |
- int64_t frame_number, offset; |
|
818 |
+ int64_t offset; |
|
819 | 819 |
int64_t size = url_filesize(url_fileno(&s->pb)); |
820 | 820 |
int64_t max_offset = ((size-1) / sys->frame_size) * sys->frame_size; |
821 | 821 |
|
822 |
- if (flags & AVSEEK_FLAG_BACKWARD) { |
|
823 |
- frame_number = av_rescale_rnd(timestamp, sys->frame_rate, |
|
824 |
- (int64_t) 30000 * sys->frame_rate_base, |
|
825 |
- AV_ROUND_DOWN); |
|
826 |
- } |
|
827 |
- else { |
|
828 |
- frame_number = av_rescale_rnd(timestamp, sys->frame_rate, |
|
829 |
- (int64_t) 30000 * sys->frame_rate_base, |
|
830 |
- AV_ROUND_UP); |
|
831 |
- } |
|
832 |
- |
|
833 |
- offset = sys->frame_size * frame_number; |
|
822 |
+ offset = sys->frame_size * timestamp; |
|
834 | 823 |
|
835 | 824 |
if (offset > max_offset) offset = max_offset; |
836 | 825 |
else if (offset < 0) offset = 0; |