Browse code

* misc. fixes and hacks to improve timing detection in raw DV

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

Roman Shaposhnik authored on 2004/09/19 11:05:22
Showing 1 changed files
... ...
@@ -741,11 +741,11 @@ DVDemuxContext* dv_init_demux(AVFormatContext *s)
741 741
     c->vst->codec.codec_type = CODEC_TYPE_VIDEO;
742 742
     c->vst->codec.codec_id = CODEC_ID_DVVIDEO;
743 743
     c->vst->codec.bit_rate = 25000000;
744
+    c->vst->start_time = 0;
744 745
     
745 746
     c->ast[0]->codec.codec_type = CODEC_TYPE_AUDIO;
746 747
     c->ast[0]->codec.codec_id = CODEC_ID_PCM_S16LE;
747
-   
748
-    s->ctx_flags |= AVFMTCTX_NOHEADER; 
748
+    c->ast[0]->start_time = 0;
749 749
     
750 750
     return c;
751 751
     
... ...
@@ -849,9 +849,18 @@ static int dv_read_header(AVFormatContext *s,
849 849
                           AVFormatParameters *ap)
850 850
 {
851 851
     RawDVContext *c = s->priv_data;
852
+    const DVprofile* sys;
852 853
     c->dv_demux = dv_init_demux(s);
854
+    if (!c->dv_demux)
855
+        return -1;
853 856
    
854
-    return c->dv_demux ? 0 : -1;
857
+    if (get_buffer(&s->pb, c->buf, 4) <= 0 || url_fseek(&s->pb, -4, SEEK_CUR) < 0)
858
+        return AVERROR_IO;
859
+
860
+    sys = dv_frame_profile(c->buf);
861
+    s->bit_rate = av_rescale(sys->frame_size * 8, sys->frame_rate, sys->frame_rate_base);
862
+   
863
+    return 0;
855 864
 }
856 865
 
857 866