Opened 4 years ago

Last modified 2 years ago

#54661 new enhancement

Blu-Ray playback

Reported by: RJVB (René Bertin) Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: haspatch Cc: jeremyhu (Jeremy Huddleston Sequoia), vladashram@…
Port: libbluray libbdplus

Description (last modified by mf2k (Frank Schima))

I'm in the process of improving Blu-Ray playback support, ultimately in VLC but the main work is being done in libbluray and libaacs. I thought it'd be OK if not better to create a single enhancement ticket for this, attaching multiple diffs.

The changes to port:libbdplus and port:libbluray have probably stabilised:

port:libbdplus

  • add an explicit depspec for libaacs to avoid opportunistic dependencies
  • remove the obsolete --disable-examples configure argument
  • fix the livecheck regex

port:libbluray

  • upgrade to 1.0.1 (not yet mentioned on the homepage!)
  • fix the livecheck regex
  • add ${prefix}/lib to the internal dlopen search path
  • remove obsolute --enable-udf option and enable building the example (the bd_info utility)
  • add a +bdjava variant which is required for supporting java-based menus in VLC

The latter was a bit tricky: building the variant requires having a JDK installed (AFAIK only Oracle provides a working one for Mac). Just running would of course work with a JRE but there's a catch-22 there. The only JRE I know of (JavaAppletPlugin) is also provided by Oracle. I'd love to propose making +bdjava the default because why install this port if you're not interested in Blu-Ray playback. But that would require raising an error if that JavaAppletPlugin isn't installed (the build will fail out of itself if no JDK is installed).

Attachments (6)

libbdplus.diff (786 bytes) - added by RJVB (René Bertin) 4 years ago.
libbluray.diff (2.7 KB) - added by RJVB (René Bertin) 4 years ago.
patch-bdj-mac.diff (2.3 KB) - added by RJVB (René Bertin) 4 years ago.
patch-lib-locs.diff (769 bytes) - added by RJVB (René Bertin) 4 years ago.
patch-bdj_jarfile-loc.diff (465 bytes) - added by RJVB (René Bertin) 4 years ago.
Portfile (1.5 KB) - added by RJVB (René Bertin) 4 years ago.
port:aacs_updater

Download all attachments as: .zip

Change History (15)

Changed 4 years ago by RJVB (René Bertin)

Attachment: libbdplus.diff added

Changed 4 years ago by RJVB (René Bertin)

Attachment: libbluray.diff added

Changed 4 years ago by RJVB (René Bertin)

Attachment: patch-bdj-mac.diff added

Changed 4 years ago by RJVB (René Bertin)

Attachment: patch-lib-locs.diff added

Changed 4 years ago by RJVB (René Bertin)

Attachment: patch-bdj_jarfile-loc.diff added

comment:1 Changed 4 years ago by RJVB (René Bertin)

A companion patch (including an upgrade) to port:libaacs is in preparation; everything doesn't work yet.

NB: actual playback of BDs requires downloading and installing a file with keys and the like, following online instructions. I'll be putting a link to instructions in the port notes, not to the file itself.

comment:2 Changed 4 years ago by mf2k (Frank Schima)

Port: libbluray, libbdpluslibbluray libbdplus

comment:3 Changed 4 years ago by mf2k (Frank Schima)

Description: modified (diff)

comment:4 Changed 4 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Why remove --disable-examples? IIRC, the example code is not installed.

comment:5 Changed 4 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Otherwise, it all looks fine to me.

Does MP actually work reasonably well on linux? I wouldn't expect that...

comment:6 in reply to:  4 Changed 4 years ago by RJVB (René Bertin)

Replying to jeremyhu:

Why remove --disable-examples? IIRC, the example code is not installed.

That's because there isn't any, and the option raises a warning ;)

MP as in Blu-Ray (BD) playback? Actually, I'd say it works best there with these projects, which probably isn't surprising since they're mostly developed there.

A propos, my grappling with libaacs has to do exactly with that: BD playback apparently requires drive access using the MMC protocol to get at certain encryption key details. I'm getting a strong impression that IOKit only supports that for writer devices, not for playback-only (= I can get the MMDevice IOCFPlugin for my internal "SuperDisk" but not for my USB BD-Rom player). I'd appreciate pointers to get around that, if anyone has an idea. (Details are in libaacs's file/mmc_device_darwin.c).

In short, the current state of affairs is that BD playback in VLC works on Mac (as on Linux), but only when I copy the disc's aacs/vuk cache entry over from Linux.

comment:7 Changed 4 years ago by RJVB (René Bertin)

Confirmation of my MMC analysis, and a suggestion that it should be possible to work around the crippled IOKit API:

http://www.makemkv.com/osxmmc/

Sadly that's not a FOSS project...

See also http://www.makemkv.com/forum2/viewtopic.php?f=4&t=7010

Last edited 4 years ago by RJVB (René Bertin) (previous) (diff)

comment:8 Changed 4 years ago by RJVB (René Bertin)

Going a bit beyond what I'd thought: uploading a new port:aacs_updater, a port of the AACS Updater utility from labDV.com .

This little tool allows you to synchronise your local KEYDB.cfg file with a remote database, downloading new entries provided by others and possibly uploading any new entries libaacs may have registered locally (= the feature that currently doesn't work on Mac). Ported from Win32 by yours truly.

Changed 4 years ago by RJVB (René Bertin)

Attachment: Portfile added

port:aacs_updater

comment:9 Changed 2 years ago by ken-cunningham-webuse

In 53afd6a72ac0e7ee051c44f40ed1699b1392db1c/macports-ports (master):

libbdplus: explicitly add libaacs

was opportunistically linking previously
see: #54661

Note: See TracTickets for help on using tickets.