mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
theoraparse: fix assertions in make_granulepos when using the new theora granulepos mapping. Fixes #583903.
This commit is contained in:
parent
6292ff4ae0
commit
bb1561644f
1 changed files with 11 additions and 4 deletions
|
@ -408,17 +408,24 @@ theora_parse_clear_queue (GstTheoraParse * parse)
|
||||||
static gint64
|
static gint64
|
||||||
make_granulepos (GstTheoraParse * parse, gint64 keyframe, gint64 frame)
|
make_granulepos (GstTheoraParse * parse, gint64 keyframe, gint64 frame)
|
||||||
{
|
{
|
||||||
|
gint64 iframe;
|
||||||
|
|
||||||
if (keyframe == -1)
|
if (keyframe == -1)
|
||||||
keyframe = 0;
|
keyframe = 0;
|
||||||
/* If using newer theora, offset the granulepos by +1, see comment
|
/* If using newer theora, offset the granulepos by +1, see comment in
|
||||||
* in theora_parse_set_streamheader */
|
* theora_parse_set_streamheader.
|
||||||
|
*
|
||||||
|
* We don't increment keyframe directly, as internally we always index frames
|
||||||
|
* starting from 0 and we do some sanity checking below. */
|
||||||
if (!parse->is_old_bitstream)
|
if (!parse->is_old_bitstream)
|
||||||
keyframe += 1;
|
iframe = keyframe + 1;
|
||||||
|
else
|
||||||
|
iframe = keyframe;
|
||||||
|
|
||||||
g_return_val_if_fail (frame >= keyframe, -1);
|
g_return_val_if_fail (frame >= keyframe, -1);
|
||||||
g_return_val_if_fail (frame - keyframe < 1 << parse->shift, -1);
|
g_return_val_if_fail (frame - keyframe < 1 << parse->shift, -1);
|
||||||
|
|
||||||
return (keyframe << parse->shift) + (frame - keyframe);
|
return (iframe << parse->shift) + (frame - keyframe);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue