diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index 29e4907e86..43af23d284 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -490,6 +490,18 @@ ogg_get_length (AVFormatContext * s) ogg_restore (s, 0); + ogg_save (s); + url_fseek (s->pb, 0, SEEK_SET); + while (!ogg_read_page (s, &i)){ + if (ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0 && + ogg->streams[i].codec) { + s->streams[i]->duration -= + ogg_gptopts (s, i, ogg->streams[i].granule, NULL); + break; + } + } + ogg_restore (s, 0); + return 0; }