A Blu-ray disc may contain two different kinds of organization IDs. The first, which appears in the id.bdmv file, is the disc org ID. The second, which appears in the BDJO file and in the xlet's PRF is the xlet org ID. In many discs these org IDs are the same, but this is not always the case. For example, a disc might include an xlet that comes from a third-party, and the disc maker might wish to keep the org IDs distinct. In another usage scenario, a BD-Live xlet used for testing might load a fairly complete disc image and do a VFS update, where the disc image under test has a different org ID than the xlet that does the vfs update.
This latter usage scenario occurs with the HD cookbook project's bridgehead xlet.
A properly signed xlet is granted write access to the BUDA, in an organization-dependent directory. This is normally where an xlet like the bridgehead xlet writes the elements it needs before it does a VFS update. For a VFS update, the new contents need to appear in a subdirectory determined by the disc org ID.
Unfortunately, as of this writing it was not clear which org ID is used to determine the directory that the xlet has write access to. Is it determined by the disc org ID, or the xlet org ID? This can be tested with the DataAreaAccessTest in the HD cookbook open-source project, available under tests/functional. Running this test, we observed that writing was allowed under the disc org ID on some players, and under the xlet org ID on others.
Further, we have heard reports that some players may treat xlets whose org ID differs from that of the disc as being unsigned. We can't find any specification language that would support (or even allow) this behavior, however; this behavior might just be a bug in pre-production players.
It may be simplest to ensure that an xlet that writes to the BUDA and does a VFS update is always signaled in the BDJO with the same xlet org ID as the disc org ID of the disc it's carried on. This will work on all players, even the pre-production players where the org IDs must match in order for an xlet to be trusted. However, using the same org ID for both might not always be possible. When it isn't, We recommend that BD-J authors include a credential with the xlet to guarantee that write permission will be granted to the directory of the disc org ID in all cases. Further, the xlet should be tested on a player that is known to automatically grant write access under the xlet org ID, and not the disc org ID, so that the correctness of the credential is ensured.
Further, it's probably a good idea to avoid hard-coding organization IDs into an xlet. The xlet's org ID can be read from the standard system property dvb.org.id There is no system property for the disc's org ID, but it's easy enough to read it out of the id.bdmv file. This is what we do in the DataAreaAccessTest code.
-- Main.billf - 04 Jul 2008