Commit 5adfbd39 authored by James Almer's avatar James Almer

avformat/oggparsevp8: fix pts calculation on pages ending with an invisible frame

Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 114870db
...@@ -82,7 +82,11 @@ static uint64_t vp8_gptopts(AVFormatContext *s, int idx, ...@@ -82,7 +82,11 @@ static uint64_t vp8_gptopts(AVFormatContext *s, int idx,
struct ogg *ogg = s->priv_data; struct ogg *ogg = s->priv_data;
struct ogg_stream *os = ogg->streams + idx; struct ogg_stream *os = ogg->streams + idx;
uint64_t pts = (granule >> 32); int invcnt = !((granule >> 30) & 3);
// If page granule is that of an invisible vp8 frame, its pts will be
// that of the end of the next visible frame. We substract 1 for those
// to prevent messing up pts calculations.
uint64_t pts = (granule >> 32) - invcnt;
uint32_t dist = (granule >> 3) & 0x07ffffff; uint32_t dist = (granule >> 3) & 0x07ffffff;
if (!dist) if (!dist)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment