summaryrefslogtreecommitdiff
path: root/libavformat/oggparseskeleton.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-09-25 16:00:09 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-09-25 16:00:09 +0200
commit0842e32f99105f06ad6b53f580ee777bc4bf9dee (patch)
treeb0b5b9ffcb9463556f7be33fdd5f43ba68d5fdfb /libavformat/oggparseskeleton.c
parent4c273eb64c1faa47ced1cfcf15a7a1af4d27dc44 (diff)
parentd1f05dd18375f2f8e68372edee11436927e43ba8 (diff)
Merge commit 'd1f05dd18375f2f8e68372edee11436927e43ba8'
* commit 'd1f05dd18375f2f8e68372edee11436927e43ba8': ogg: calculate the start position once all the headers are parsed Conflicts: libavformat/oggdec.c libavformat/oggparseskeleton.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/oggparseskeleton.c')
-rw-r--r--libavformat/oggparseskeleton.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/libavformat/oggparseskeleton.c b/libavformat/oggparseskeleton.c
index a9e4fc9ed0..4b02c838f2 100644
--- a/libavformat/oggparseskeleton.c
+++ b/libavformat/oggparseskeleton.c
@@ -30,7 +30,8 @@ static int skeleton_header(AVFormatContext *s, int idx)
AVStream *st = s->streams[idx];
uint8_t *buf = os->buf + os->pstart;
int version_major, version_minor;
- int64_t start_num, start_den, start_granule;
+ int64_t start_num, start_den;
+ uint64_t start_granule;
int target_idx, start_time;
strcpy(st->codec->codec_name, "skeleton");
@@ -73,12 +74,13 @@ 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 && start_granule != -1) {
- int64_t pts = ogg_gptopts(s, target_idx, start_granule, NULL);
- if (pts == AV_NOPTS_VALUE)
- return -1;
- ogg->streams[target_idx].lastpts =
- s->streams[target_idx]->start_time = pts;
+ 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) {
+ os->start_granule = start_granule;
}
}