Mercurial > libavformat.hg
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; }