|
|
@@ -282,6 +282,9 @@ static int ogg_read_page(AVFormatContext *s, int *str) |
|
|
|
|
|
|
|
if (flags & OGG_FLAG_CONT || os->incomplete){ |
|
|
|
if (!os->psize){ |
|
|
|
// If this is the very first segment we started |
|
|
|
// playback in the middle of a continuation packet. |
|
|
|
// Discard it since we missed the start of it. |
|
|
|
while (os->segp < os->nsegs){ |
|
|
|
int seg = os->segments[os->segp++]; |
|
|
|
os->pstart += seg; |
|
|
@@ -368,7 +371,11 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize, |
|
|
|
|
|
|
|
if (!complete && os->segp == os->nsegs){ |
|
|
|
ogg->curidx = -1; |
|
|
|
os->incomplete = 1; |
|
|
|
// Do not set incomplete for empty packets. |
|
|
|
// Together with the code in ogg_read_page |
|
|
|
// that discards all continuation of empty packets |
|
|
|
// we would get an infinite loop. |
|
|
|
os->incomplete = !!os->psize; |
|
|
|
} |
|
|
|
}while (!complete); |
|
|
|
|
|
|
|