XAvAX
31st July 2012, 11:04
First, some definitions I will use throughout.
A rich disc image format is one that contains metadata beyond what is expressed by an ISO file. This include multi-track information, the lead-in area, and more. A good such format should probably support arbitrary or near-arbitrary data.
An enhanced disc image format permits additional features regarding how the contents are stored. Compression and encryption both fit here.
An open format is one that is clearly documented and can be implemented freely.
I think that an open, rich disc image format could be exceedingly useful, and I believe I have an idea of how to do it.
First, the features that I intend the format to provide:
Can be created from a physical disc or an existing ISO image
Can be mounted as a virtual drive
Can be converted into a plain ISO image trivially
Can contain arbitrary metadata
Can be extended later to be an enhanced disc image format
A single file. MDF/MDS and BIN/CUE are really annoying to deal with because of that.
Surprisingly, this may not be particularly difficult. There is already a format for putting arbitrary metadata on just about anything: APEv2 tags. They support both UTF-8 and binary values, can store a list of values for each key, and have multiple open-source parser and generator implementations. The simple solution is to just slap an APE tag on an ISO.
It's trivial to add an APE tag to an existing file (feature 1), the format can easily be added to CDEmu since it already supports multiple (far more complicated) formats and is open-source (feature 2), stripping an APE tag off of a file is just as easy as adding one (feature 3), APE tags can contain arbitrary key-value pairs (aside from a couple banned keys) and the values can be either UTF-8 or binary (feature 4), and even on compressed images the APE tag can be read, so it would be easy enough to have fields specifying the compression parameters (chunks of size X, an index of chunks, compression algorithm) (feature 5).
Encryption is slightly trickier, since then we don't want to expose some of the values in the APE tag, but that can be resolved by encrypting the whole thing and sticking an outer APE tag on that, containing the encryption parameters.
With that realization, the primary difficulty becomes figuring out and standardizing what to call the various tags that would be used.
Some nice effects just off the top of my head:
Store the lead-in section in a binary tag, allowing CSS-ified DVDs to be ripped 1-to-1 and emulated perfectly
Store the values from BD-ROMs that the Device Key is needed in order to compute, allowing emulation of such discs without ever finding a device key.
With those two, you could build something really neat:
Emulate all of your movies (with encryption seemingly intact) using CDEmu or something similar on Linux (once support is added, at least)
Use the SCSI Target subsystem in Linux with the passthrough backend to export them over iSCSI or Firewire
Access them from any other computer, looking like they had never been ripped
BD+ for that movie not completely cracked in the software you use? Doesn't matter, since it still looks like the real disc when emulated. When your software supports it, try again, or just watch it in the official player, because the point is that nothing can tell the difference.
With that, you could build a home theater PC that accesses all of your discs over the network (via iSCSI), and has them all accessible simultaneously, without ever knowing they had been ripped. The only real limit would be how much disc space you have on the server.
It will be absolutely critical to standardize what tag names are used for what metadata, though, otherwise we run into multiple incompatible implementations.
Note: I am terrible at naming things, so am open to suggestions on what to call the format.
Any thoughts? Questions? Suggestions?
A rich disc image format is one that contains metadata beyond what is expressed by an ISO file. This include multi-track information, the lead-in area, and more. A good such format should probably support arbitrary or near-arbitrary data.
An enhanced disc image format permits additional features regarding how the contents are stored. Compression and encryption both fit here.
An open format is one that is clearly documented and can be implemented freely.
I think that an open, rich disc image format could be exceedingly useful, and I believe I have an idea of how to do it.
First, the features that I intend the format to provide:
Can be created from a physical disc or an existing ISO image
Can be mounted as a virtual drive
Can be converted into a plain ISO image trivially
Can contain arbitrary metadata
Can be extended later to be an enhanced disc image format
A single file. MDF/MDS and BIN/CUE are really annoying to deal with because of that.
Surprisingly, this may not be particularly difficult. There is already a format for putting arbitrary metadata on just about anything: APEv2 tags. They support both UTF-8 and binary values, can store a list of values for each key, and have multiple open-source parser and generator implementations. The simple solution is to just slap an APE tag on an ISO.
It's trivial to add an APE tag to an existing file (feature 1), the format can easily be added to CDEmu since it already supports multiple (far more complicated) formats and is open-source (feature 2), stripping an APE tag off of a file is just as easy as adding one (feature 3), APE tags can contain arbitrary key-value pairs (aside from a couple banned keys) and the values can be either UTF-8 or binary (feature 4), and even on compressed images the APE tag can be read, so it would be easy enough to have fields specifying the compression parameters (chunks of size X, an index of chunks, compression algorithm) (feature 5).
Encryption is slightly trickier, since then we don't want to expose some of the values in the APE tag, but that can be resolved by encrypting the whole thing and sticking an outer APE tag on that, containing the encryption parameters.
With that realization, the primary difficulty becomes figuring out and standardizing what to call the various tags that would be used.
Some nice effects just off the top of my head:
Store the lead-in section in a binary tag, allowing CSS-ified DVDs to be ripped 1-to-1 and emulated perfectly
Store the values from BD-ROMs that the Device Key is needed in order to compute, allowing emulation of such discs without ever finding a device key.
With those two, you could build something really neat:
Emulate all of your movies (with encryption seemingly intact) using CDEmu or something similar on Linux (once support is added, at least)
Use the SCSI Target subsystem in Linux with the passthrough backend to export them over iSCSI or Firewire
Access them from any other computer, looking like they had never been ripped
BD+ for that movie not completely cracked in the software you use? Doesn't matter, since it still looks like the real disc when emulated. When your software supports it, try again, or just watch it in the official player, because the point is that nothing can tell the difference.
With that, you could build a home theater PC that accesses all of your discs over the network (via iSCSI), and has them all accessible simultaneously, without ever knowing they had been ripped. The only real limit would be how much disc space you have on the server.
It will be absolutely critical to standardize what tag names are used for what metadata, though, otherwise we run into multiple incompatible implementations.
Note: I am terrible at naming things, so am open to suggestions on what to call the format.
Any thoughts? Questions? Suggestions?