summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/oggparseskeleton.c5
-rw-r--r--libavformat/oggparsetheora.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/libavformat/oggparseskeleton.c b/libavformat/oggparseskeleton.c
index 8d8e5dc10d..b0f55dd0b2 100644
--- a/libavformat/oggparseskeleton.c
+++ b/libavformat/oggparseskeleton.c
@@ -74,8 +74,11 @@ 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 = ogg_gptopts(s, target_idx, start_granule, NULL);
+ s->streams[target_idx]->start_time = pts;
}
}
diff --git a/libavformat/oggparsetheora.c b/libavformat/oggparsetheora.c
index d1559f4632..7ea4787913 100644
--- a/libavformat/oggparsetheora.c
+++ b/libavformat/oggparsetheora.c
@@ -131,8 +131,13 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts)
struct ogg *ogg = ctx->priv_data;
struct ogg_stream *os = ogg->streams + idx;
struct theora_params *thp = os->private;
- uint64_t iframe = gp >> thp->gpshift;
- uint64_t pframe = gp & thp->gpmask;
+ uint64_t iframe, pframe;
+
+ if (!thp)
+ return AV_NOPTS_VALUE;
+
+ iframe = gp >> thp->gpshift;
+ pframe = gp & thp->gpmask;
if (thp->version < 0x030201)
iframe++;