Browse code

fix nonsense timestamp mess

Originally committed as revision 4166 to svn://svn.ffmpeg.org/ffmpeg/trunk

Michael Niedermayer authored on 2005/04/26 20:04:34
Showing 1 changed files
... ...
@@ -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;