[DVDnav-discuss] libdvdread: UDF rework
Jorgen Lundman
lundman at lundman.net
Fri Jan 13 06:40:22 CET 2012
Hello list,
I prefer to keep libdvdread as a library that can read all versions of UDF
filesystem (Up to 2.60) and ISO files. I find it very unattractive to use
multiple libraries, one to test if it is a "VIDEO_TS" style UDF, and if not, use
a whole different library to handle this type of UDF device/file. (which also
interfaces with libdvdcss and/or libaacs)
I decided to take a look at libdvdread again, with regards to reading generic
UDF devices and ISO images. libdvdread already could handle DVD UDF levels, and
I already did some work to enable higher UDF levels like that of blurays.
But it generally mostly worked for images created with ImgBurn, and not always
for retail blurays or generic UDF. (Linux mkudffs or OsX Newfs_udf).
So, with that in mind I made the following changes:
* Proper LogVolume parsing, and scan the defined partitions
+ Handle Sparing Table
+ Handle Metadata partition; main, mirror and bitmap locations.
* Handle ExtFileInfo 250,251,252 (Metadata; Main file, mirror file and bitmap file)
* Fix math to find logic block for FSD, based on FSD for metadata not partition
start, and/or influenced by Metadata entry. It no longer "loops" looking/hoping
for the right TagID.
* Fixed "ICBTag.flags&7 = 3" type, "file content data" is stored at AD! (In the
same block)
The ICBTag logic in dvdread, for flags type = 3, is completely wrong. But this
sort of "data compression", to store content in the actual ExtFileInfo block, is
probably not used for media volumes normally.
* File location (as opposed to Directory location) are from partition.start, not
FSD location. (Of course, for DVDs the FSB is at +0 offset.)
* Tested IO export functions to (still) work with libdvdcss and libaacs.
Now since dvd_udf.c is nearly "unrecognisable" to the original (although
backwards compatible), and our past history, I feel it is probably not worth
working with patches any more. Perhaps it is better if I simply spin off my own
fork of libdvdread. I'm sure we all agree here.
Should I take a new library name, dvdread.plus or dvdreadX or libudfread,
something, or just different version strings? Let me know what You think so we
can come to something everyone is happy with.
Lund
Optional TODOs.
* If metadata-mail-file fails, use metadata-mirror-file.
* Ignores freetable bitmap too, but then, it is a readonly library
--
Jorgen Lundman | <lundman at lundman.net>
Unix Administrator | +81 (0)3 -5456-2687 ext 1017 (work)
Shibuya-ku, Tokyo | +81 (0)90-5578-8500 (cell)
Japan | +81 (0)3 -3375-1767 (home)
More information about the DVDnav-discuss
mailing list