X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Foggparsetheora.c;h=993db3ee558b0c1c08fa634c0fc5acb714292e41;hb=30266038bdfdecd244edbd91f19e19cb159a74ab;hp=0d74116d178822d656b63e4711bc648797ad513b;hpb=11d058b7b351db8fb73104c847c5cc43b91735c6;p=ffmpeg diff --git a/libavformat/oggparsetheora.c b/libavformat/oggparsetheora.c index 0d74116d178..993db3ee558 100644 --- a/libavformat/oggparsetheora.c +++ b/libavformat/oggparsetheora.c @@ -26,6 +26,7 @@ #include "libavutil/bswap.h" #include "libavcodec/get_bits.h" #include "avformat.h" +#include "internal.h" #include "oggdec.h" struct theora_params { @@ -91,7 +92,7 @@ theora_header (AVFormatContext * s, int idx) st->codec->time_base.num = 1; st->codec->time_base.den = 25; } - st->time_base = st->codec->time_base; + avpriv_set_pts_info(st, 64, st->codec->time_base.num, st->codec->time_base.den); st->sample_aspect_ratio.num = get_bits_long(&gb, 24); st->sample_aspect_ratio.den = get_bits_long(&gb, 24); @@ -104,11 +105,12 @@ theora_header (AVFormatContext * s, int idx) thp->gpshift = get_bits(&gb, 5); thp->gpmask = (1 << thp->gpshift) - 1; - st->codec->codec_type = CODEC_TYPE_VIDEO; + st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->codec_id = CODEC_ID_THEORA; + st->need_parsing = AVSTREAM_PARSE_HEADERS; } else if (os->buf[os->pstart] == 0x83) { - vorbis_comment (s, os->buf + os->pstart + 7, os->psize - 8); + ff_vorbis_comment (s, &st->metadata, os->buf + os->pstart + 7, os->psize - 8); } st->codec->extradata = av_realloc (st->codec->extradata, @@ -123,7 +125,7 @@ theora_header (AVFormatContext * s, int idx) } static uint64_t -theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp) +theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts) { struct ogg *ogg = ctx->priv_data; struct ogg_stream *os = ogg->streams + idx; @@ -135,7 +137,10 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp) iframe++; if(!pframe) - os->pflags |= PKT_FLAG_KEY; + os->pflags |= AV_PKT_FLAG_KEY; + + if (dts) + *dts = iframe + pframe; return iframe + pframe; }