Reviewed and reworked (again), added some information about SCSI CD-ROMs.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8555 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
diego 2002-12-24 18:28:11 +00:00
parent df6a2a559a
commit 5929c7c835
1 changed files with 95 additions and 80 deletions

View File

@ -19,15 +19,15 @@
make you consider changing the speed of a CD-ROM drive:</P> make you consider changing the speed of a CD-ROM drive:</P>
<UL> <UL>
<LI>There have been reports of read errors at these high speeds, especially <LI>There have been reports of read errors at high speeds, especially
with badly pressed CD-ROMs. Reducing the speed can prevent data loss under with badly pressed CD-ROMs. Reducing the speed can prevent data loss under
these circumstances.</LI> these circumstances.</LI>
<LI>Many CD-ROM drives are annoyingly loud, a lower speed may reduce the <LI>Many CD-ROM drives are annoyingly loud, a lower speed may reduce the
noise.</LI> noise.</LI>
</UL> </UL>
<P>You can reduce the drive speed with hdparm or a program called setcd. <P>You can reduce the speed of IDE CD-ROM drives with <CODE>hdparm</CODE> or a
It works like this:</P> program called <CODE>setcd</CODE>. It works like this:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [speed] [cdrom device]</CODE></P> <P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [speed] [cdrom device]</CODE></P>
@ -44,16 +44,21 @@
<P>This sets prefetched file reading to 2MB, which helps with scratched CD-ROMs. <P>This sets prefetched file reading to 2MB, which helps with scratched CD-ROMs.
If you set it to too high, the drive will continuously spin up and down, and If you set it to too high, the drive will continuously spin up and down, and
will dramatically decrease the performance. will dramatically decrease the performance.
It is recommended that you also tune your CD-ROM drive with hdparm:</P> It is recommended that you also tune your CD-ROM drive with
<CODE>hdparm</CODE>:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P> <P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P>
<P>This enables DMA access, read-ahead, and IRQ unmasking (read the hdparm man <P>This enables DMA access, read-ahead, and IRQ unmasking (read the
page for a detailed explanation).</P> <CODE>hdparm</CODE> man page for a detailed explanation).</P>
<P>Please refer to "<CODE>/proc/ide/[cdrom device]/settings</CODE>" for <P>Please refer to "<CODE>/proc/ide/[cdrom device]/settings</CODE>" for
fine-tuning your CD-ROM.</P> fine-tuning your CD-ROM.</P>
<P>SCSI drives do not have a uniform way of setting these parameters (Do you
know one? Tell us!) There is a tool that works for
<A HREF="http://das.ist.org/~georg/">Plextor SCSI drives</A>.</P>
<P>FreeBSD:</P> <P>FreeBSD:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;Speed: <CODE>cdcontrol [-f device] speed [speed]</CODE></P> <P>&nbsp;&nbsp;&nbsp;&nbsp;Speed: <CODE>cdcontrol [-f device] speed [speed]</CODE></P>
@ -70,18 +75,20 @@
DVD decryption and playback. These two libraries are contained in the DVD decryption and playback. These two libraries are contained in the
<CODE>libmpdvdkit2/</CODE> subdirectory of the MPlayer source tree, you <CODE>libmpdvdkit2/</CODE> subdirectory of the MPlayer source tree, you
do not have to install them separately. We opted for this solution because 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 <B>cracked CSS we had to fix a <CODE>libdvdread</CODE> bug and apply a patch which adds
keys caching support</B> to libdvdcss. This results in a large speed increase <B>cracked CSS keys caching support</B> to libdvdcss. This results in a large
because the keys do not have to be cracked every time before playing.</P> speed increase because the keys do not have to be cracked every time before
playing.</P>
<P>MPlayer can also use system-wide <CODE>libdvdread</CODE> and <P>MPlayer can also use system-wide <CODE>libdvdread</CODE> and
<CODE>libdvdcss</CODE> libraries, but this solution is <B>not</B> recommended, <CODE>libdvdcss</CODE> libraries, but this solution is <B>not</B> recommended,
as it can result in bugs, library incompatibilities, and slower speed.</P> as it can result in bugs, library incompatibilities and slower speed.</P>
<H4>DVD Navigation support (dvdnav)</H4> <H4>DVD Navigation support (dvdnav)</H4>
<P>Support for DVD navigation via <CODE>dvdnav</CODE> was being worked on, but <P>Support for DVD navigation via <CODE>dvdnav</CODE> was being worked on, but
it was never finished properly and is therefore <B>not recommended</B>!</P> it was never finished properly and it is currently unmaintained. Who knows, it
might even compile.</P>
<H4>Old-style DVD support - OPTIONAL</H4> <H4>Old-style DVD support - OPTIONAL</H4>
@ -93,40 +100,40 @@
<H4>DVD structure</H4> <H4>DVD structure</H4>
<P>DVD disks use all 2048 b/s sectors with ecc/crc. They usually have an UDF <P>DVD disks have 2048 bytes per sector with ECC/CRC. They usually have an UDF
filesystem on a single track, containing various files (small .IFO and .BUK 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 files and big (1GB) .VOB files). They are real files and can be copied/played
from a mounted file system of an unencrypted DVD.</P> from the mounted filesystem of an unencrypted DVD.</P>
<P>The .IFO files contain the movie navigation informations (chapter/title/angle <P>The .IFO files contain the movie navigation information (chapter/title/angle
map, language table, etc) and is needed to read and interpret the .VOB content map, language table, etc) and are needed to read and interpret the .VOB
(movie). The .BUK files are backups of them. They use <B>sectors</B> everywhere, content (movie). The .BUK files are backups of them. They use <B>sectors</B>
so you need to use raw addressing of sectors of the disc to implement DVD everywhere, so you need to use raw addressing of sectors of the disc to
navigation. It's also needed to decrypt the content.</P> implement DVD navigation or decrypt the content.</P>
<P>The whole old-style DVD support with libcss needs therefore a mounted DVD <P>The whole old-style DVD support with <CODE>libcss</CODE> therefore needs a mounted DVD
filesystem and a raw sector-based access to the device. Unfortunately you must filesystem and raw sector-based access to the device. Unfortunately you must
be root (under Linux) to get the sector address of a file. You got the (under Linux) be root to get the sector address of a file. You have the
following choices:</P> following choices:</P>
<UL> <UL>
<LI>Force the user to be root or use a suid-root mplayer binary.</LI> <LI>Be root or use a suid-root mplayer binary.</LI>
<LI>Let MPlayer call the suid-root fibmap_mplayer wrapper program to access <LI>Let MPlayer call the suid-root fibmap_mplayer wrapper program to access
the DVD (used in the old-style DVD playback over libcss).</LI> the DVD (used in the old-style DVD playback over <CODE>libcss</CODE>).</LI>
<LI>Don't use the kernel's filesystem driver at all and re-implement it in <LI>Don't use the kernel's filesystem driver at all and reimplement it in
userspace. libdvdread 0.9.x and libmpdvdkit does this (New-style DVD userspace. <CODE>libdvdread</CODE> 0.9.x and <CODE>libmpdvdkit</CODE> do this (new-style DVD
support). The kernel udf filesystem drivers isn't needed as they already support). The kernel UDF filesystem driver is not needed as they already
have their own, built-in udf fs driver. Also the dvd, doesn't needs to be have their own builtin UDF filesystem driver. Also the DVD does not have to
mounted as only the raw sector-based access is used.</LI> be mounted as only the raw sector-based access is used.</LI>
</UL> </UL>
<P>Sometimes /dev/dvd can't be read by users, so the libdvdread authors <P>Sometimes <CODE>/dev/dvd</CODE> cannot be read by users, so the <CODE>libdvdread</CODE>
implemented an emulation layer which transfers sector addresses to authors implemented an emulation layer which transfers sector addresses to
filenames+offsets, to emulate raw access on the top of a mounted filesystem filenames+offsets, to emulate raw access on top of a mounted filesystem
or even on a hard disk.</P> or even on a hard disk.</P>
<P>libdvdread even accepts the mountpoint instead of the device name for raw <P><CODE>libdvdread</CODE> even accepts the mountpoint instead of the device name for raw
access and checks in <CODE>/proc/mounts</CODE> to get the device name. It was access and checks <CODE>/proc/mounts</CODE> to get the device name. It was
developed for Solaris, where device names are dynamically allocated.</P> developed for Solaris, where device names are dynamically allocated.</P>
<P>The default DVD device is <CODE>/dev/dvd</CODE>. If your setup differs, <P>The default DVD device is <CODE>/dev/dvd</CODE>. If your setup differs,
@ -136,8 +143,8 @@
<H4>DVD authentication</H4> <H4>DVD authentication</H4>
<P>The authentication and decryption method of the new-style DVD support is done <P>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 using a patched <CODE>libdvdcss</CODE> (see above). The method can be specified through the
environment variable <CODE>DVDCSS_METHOD</CODE> which can be set to environment variable <CODE>DVDCSS_METHOD</CODE>, which can be set to
<CODE>key</CODE>, <CODE>disk</CODE> or <CODE>title</CODE>.</P> <CODE>key</CODE>, <CODE>disk</CODE> or <CODE>title</CODE>.</P>
<P>If nothing is specified it tries the following methods <P>If nothing is specified it tries the following methods
@ -149,14 +156,14 @@
the title and disk keys before sending them over the unprotected bus 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 (to prevent eavesdropping). The bus key is needed to get and predecrypt the
crypted disk key.</LI> crypted disk key.</LI>
<LI><B>cached key:</B> MPlayer looks for eventually already cracked <LI><B>cached key:</B> MPlayer looks for already cracked
title keys which are stored in the <CODE>~/.mplayer/DVDKeys</CODE> directory title keys which are stored in the <CODE>~/.mplayer/DVDKeys</CODE> directory
(fast ;).</LI> (fast ;).</LI>
<LI><B>key:</B> If no cached key is available, MPlayer tries to <LI><B>key:</B> If no cached key is available, MPlayer tries to
decrypt the disk key with a set of included player keys.</LI> decrypt the disk key with a set of included player keys.</LI>
<LI><B>disk:</B> If the key method fails (e.g. no included player keys), <LI><B>disk:</B> If the key method fails (e.g. no included player keys),
MPlayer will crack the disk key using a brute force algorithm. MPlayer will crack the disk key using a brute force algorithm.
This process is CPU intensive and requires 64 MB of memory (16M 32bit This process is CPU intensive and requires 64 MB of memory (16M 32Bit
entries hash table) to store temporary data. This method should always entries hash table) to store temporary data. This method should always
work (slow).</LI> work (slow).</LI>
<LI><B>title request:</B> With the disk key MPlayer requests the crypted title <LI><B>title request:</B> With the disk key MPlayer requests the crypted title
@ -167,72 +174,80 @@
<LI><B>title:</B> This method is used if the title request failed and does <LI><B>title:</B> 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 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 guess the title key directly (by finding a repeating pattern in the
decrypted VOB content and guessing that that the plain text for first decrypted VOB content and guessing that the plain text corresponding to the
encrypted bytes are a continuation of that pattern). first encrypted bytes is a continuation of that pattern).
The method is also known as "known plaintext attack" or "DeCSSPlus". 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 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 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 middle of a title. This method is the only way to decrypt a DVD stored on a
stored on a hard disk or a DVD with the wrong region on an RPC2 drive hard disk or a DVD with the wrong region on an RPC2 drive (slow).</LI>
(slow).</LI>
</OL> </OL>
<P>RPC-1 DVD drives only protect region settings over software DVD players. <P>RPC-1 DVD drives only protect region settings through software.
RPC-2 drives have a hardware protection that allows 5 changes only. It might 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 be needed/recommended to upgrade the firmware to RPC-1 if you have a RPC-2 DVD
drive. Firmware upgrades can be found drive. Firmware upgrades can be found on this
<A HREF="http://perso.club-internet.fr/farzeno/firmware/">here</A>. If there is <A HREF="http://www.firmware-flash.com">firmware page</A>. If there is
no firmware upgrade available for your device, use the no firmware upgrade available for your device, use the
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset <A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset
tool</A> to set the region code of your DVD-drive (under Linux). tool</A> to set the region code of your DVD drive (under Linux).
<B>Warning:</B> You can only set the region 5 times.</P> <B>Warning:</B> You can only set the region 5 times.</P>
<H2><A NAME="vcd">4.3 VCD playback</A></H2> <H2><A NAME="vcd">4.3 VCD playback</A></H2>
<P>For the complete list of available options, please read the man page. <P>For the complete list of available options, please read the man page.
The Syntax for a standard Video CD (VCD) is as followed: The Syntax for a standard Video CD (VCD) is as follows:</P>
<CODE>mplayer -vcd &lt;track&gt; [-cdrom-device &lt;device&gt;]</CODE>.<BR>
Example: <CODE>mplayer -vcd 2 -cdrom-device /dev/hdc</CODE></P> <P><CODE>mplayer -vcd &lt;track&gt; [-cdrom-device &lt;device&gt;]</CODE></P>
<P>Example: <CODE>mplayer -vcd 2 -cdrom-device /dev/hdc</CODE></P>
<P>The default VCD device is <CODE>/dev/cdrom</CODE>. If your setup differs,
make a symlink or specify the correct device on the command line with the
<CODE>-cdrom-device</CODE> option.</P>
<P><B>Note:</B> At least Plextor and some Toshiba SCSI CD-ROM drives have
horrible performance reading VCDs. This is because the the CDROMREADRAW ioctl
is not fully implemented for these drives. If you have some knowledge of SCSI
programming, please <A HREF="tech/patches.txt">help us</A> implement generic
SCSI support for VCDs.</P>
<H4>VCD structure</H4> <H4>VCD structure</H4>
<P>VCD disks consists of 2 or more track:</P> <P>VCD disks consist of one or more tracks:</P>
<UL> <UL>
<LI>The first track is a few MB 2048 bytes/sector data track, with an iso9660 <LI>The first track is a small 2048 bytes/sector data track with an iso9660
filesystem, usualy containing win32 VCD player programs and maybe other infos filesystem, usually containing Windows VCD player programs and maybe other
(jpegs, text, etc).</LI> information (images, text, etc).</LI>
<LI>The second and other tracks are raw 2324 bytes/sector mpeg tracks, without <LI>The second and other tracks are raw 2324 bytes/sector MPEG (movie) tracks,
any filesystem but raw mpeg ps data, one packet per sector. they contain the containing one MPEG PS data packet per sector instead of a filesystem.
movie(s)... The tracks <B>can't be mounted</B>! It is similar to audio Similar to audio CD tracks, these tracks <B>cannot be mounted</B> (Did you
tracks (e.g. You never mounted an audio cd to play it, or did you? No). ever mount an audio CD to play it?). As most movies are inside this track,
As most movies are inside track too, you should try <CODE>-vcd 2</CODE> you should try <CODE>-vcd 2</CODE> first.</LI>
first.</LI> <LI>There exist VCD disks without the first track (single track and no
<LI>There exist VCD disks without the first track too (single track and no filesystem at all). They are still playable, but cannot be mounted.</LI>
filesystems at all). They are still playable, but can't be mounted.</LI>
</UL> </UL>
<P>About .DAT files:</P> <H4>About .DAT files:</H4>
<P>The ~600 MB file visible on the first track of the mounted vcd isn't a real <P>The ~600 MB file visible on the first track of the mounted VCD is not a real
file! It's a so called iso gateway, created to allow Windows to handle such file! It is a so called ISO gateway, created to allow Windows to handle such
tracks (Windows doesn't allow raw device access to applications at all). tracks (Windows does not allow raw device access to applications at all).
Under linux, you cannot copy or play such files (they contain garbage). Under Linux you cannot copy or play such files (they contain garbage). Under
Under Windows it is possible as its iso9660 driver emulates the raw reading of 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 tracks in this file. To play a .DAT file you need the kernel driver which can
found in the Linux version of PowerDVD. It has a modified iso9660 filesystem be found in the Linux version of PowerDVD. It has a modified iso9660
(vcdfs/isofs-2.4.X.o) driver, which is able to emulate the filesystem (<CODE>vcdfs/isofs-2.4.X.o</CODE>) driver, which is able to emulate
raw tracks through this shadow .DAT file. If you mount the disc using their the raw tracks through this shadow .DAT file. If you mount the disc using
driver, you can copy and even play .DAT files with mplayer. But it <B>won't their driver, you can copy and even play .DAT files with mplayer. But it
work</B> with the standard iso9660 driver of the kernel! It is recommended to <B>will not work</B> with the standard iso9660 driver of the Linux kernel!
use the <CODE>-vcd</CODE> option instead. Alternate options for VCD copy are Use the <CODE>-vcd</CODE> option instead. Alternatives for VCD copying are
the new cdfs kernel driver (shows CD <I>sessions</I> as image files) and the new <A HREF="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</A> kernel
cdrdao (a bit-to-bit cd grabber/copier application).</P> driver (not part of the official kernel) that shows CD <I>sessions</I>
as image files and <A HREF="http://cdrdao.sourceforge.net/">cdrdao</A>, a
<P>The default VCD device is <CODE>/dev/cdrom</CODE>. If your setup differs, bit-by-bit CD grabbing/copying application.</P>
make a symlink, or specify the correct device on the command line with the
<CODE>-cdrom-device</CODE> option.</P>
</BODY> </BODY>
</HTML> </HTML>