From 1bb3990b560e7ff7f46c06c14f959fe432e0b625 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 24 Nov 2011 20:58:22 +0100 Subject: [PATCH] ogg: don't set codec timebase Demuxers are not supposed to set it. --- libavformat/oggparseogm.c | 7 ++----- libavformat/oggparsetheora.c | 13 +++++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/libavformat/oggparseogm.c b/libavformat/oggparseogm.c index 0a8a7c6bd4..f16eb13039 100644 --- a/libavformat/oggparseogm.c +++ b/libavformat/oggparseogm.c @@ -80,9 +80,7 @@ ogm_header(AVFormatContext *s, int idx) if(st->codec->codec_type == AVMEDIA_TYPE_VIDEO){ st->codec->width = bytestream_get_le32(&p); st->codec->height = bytestream_get_le32(&p); - st->codec->time_base.den = spu * 10000000; - st->codec->time_base.num = time_unit; - avpriv_set_pts_info(st, 64, st->codec->time_base.num, st->codec->time_base.den); + avpriv_set_pts_info(st, 64, spu * 10000000, time_unit); } else { st->codec->channels = bytestream_get_le16(&p); p += 2; /* block_align */ @@ -117,8 +115,7 @@ ogm_dshow_header(AVFormatContext *s, int idx) if(t == 0x05589f80){ st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->codec_id = ff_codec_get_id(ff_codec_bmp_tags, AV_RL32(p + 68)); - st->codec->time_base.den = 10000000; - st->codec->time_base.num = AV_RL64(p + 164); + avpriv_set_pts_info(st, 64, AV_RL64(p + 164), 10000000); st->codec->width = AV_RL32(p + 176); st->codec->height = AV_RL32(p + 180); } else if(t == 0x05589f81){ diff --git a/libavformat/oggparsetheora.c b/libavformat/oggparsetheora.c index 993db3ee55..d1559f4632 100644 --- a/libavformat/oggparsetheora.c +++ b/libavformat/oggparsetheora.c @@ -56,6 +56,7 @@ theora_header (AVFormatContext * s, int idx) if (os->buf[os->pstart] == 0x80) { GetBitContext gb; int width, height; + AVRational timebase; init_get_bits(&gb, os->buf + os->pstart, os->psize*8); @@ -85,14 +86,14 @@ theora_header (AVFormatContext * s, int idx) skip_bits(&gb, 16); } - st->codec->time_base.den = get_bits_long(&gb, 32); - st->codec->time_base.num = get_bits_long(&gb, 32); - if (!(st->codec->time_base.num > 0 && st->codec->time_base.den > 0)) { + timebase.den = get_bits_long(&gb, 32); + timebase.num = get_bits_long(&gb, 32); + if (!(timebase.num > 0 && timebase.den > 0)) { av_log(s, AV_LOG_WARNING, "Invalid time base in theora stream, assuming 25 FPS\n"); - st->codec->time_base.num = 1; - st->codec->time_base.den = 25; + timebase.num = 1; + timebase.den = 25; } - avpriv_set_pts_info(st, 64, st->codec->time_base.num, st->codec->time_base.den); + avpriv_set_pts_info(st, 64, timebase.num, timebase.den); st->sample_aspect_ratio.num = get_bits_long(&gb, 24); st->sample_aspect_ratio.den = get_bits_long(&gb, 24);