libbluray | branch: master | hpi1 <[email protected]> | Sun Dec 15 19:13:45 2013 +0200| [50b1bd8105894fb747c6fd7398c7a57e4449a18b] | committer: hpi1
Emit BD_EVENT_ENCRYPTED when decryption fails > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=50b1bd8105894fb747c6fd7398c7a57e4449a18b --- src/libbluray/bluray.c | 6 ++++-- src/libbluray/bluray.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 36ed2e2..3848e67 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -592,9 +592,11 @@ static int _read_block(BLURAY *bd, BD_STREAM *st, uint8_t *buf) BD_DEBUG(DBG_STREAM | DBG_CRIT, "Read %d bytes at %"PRIu64" ; requested %d !\n", (int)read_len, st->clip_block_pos, (int)len); } if (bd->libaacs && libaacs_decrypt_unit(bd->libaacs, buf)) { + _queue_event(bd, BD_EVENT_ENCRYPTED, BD_ERROR_AACS); return -1; } - if (st->bdplus && libbdplus_fixup(st->bdplus, buf, len)) { + if (st->bdplus && (libbdplus_fixup(st->bdplus, buf, len) < 0)) { + _queue_event(bd, BD_EVENT_ENCRYPTED, BD_ERROR_BDPLUS); } st->clip_block_pos += len; @@ -605,7 +607,7 @@ static int _read_block(BLURAY *bd, BD_STREAM *st, uint8_t *buf) if (buf[4] != 0x47 || buf[4+192] != 0x47 || buf[4+2*192] != 0x47) { BD_DEBUG(DBG_BLURAY | DBG_CRIT, "TP header copy permission indicator != 0, unit is still encrypted?\n"); - _queue_event(bd, BD_EVENT_ENCRYPTED, 0); + _queue_event(bd, BD_EVENT_ENCRYPTED, BD_ERROR_AACS); return -1; } } diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h index 485fdad..10c8a09 100644 --- a/src/libbluray/bluray.h +++ b/src/libbluray/bluray.h @@ -651,6 +651,10 @@ typedef struct { #define BD_ERROR_HDMV 1 #define BD_ERROR_BDJ 2 +/* BD_EVENT_ENCRYPTED param vlues */ +#define BD_ERROR_AACS 3 +#define BD_ERROR_BDPLUS 4 + #define BLURAY_TITLE_FIRST_PLAY 0xffff #define BLURAY_TITLE_TOP_MENU 0 _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
