changeset 524:0b9dfb0cddc8 libavformat

* misc. fixes and hacks to improve timing detection in raw DV
author romansh
date Sun, 19 Sep 2004 02:05:22 +0000
parents d788959a01e2
children 966b56685500
files dv.c
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/dv.c	Sat Sep 18 00:32:36 2004 +0000
+++ b/dv.c	Sun Sep 19 02:05:22 2004 +0000
@@ -741,11 +741,11 @@
     c->vst->codec.codec_type = CODEC_TYPE_VIDEO;
     c->vst->codec.codec_id = CODEC_ID_DVVIDEO;
     c->vst->codec.bit_rate = 25000000;
+    c->vst->start_time = 0;
     
     c->ast[0]->codec.codec_type = CODEC_TYPE_AUDIO;
     c->ast[0]->codec.codec_id = CODEC_ID_PCM_S16LE;
-   
-    s->ctx_flags |= AVFMTCTX_NOHEADER; 
+    c->ast[0]->start_time = 0;
     
     return c;
     
@@ -849,9 +849,18 @@
                           AVFormatParameters *ap)
 {
     RawDVContext *c = s->priv_data;
+    const DVprofile* sys;
     c->dv_demux = dv_init_demux(s);
+    if (!c->dv_demux)
+        return -1;
    
-    return c->dv_demux ? 0 : -1;
+    if (get_buffer(&s->pb, c->buf, 4) <= 0 || url_fseek(&s->pb, -4, SEEK_CUR) < 0)
+        return AVERROR_IO;
+
+    sys = dv_frame_profile(c->buf);
+    s->bit_rate = av_rescale(sys->frame_size * 8, sys->frame_rate, sys->frame_rate_base);
+   
+    return 0;
 }