libbluray | branch: master | hpi1 <[email protected]> | Mon Dec 6 15:31:50 2010 +0200| [5957c2be44b3c0d48bc3659f4c005ed318aa61f0] | committer: hpi1
Added BD_EVENT_ENCRYPTED. Make bd_read() fail if aligned unit copy permission indicator is set. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=5957c2be44b3c0d48bc3659f4c005ed318aa61f0 --- src/libbluray/bluray.c | 8 ++++++++ src/libbluray/bluray.h | 1 + 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 6d158f9..5371fb6 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -302,6 +302,14 @@ static int _read_block(BLURAY *bd, BD_STREAM *st, uint8_t *buf) } + /* Check TP_extra_header Copy_permission_indicator. If != 0, unit is still encrypted. */ + if (buf[0] & 0xc0) { + DEBUG(DBG_BLURAY | DBG_CRIT, + "TP header copy permission indicator != 0, unit is still encrypted? (%p)\n", bd); + _queue_event(bd, (BD_EVENT){BD_EVENT_ENCRYPTED, 0}); + return 0; + } + DEBUG(DBG_STREAM, "Read unit OK! (%p)\n", bd); return 1; diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h index 3da7c11..01e9f38 100644 --- a/src/libbluray/bluray.h +++ b/src/libbluray/bluray.h @@ -442,6 +442,7 @@ void bd_stop_bdj(BLURAY *bd); // shutdown BD-J and clean up resources typedef enum { BD_EVENT_NONE = 0, BD_EVENT_ERROR, + BD_EVENT_ENCRYPTED, /* current playback position */ BD_EVENT_ANGLE, /* current angle, 1...N */ _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
