# HG changeset patch # User jonas # Date 1035732993 0 # Node ID b75cf70d2a7c1eddc39b32cc32da7d9e07e1d9d7 # Parent ebe28de81548db64e63c71a2c00bcd1afe689528 DVD authentication, VCD/DVD structure, more... diff -r ebe28de81548 -r b75cf70d2a7c DOCS/cd-dvd.html --- a/DOCS/cd-dvd.html Sun Oct 27 10:43:38 2002 +0000 +++ b/DOCS/cd-dvd.html Sun Oct 27 15:36:33 2002 +0000 @@ -60,54 +60,173 @@

4.2 DVD playback

+

For the complete list of available options, please read the man page.

+ +

New-style DVD support (mpdvdkit2)

+

MPlayer uses libdvdread and libdvdcss for DVD decryption and playback. These two libraries are contained in the libmpdvdkit2/ subdirectory of the MPlayer source tree, you do not have to install them separately. We opted for this solution because - we had to fix a libdvdread bug, and apply a patch which adds - cracked CSS keys caching support to libdvdcss. This results in a large - speed increase because the keys do not have to be cracked every time before - playing. The cracked keys are stored in the - ~/.mplayer/DVDKeys directory.

+ we had to fix a libdvdread bug, and apply a patch which adds cracked CSS + keys caching support to libdvdcss. This results in a large speed increase + because the keys do not have to be cracked every time before playing.

MPlayer can also use system-wide libdvdread and libdvdcss libraries, but this solution is not recommended, as it can result in bugs, library incompatibilities, and slower speed.

-

Support for DVD navigation via dvdnav is being worked on, but - not finished yet.

+

DVD Navigation support (dvdnav)

+ +

Support for DVD navigation via dvdnav was being worked on, but + it was never finished properly and is therefore not recommended.

Old-style DVD support - OPTIONAL

-

Useful if you want to play encoded VOBs from hard disk. Compile and +

Useful if you want to play encoded VOBs from hard disk. Compile and install libcss 0.0.1 (not newer) for this (If MPlayer fails to - detect it, use the -csslib /path/to/libcss.so option).

+ detect it, use the -csslib /path/to/libcss.so option). You need + to be root or use a suid root binary to use it.

+ +

DVD structure

+ +

DVD disks use all 2048 b/s sectors with ecc/crc. They usually have an UDF +filesystem on a single track, containing various files (small .IFO and .BUK +files and big (1GB) .VOB files). They are real files and can be copied/played +from a mounted file system of an unencrypted DVD.

+ +

The .IFO files contain the movie navigation informations (chapter/title/angle +map, language table, etc) and is needed to read and interpret the .VOB content +(movie). The .BUK files are backups of them. They use sectors everywhere, +so you need to use raw addressing of sectors of the disc to implement DVD +navigation. It's also needed to decrypt the content.

+ +

The whole old-style DVD support with libcss needs therefore a mounted DVD +filesystem and a raw sector-based access to the device. Unfortunately you must +be root (under Linux) to get the sector address of a file. You got two choices:

+ + + +

Sometimes /dev/dvd can't be read by users, so the libdvdread authors +implemented an emulation layer which transfers sector addresses to +filenames+offsets, to emulate raw access on the top of a mounted filesystem +or even on a hard disk.

+ +

libdvdread even accepts the mountpoint instead of the device name for raw +access and checks in /proc/mounts to get the device name. It was +developed for Solaris, where device names are dynamically allocated.

+ +

The default DVD device is /dev/dvd. If your setup differs, +make a symlink, or specify the correct device on the command line with the +-dvd-device option.

+ +

DVD authentication

-

For the complete list of available options, please read the man page.

+

The authentication and decryption method of the new-style DVD support is done + using a patched libdvdcss (see above). The method can be specified over the + environment variable DVDCSS_METHOD which can be set to + key, disk or title.

+ +

If nothing is specified it tries the following methods + (default: key, title request):

+ +
    +
  1. bus key: This key is negotiated during authentication (a long mix + of ioctls and various key exchanges, crypto stuff) and is used to encrypt + the title and disk keys before sending them over the unprotected bus + (to prevent eavesdropping). The bus key is needed to get and predecrypt the + crypted disk key. +
  2. cached key: MPlayer looks for eventually already cracked + title keys which are stored in the ~/.mplayer/DVDKeys directory + (fast ;).
  3. +
  4. key: If no cached key is available, MPlayer tries to + decrypt the disk key with a set of included player keys. +
  5. disk: If the key method fails (e.g. no included player keys), + MPlayer will crack the disk key using a brute force algorithm. + This process is CPU intensive and requires 64 MB of memory (16M 32bit + entries hash table) to store temporary data. This method should always + work (slow).
  6. +
  7. title request:With the disk key MPlayer requests the crypted title + keys, which are inside hidden sectors using ioctl(). + The region protection of RPC-2 drives is performed in this step and may + fail on such drives. If it succeeds, the title keys will be decrypted with + the bus and disk key. +
  8. title: This method is used if the title request failed and does + not rely on any key exchange with the DVD drive. It uses a crypto attack to + guess the title key directly (by finding a repeating pattern in the + decrypted VOB content and guessing that that the plain text for first + encrypted bytes are a continuation of that pattern). + The method is also known as "known plaintext attack" or "DeCSSPlus". + In rare cases this may fail because there is not enough encrypted data on + the disk to perform a statistical attack or because the key changes in the + middle of a title. On the other hand it is the only way to decrypt a DVD + stored on a hard disk or a DVD with the wrong region on an RPC2 drive + (slow).
  9. +
+ +

RPC-1 DVD drives only protect region settings over software DVD players. + RPC-2 drives have a hardware protection that allows 5 changes only. It might + be needed/recommended to upgrade the firmware to RPC-1 if you have a RPC-2 DVD + drive. Firmware upgrades can be found + here. If there is + no firmware upgrade available for your device, use the + regionset + tool to set the region code of your DVD-drive (under Linux). + Warning: You can only set the region 5 times.

4.3 VCD playback

-

Playing standard Video CDs:

- -

mplayer -vcd <track> [-cdrom-device device]

+

For the complete list of available options, please read the man page. +The Syntax for a standard Video CD (VCD) is as followed: +mplayer -vcd <track> [-cdrom-device <device>].
+Example: mplayer -vcd 2 -cdrom-device /dev/hdc

-

Examples:
- mplayer -vcd 1
- mplayer -fs -vcd 2 -cdrom-device /dev/hdc

+

VCD structure

-Notes: +

VCD disks consists of 2 or more track:

+ +

About .DAT files:

+ +

The ~600 MB file visible on the first track of the mounted vcd isn't a real +track! It's a so called iso gateway, created to allow Windows to handle such +tracks (Windows doesn't allow raw device access to applications at all). +Under linux, you cannot copy or play such files (they contain garbage). +Under Windows it is possible as its iso9660 driver emulates the raw reading of +tracks in this file. +To play a .DAT file you need a kernel driver which can be found on a powerdvd +Linux version. It is a modified iso9660 fs driver, which is able to emulate the +raw tracks through this shadow .DAT file. If you mount the disc using their +driver, you can copy and even play .DAT files with mplayer. But it won't +work with the standard iso9660 driver of the kernel! It is recommended to +use the -vcd option instead.

+ +

The default VCD device is /dev/cdrom. If your setup differs, +make a symlink, or specify the correct device on the command line with the +-cdrom-device option.

+