summaryrefslogtreecommitdiff
path: root/libavformat/oggparsevorbis.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat/oggparsevorbis.c')
-rw-r--r--libavformat/oggparsevorbis.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index 0e8c25c030..c48658ceda 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -492,8 +492,12 @@ static int vorbis_packet(AVFormatContext *s, int idx)
priv->final_pts = os->lastpts;
priv->final_duration = 0;
}
- if (os->segp == os->nsegs)
+ if (os->segp == os->nsegs) {
+ int64_t skip = priv->final_pts + priv->final_duration + os->pduration - os->granule;
+ if (skip > 0)
+ os->end_trimming = skip;
os->pduration = os->granule - priv->final_pts - priv->final_duration;
+ }
priv->final_duration += os->pduration;
}