aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2013-07-06 04:34:13 -0300
committerJames Almer <jamrial@gmail.com>2013-07-07 21:35:20 -0300
commitddfff763978dd6a79e6e8e560291e76fc98a667c (patch)
treeab9e1fb429a4f2d8d529803ffc812474aa728ec6
parent40c521aec0edb47f6d6cd59f96812248e152dfdc (diff)
downloadffmpeg-ddfff763978dd6a79e6e8e560291e76fc98a667c.tar.gz
oggparseskeleton: Fix fisbone header parsing
start_granule should be applied to the stream referenced in the fisbone packet, not to the Skeleton stream. This was broken in d1f05dd18375f2f8e68372edee11436927e43ba8 and produced bogus warnings about multiple fisbone in the same stream on files with more than one stream. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 3960992f0abf8e28acada220c79fb754d67298ba)
-rw-r--r--libavformat/oggparseskeleton.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/oggparseskeleton.c b/libavformat/oggparseskeleton.c
index 4b02c838f2..01032b2288 100644
--- a/libavformat/oggparseskeleton.c
+++ b/libavformat/oggparseskeleton.c
@@ -74,12 +74,17 @@ static int skeleton_header(AVFormatContext *s, int idx)
target_idx = ogg_find_stream(ogg, AV_RL32(buf+12));
start_granule = AV_RL64(buf+36);
+ if (target_idx < 0) {
+ av_log(s, AV_LOG_WARNING, "Serial number in fisbone doesn't match any stream\n");
+ return 1;
+ }
+ os = ogg->streams + target_idx;
if (os->start_granule != OGG_NOGRANULE_VALUE) {
av_log_missing_feature(s, "multiple fisbone for the "
"same stream\n", 0);
return 1;
}
- if (target_idx >= 0 && start_granule != OGG_NOGRANULE_VALUE) {
+ if (start_granule != OGG_NOGRANULE_VALUE) {
os->start_granule = start_granule;
}
}