mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +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
|
||||
make_granulepos (GstTheoraParse * parse, gint64 keyframe, gint64 frame)
|
||||
{
|
||||
gint64 iframe;
|
||||
|
||||
if (keyframe == -1)
|
||||
keyframe = 0;
|
||||
/* If using newer theora, offset the granulepos by +1, see comment
|
||||
* in theora_parse_set_streamheader */
|
||||
/* If using newer theora, offset the granulepos by +1, see comment in
|
||||
* 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)
|
||||
keyframe += 1;
|
||||
iframe = keyframe + 1;
|
||||
else
|
||||
iframe = keyframe;
|
||||
|
||||
g_return_val_if_fail (frame >= keyframe, -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
|
||||
|
|
Loading…
Reference in a new issue