libbluray | branch: master | hpi1 <[email protected]> | Thu Apr 14 10:48:50 2016 +0300| [2dd7fd11965e08fdbadcb8f0f3e97e83168b8bbd] | committer: hpi1
_clip_seek_time(): log errors > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=2dd7fd11965e08fdbadcb8f0f3e97e83168b8bbd --- src/libbluray/bluray.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 9d43450..c2ea810 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1808,14 +1808,22 @@ static int64_t _clip_seek_time(BLURAY *bd, uint32_t tick) { uint32_t clip_pkt, out_pkt; - if (tick < bd->st0.clip->out_time) { - - // Find the closest access unit to the requested position - nav_clip_time_search(bd->st0.clip, tick, &clip_pkt, &out_pkt); + if (!bd->title || !bd->st0.clip) { + BD_DEBUG(DBG_BLURAY | DBG_CRIT, "_clip_seek_time(): no playlist playing\n"); + return -1; + } - _seek_internal(bd, bd->st0.clip, out_pkt, clip_pkt); + if (tick >= bd->st0.clip->out_time) { + BD_DEBUG(DBG_BLURAY | DBG_CRIT, "_clip_seek_time(): timestamp after clip end (%u < %u)\n", + bd->st0.clip->out_time, tick); + return -1; } + // Find the closest access unit to the requested position + nav_clip_time_search(bd->st0.clip, tick, &clip_pkt, &out_pkt); + + _seek_internal(bd, bd->st0.clip, out_pkt, clip_pkt); + return bd->s_pos; } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
