[SCM] libav/experimental: Fix playback with invalid files that don't set the continuation flag for pages that continue packets started in prior pages. Fixes issue1248
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 16:59:37 UTC 2013
The following commit has been merged in the experimental branch:
commit ecc0027bc6d58536b92003173b0e23504e828472
Author: David Conrad <lessen42 at gmail.com>
Date: Mon Feb 8 10:13:03 2010 +0000
Fix playback with invalid files that don't set the continuation flag for
pages that continue packets started in prior pages.
Fixes issue1248
Originally committed as revision 21688 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 26a6af2..3e1bf5d 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -122,6 +122,7 @@ ogg_reset (struct ogg * ogg)
os->lastdts = AV_NOPTS_VALUE;
os->nsegs = 0;
os->segp = 0;
+ os->incomplete = 0;
}
ogg->curidx = -1;
@@ -268,7 +269,7 @@ ogg_read_page (AVFormatContext * s, int *str)
for (i = 0; i < nsegs; i++)
size += os->segments[i];
- if (flags & OGG_FLAG_CONT){
+ if (flags & OGG_FLAG_CONT || os->incomplete){
if (!os->psize){
while (os->segp < os->nsegs){
int seg = os->segments[os->segp++];
@@ -356,6 +357,7 @@ ogg_packet (AVFormatContext * s, int *str, int *dstart, int *dsize)
if (!complete && os->segp == os->nsegs){
ogg->curidx = -1;
+ os->incomplete = 1;
}
}while (!complete);
@@ -366,6 +368,7 @@ ogg_packet (AVFormatContext * s, int *str, int *dstart, int *dsize)
#endif
ogg->curidx = idx;
+ os->incomplete = 0;
if (os->header < 0){
int hdr = os->codec->header (s, idx);
diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h
index 7c677a1..b0a23e2 100644
--- a/libavformat/oggdec.h
+++ b/libavformat/oggdec.h
@@ -71,6 +71,7 @@ struct ogg_stream {
int header;
int nsegs, segp;
uint8_t segments[255];
+ int incomplete; ///< whether we're expecting a continuation in the next page
int page_end; ///< current packet is the last one completed in the page
void *private;
};
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list