# HG changeset patch # User conrad # Date 1271420495 0 # Node ID 986168b721cafd9e07f6004ec7c5be2e15fc6723 # Parent 4d8244eae68fffe9944960630ab564dc7fea0a73 oggdec: Fix duration calculation if the last page in a file has no granule diff -r 4d8244eae68f -r 986168b721ca oggdec.c --- a/oggdec.c Fri Apr 16 12:21:29 2010 +0000 +++ b/oggdec.c Fri Apr 16 12:21:35 2010 +0000 @@ -431,7 +431,7 @@ ogg_get_length (AVFormatContext * s) { struct ogg *ogg = s->priv_data; - int idx = -1, i; + int i; int64_t size, end; if(url_is_streamed(s->pb)) @@ -451,15 +451,12 @@ while (!ogg_read_page (s, &i)){ if (ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0 && - ogg->streams[i].codec) - idx = i; - } - - if (idx != -1){ - s->streams[idx]->duration = - ogg_gptopts (s, idx, ogg->streams[idx].granule, NULL); - if (s->streams[idx]->start_time != AV_NOPTS_VALUE) - s->streams[idx]->duration -= s->streams[idx]->start_time; + ogg->streams[i].codec) { + s->streams[i]->duration = + ogg_gptopts (s, i, ogg->streams[i].granule, NULL); + if (s->streams[i]->start_time != AV_NOPTS_VALUE) + s->streams[i]->duration -= s->streams[i]->start_time; + } } ogg_restore (s, 0);