I like to play my blu-ray discs with Kodi. When version 18.0 was in beta, I tried playing blu-rays without success. Apparently Kodi had incorporated a new version of libbluray, which broke on-the-fly decryption by MakeMKV. For MacOS and Linux I found a solution which required editing of Kodi source and then building viewtopic.php?f=3&t=16824. Not and easy or quick endeavor.
With version 1.14.2, MakeMKV has gotten closer to a solution (deals properly with discs that have aacs protection only but doesn't handle BD+). There's no problem ripping discs, the problem is emulating the libbdplus to libbluray interface.
For Linux, a work around can be achieved by editing MakeMKV source code before building viewtopic.php?f=3&t=16824#p61608.
For MacOS, we don't have access to the MakeMKV source code. A solution can be had, however, by editing libbluray source code and building libluray.dylib:
In file libbluray/src/libbluray/disc/bdplus.c, replace 20 lines (starting around line 216):
Code: Select all
if (set_fopen) {
/* New libbdplus. Use libbluray for file I/O */
p->bdplus = bdplus_init(NULL, NULL, vid);
/* In open source bdplus_set_fopen() (i.e. set_fopen() following this comment) p->bdplus members are
set to values given by corresponding second and third parameters */
set_fopen(p->bdplus, file_open_handle, file_open_fp);
} else if (root) {
/* Old libbdplus or libmmbd. Disc is mounted. */
p->bdplus = bdplus_init(root, NULL, vid);
} else if (device) {
/* Unmounted device */
if (p->impl_id == IMPL_LIBMMBD && !strncmp(device, "/dev/", 5)) {
char *tmp = str_printf("dev:%s", device);
if (tmp) {
p->bdplus = bdplus_init(tmp, NULL, vid);
X_FREE(tmp);
}
} else {
BD_DEBUG(DBG_BLURAY | DBG_CRIT, "Too old libbdplus detected. Disc must be mounted first.\n");
}
}
Code: Select all
p->bdplus = bdplus_init(NULL, NULL, vid);
The hardest part of this process is getting all the dependencies installed properly before you build libbluray:
fontconfig
freetype2
libxml2
jre8-openjdk
ant
git
jdk8-openjdk
Hopefully, somebody else with find this useful.
dgktkr