Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2013-07-06 11:34:13 +0400
committerJames Almer <jamrial@gmail.com>2013-07-08 04:41:16 +0400
commitce11d9490cc2e89b62734cc6c5b58a9f90fdd27f (patch)
tree896613931272e5b021a6c5c5880159cde544fc8a /libavformat
parent430ef8a7166b47666d45f180c33b2515cf555933 (diff)
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)
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/oggparseskeleton.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/oggparseskeleton.c b/libavformat/oggparseskeleton.c
index b6959a6543..719e06583d 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", 0);
return 1;
}
- if (target_idx >= 0 && start_granule != OGG_NOGRANULE_VALUE) {
+ if (start_granule != OGG_NOGRANULE_VALUE) {
os->start_granule = start_granule;
}
}