Otherwise we'll get into an infinite loop here. Now this is still not
correct and will cause a clean error, but at least it won't hang forever
anymore.
buffer =
gst_adapter_take_buffer (dash_stream->sidx_adapter, available);
} else {
- buffer =
- gst_adapter_take_buffer (dash_stream->sidx_adapter,
- sidx_end_offset - dash_stream->sidx_current_offset);
- advance = TRUE;
+ if (sidx_end_offset <= dash_stream->sidx_current_offset) {
+ buffer = NULL;
+ gst_adapter_clear (dash_stream->sidx_adapter);
+ } else {
+ buffer =
+ gst_adapter_take_buffer (dash_stream->sidx_adapter,
+ sidx_end_offset - dash_stream->sidx_current_offset);
+ advance = TRUE;
+ }
}
}