libbluray | branch: master | hpi1 <[email protected]> | Mon Jun 17 12:41:46 2013 +0300| [93daf1755f83d0fad2a9363fae3c83730cecfa60] | committer: hpi1
Cut read at clip end packet (not block or read boundary). Fixes slide shows and probably some other problems too. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=93daf1755f83d0fad2a9363fae3c83730cecfa60 --- src/libbluray/bluray.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index dddb7fc..97e84b7 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1850,6 +1850,15 @@ static int _bd_read(BLURAY *bd, unsigned char *buf, int len) if (size > (unsigned int)6144 - st->int_buf_off) { size = 6144 - st->int_buf_off; } + + /* cut read at clip end packet */ + uint32_t new_clip_pkt = SPN(st->clip_pos + size); + if (new_clip_pkt > st->clip->end_pkt) { + BD_DEBUG(DBG_STREAM, "cut %d bytes at end of block\n", (new_clip_pkt - st->clip->end_pkt) * 192); + size -= (new_clip_pkt - st->clip->end_pkt) * 192; + } + + /* copy chunk */ memcpy(buf, bd->int_buf + st->int_buf_off, size); buf += size; len -= size; _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
