Linux documentation excerpt:
Modern CD-ROM drives can attain very high head speeds, yet some CD-ROM drives are capable of running at reduced speeds. There are several reasons that might make you consider changing the speed of a CD-ROM drive:
You can reduce the drive speed with hdparm or a program called setcd. It works like this:
hdparm -E [speed] [cdrom device]
setcd -x [speed] [cdrom device]
You can also try
echo current_speed:4 > /proc/ide/[cdrom device]/settings
but you will need root privileges. The following command may also help:
echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings
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 will dramatically decrease the performance. It is recommended that you also tune your CD-ROM drive with hdparm:
hdparm -d1 -a8 -u1 (cdrom device)
This enables DMA access, read-ahead, and IRQ unmasking (read the hdparm man page for a detailed explanation).
Please refer to "/proc/ide/[cdrom device]/settings
" for
fine-tuning your CD-ROM.
FreeBSD:
Speed: cdcontrol [-f device] speed [speed]
DMA: sysctl hw.ata.atapi_dma=1
For the complete list of available options, please read the man page.
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.
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
was being worked on, but
it was never finished properly and is therefore not recommended!
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). To use it,
you need to be root, use a suid root MPlayer binary or let MPlayer call the
suid-root fibmap_mplayer wrapper program.
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 the following 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.
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):
~/.mplayer/DVDKeys
directory
(fast ;).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.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.
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
VCD disks consists of 2 or more track:
-vcd 2
first.About .DAT files:
The ~600 MB file visible on the first track of the mounted vcd isn't a real
file! 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 in the Linux version of PowerDVD. It has a modified iso9660 filesystem
(vcdfs/isofs-2.4.X.o) 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. Alternate options for VCD copy are
the new cdfs kernel driver (shows CD sessions as image files) and
cdrdao (a bit-to-bit cd grabber/copier application).
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.