diff options
author | Roman Shaposhnik <roman@shaposhnik.org> | 2004-09-19 02:05:22 +0000 |
---|---|---|
committer | Roman Shaposhnik <roman@shaposhnik.org> | 2004-09-19 02:05:22 +0000 |
commit | c4e554701ec27b31b1b6396130b8bb2aaa0d4ad0 (patch) | |
tree | 5a3b66c10bed74ea368d9fe219e2965838531688 /libavformat/dv.c | |
parent | 0bf4e2b8a3d073ce7b86d177c8f3e6e8284a6c1f (diff) | |
download | ffmpeg-streaming-c4e554701ec27b31b1b6396130b8bb2aaa0d4ad0.zip ffmpeg-streaming-c4e554701ec27b31b1b6396130b8bb2aaa0d4ad0.tar.gz |
* misc. fixes and hacks to improve timing detection in raw DV
Originally committed as revision 3478 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/dv.c')
-rw-r--r-- | libavformat/dv.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libavformat/dv.c b/libavformat/dv.c index 31b3522..f7e4d6f 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -741,11 +741,11 @@ DVDemuxContext* dv_init_demux(AVFormatContext *s) 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 @@ static int dv_read_header(AVFormatContext *s, 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; } |