intf-cdda.txt
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:17k
- This file documents the ``Extended'' VLC CD-DA Plugin
- Copyright (C) 2003, 2004 Rocky Bernstein (rocky@panix.com)
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.1 or
- any later version published by the Free Software Foundation; with the
- Invariant Sections being ``Free Software'' and ``Free Software Needs
- Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
- and with the Back-Cover Texts as in (a) below.
- (a) The Free Software Foundation's Back-Cover Text is: ``You have
- freedom to copy and modify this GNU Manual, like GNU software. Copies
- published by the Free Software Foundation raise funds for GNU
- development.''
- - - - - - -
- Features over the older VLC CD-DA plugin
- Internally I think this is much much cleaner. It uses the
- libcdio for disk reading and libcddb to get CDDB information.
- MRL handling:
- - Can specify device as well as track.
- - Because we use the libcdio library, the "device" can be a disk image
- to be burned (e.g. a cdrdao bin/cue pair and some primitive Nero
- support)
- Features:
- - Can customize the what to show in the play-list title and author.
- - Duration of each track is shown
- - Media information is shown using CDDB
- - Dynamic debugging
- - Will scan for a CD-ROM drive with a CD-DA loaded in it.
- -----------------------------------------------------------------
- General Info
- -----------------------------------------------------------------
- Much of what I write in this section can be found elsewhere. See for
- example http://www.pctechguide.com/08cd-rom.htm, or the libcdio
- documentation.
- The Sony and Philips Corporations invented and Compact Disc (CD) in
- the early 1980s. The specifications for the layout is often referred
- to by the color of the cover on the specification.
- The first type of CD specification that was produced was the Compact
- Disc Digital Audio (CD-DA) or just plain ``audio CD'' and is commonly
- called the ``Red Book''. Music CD's are recorded in this format which
- basically allows for around 74 minutes of audio per disc and for that
- information to be split up into *tracks*. Tracks are broken up into
- "sectors" and each sector contains 2,352 bytes. To play one 44.1 kHz
- CD-DA sampled audio second, 75 sectors are used.
- A CD can hold at most 99 such tracks. Between the tracks CD
- specifications require a ``2 second'' in gap (called a @term{lead-in
- gap}. This is unused space with no ``data'' similar to the space
- between tracks on an old phonograph. The word ``second'' here really
- refers to a measure of space and not really necessarily an amount of
- time. However in the special case here where you have an audio CD, the
- amount of time to play a gap of this size will take 2 seconds. Note
- this is independent of how fast your CD drive can read a sector.
- The beginning (or inner edge) of the CD is supposed to have a ``2
- second'' lead-in gap and there is supposed to be another ``2 second''
- *lead-out* gap at the end (or outer edge) of the CD.
- CD-DA ``Red Book'' Specification
- One can create and then write or "burn" a CD in the CD-DA format
- and in this process sometimes one writes the bytes that will appear as
- a file on a hard disk. This is called a "CD disk image". This
- plugin may be able to play this file just the same as if it were
- burned onto a CD.
- As there are a number of CD-burning programs, there are a number of
- CD-image formats. This plugin uses libcdio which currently understands
- the BIN/CUE disk-image format used by a popular DOS/Window mastering
- tool and a limited subset of the proprietary and unpublished form at
- used by the Nero burning software. Over time however perhaps more
- disk-image formats will be recognized.
- Audio CD Identification Information (CDDB)
- The Philips Red-Book specification allows for a Compact Disc to have a
- Media Catalog Number or MCN written on it, and probably this
- was how they CD's would be identified. Alas, very few audio discs
- actually have a Medium Catalog Number on the box, and the way the code
- is written on CD is *not* uniform across all discs!
- However the listening community wanted a way to identify an audio CD,
- so a database of CD information was gathered by basically making a
- ``signature'' or hash from the number of tracks on a disk and a
- checksum of the bytes of the tracks. This is referred to as CDDB
- information. Using the hash the database gives information about the
- titles of the tracks, the CD album name, year it was published and so
- on. This plugin has the ability to show this information courtesy of
- libcddb written by Kris Verbeeck.
- -----------------------------------------------------------------
- MRLS:
- -----------------------------------------------------------------
- the vlc CD-DA plugin, identifies itself in the vlc GUI as CDDAX. It
- also registers itelf to handle a class of MRL's that start with
- cddax://.
- The CDDAX MRL takes the following form:
- cddax://[path to file or CD-DA device][@[Tt]number]]
- A simple cddax:// runs the default item: track 1 using the default CD
- device (perhaps /dev/cdrom). The default default device is
- user-configurable.
- It is however also possible to specify both Compact Disc device/filename
- and item explicitly in the MRL.
- For example cddax://dev/cdrom2 specifies using device /dev/cdrom2 which
- might useful if as I have /dev/cdrom is a burner and the /dev/cdrom2
- is a read-only device. And cddax://test_cdda.cue specifies the
- "cuesheet" file for a CD-DA image on disk created say with cdrdao.
- (test_cdda.bin is the corresponding bin file, but using that won't
- work.)
- After the optional device name or file name, you can name the track
- number unit which preceded by a @ or an @ and T in either case. A MRL
- which ends in an @ is like not adding it at all.
- Some examples of MRLS are given below. In the examples, we assume the
- following configuration setting:
- cdda.default_device:/dev/cdrom
- cddax:// - track 1 of device: /dev/cdrom
- cddax://@ - same as above
- cddax:///dev/cdrom - probably same as above
- cddax:///dev/cdrom2 - track 1 of /dev/cdrom2
- cddax:///dev/cdrom2@ - same as above
- cddax://dev/cdrom2@53 - track 53 from /dev/cdrom2
- cddax://dev/cdrom2@T53 - Same as above
- cddax://dev/cdrom2@t53 - Same as above
- cddax://@2 - track 2 from default device
- cddax://3 - track 3 from default device
- cddax:///tmp/ntsc.cue - track 1 from /tmp/ntsc.bin, (a bin/cue
- disk image)
- cddax:///tmp/ntsc.cue@ - same as above
- cddax://tmp/ntsc.cue@ - track 1 of tmp/ntsc.bin. NOT the
- the same as above unless the cwd is /.
- cddax://ntsc.nrg - track 1 of ntsc.nrg (a nero disk image)
- cddax://tmp/ntsc.nrg@5 - track 5 of /tmp/ntsc.nrg
- Bad MRL's
- cddax://@x - x is not a number
- cddax/tmp - no colon
- cddax:/ - must start cddax://
- -----------------------------------------------------------------
- Configuration settings:
- -----------------------------------------------------------------
- Configuration settings in vlc are generally put in ~/.vlc/vlcrc. A
- description of the ones specific to CDDAX are listed below.
- - -
- cddax-cddb-title-format
- This gives a format used in the playlist title string when CDDB is consulted.
- Similar to the Unix date command, there are format specifiers
- that start with a percent sign for which various information is filled
- in dynamically. The control specifiers are given as below
- %a : The album artist
- %A : The album information
- %C : Category
- %I : CDDB disk ID
- %G : Genre
- %M : The current MRL
- %m : The CD-DA Media Catalog Number (MCN)
- %n : The number of tracks on the CD
- %p : The artist/performer/composer in the track
- %T : The track number
- %s : Number of seconds in this track
- %t : The name
- %Y : The year 19xx or 20xx
- %% : a %
- The default is
- Track %T. %t - %p
- - -
- cddax-title-format
- This gives a format used in the playlist title string when CDDB is
- *NOT* consulted. Similar to the Unix date command, there are format
- specifiers that start with a percent sign for which various
- information is filled in dynamically. The control specifiers are
- given as below
- %M : The current MRL
- %m : The CD-DA Media Catalog Number (MCN)
- %n : The number of tracks on the CD
- %T : The track number
- %s : Number of seconds in this track
- %% : a %
- The default is
- %T %M
- - -
- cddax-cddb-email
- # email given on cddb requests
- # string, default: me@home
- - -
- cddax-cddb-enabled
- # Do we use CDDB to retrieve CD information?
- # bool, default: 1
- - -
- cddax-cddb-http
- # Contact CDDB via the HTTP protocol?
- # bool, default: 0
- - -
- cddax-cddb-port
- # numeric, default: 8880
- - -
- cddax-cddb-server
- # The server CDDB contacts to get CD info
- # string, default: freedb.freedb.org
- - -
- cddax-debug
- An integer (interpreted as a bit mask) which shows additional
- debugging information see the section below on debugging for more
- information about the bits that can be set.
- - -
- cddax-device
- What to use if no drive specified. If null, we'll scan for CD
- drives with a CD-DA loaded in it.
- # string, default:
- -----------------------------------------------------------------
- Troubleshooting Guide
- -----------------------------------------------------------------
- This gives higher-level troubleshooting. More detailed and
- lower-level information is given in the next section DEBUGGING.
- Problem: something doesn't work. Start at step -1.
- Problem: The program gets a SEGFAULT or gives core dump. Start at step
- 0.
- Problem: I don't get anything playing. I can't even get a playlist of
- the CD.
- Determination: start at step 1.
- Problem: Okay, I something plays menu now. But I don't see information
- about the CD in the playlist.
- Determination: start at step 5.
- -1. (Something doesn't work.)
- A lot of what is put here really is applicable to reporting
- problems and troubleshooting in vlc and the concepts really
- apply to any sort of bug reporting.
- When reporting a problem it's helpful to have facts:
- a) the version of vlc) you are using
- b) the OS you are running on
- c) the version of libcdio and/or libcddb you are using
- versions of libcdio and libcddb can be obtained by running
- pkg-config --modversion libcdio
- pkg-config --modversion libcddb
- d) what you input or requested (e.g. the full command line entered -
- if it is possible to reproduce the problem by giving a
- commandline that is desirable since it is probably the simplest
- way to convey exactly what was requested)
-
- People often give (some part) of an error message neglecting
- to also include what was requested or entered that led to the
- output.
- e) The setting for this plugin. That is the values of the
- variables that start cddax- listed above. On Unix this can
- generally be found in ~/.vlc/vlcrc
-
- f) Exactly the messages that were what given. You can turn
- increase the verbosity level by setting "verbosity=2" in the
- vlc preferences files. On Unix the preferences file is
- generally in ~/vlc/.vlcrc but there are GUI ways to set this
- too. Give everything that is in the message log.
- 0. (The program gets a SEGFAULT or gives core dump.)
- Get and send a stack trace.
- In addition to -1. Make sure the program has been compiled with
- debugging symbols put into the code. This is usually done by having
- the "-g" flag set when compiling the program.
- You can get a strack trace the GNU debugger using the "where"
- command. For example on this might work:
- gdb vlc *name-of-corefile*
- where
- 1. (I don't get anything playing. I can't even get a playlist of
- the CD.)
- Do you even have the plugin loaded?
- When you run the vlc GUI, under Settings/Preferences you should see
- a "plugins" expandable list and under that another "access" list do
- you see a expandable entry under "access" labeled "cddax"? If so,
- skip on to step 2.
- a) If no "cddax" expandable list, then the CDDAX plugin isn't
- loaded. Does a shared object exist? The plugin shared object is
- called "libcddax_plugin.so" It should be in the directory that has
- ...vlc/access. If this isn't around you need to build and install
- the CDDAX plugin.
- b) if libcddax_plugin.so is in the filesystem, there might be a
- loader error; perhaps libcdio is not installed or
- are the wrong version. Use ldd on the file to see that it has all
- of the libraries dependencies satisfied. Also you might be able
- check if there was an attempt to load it by tracking system
- calls. On Linux and other OS's) "strace" can be used to see if the
- file gets accessed. On Solaris use "truss".
- For example on Linux, among the many line of output when I run
- "strace -e trace=file vlc" I see this along with a lot of other
- output:
- ...
- stat64("/usr/local/lib/vlc/access/libcddax_plugin.so", {st_mode=S_IFREG|0755, st_size=238921, ...}) = 0
- open("/usr/local/lib/vlc/access/libcddax_plugin.so", O_RDONLY) = 5
- The parameters inside the calls may be different depending on where
- vlc is installed and what release is installed. If the the file is
- found and "opened",
-
- There may also be a message may under "setup/logs".
- 2. (There plugin was loaded and preferences found.) In the "cddax" tab
- of preference. An important selection is "cddax-device." If this is
- set to the empty string, CDDAX will try to scan your drives for a
- suitable device if the driver has the capability to scan for
- drives. However you can set the device to something of your
- choosing. On GNU/Linux, this may be "/dev/cdrom" and on Solaris it
- may be "/vol/dev/aliases/cdrom0". If you set this field, make sure
- these are correct for your particular setup. For example, I
- generally play out of the DVD device and this is called /dev/dvd
- rather than /dev/cdrom.
- 3. (CD-DA Setup devices seems correct and there is a CD in the
- drive.) Bring up the playlist. If you specified only a drive and
- no track, you should see in the playlist a list of tracks on the CD.
-
- a. If not something's wrong like step 2. Another tack may be to try
- to read a disk image of a CD and thus eliminate any problems with
- hardware. If this works, then this is a hardware problem.
- 4. (You have a list of entries describing the CD-DA or disk-file of
- a CD-DA image.)
- There should be at least one "track" listed for the CD-DA and track
- 1 will end with the digit 1. If there are NO tracks listed then
- there may be a problem with the that particular medium. So as in
- step 3 you can try a known good sample and perhaps burn a CD from
- that.
- 5. <<Fill in info about CDDB hacking>>
- -----------------------------------------------------------------
- Debugging
- -----------------------------------------------------------------
- **General vlc debugging...
- Before delving to things specific to this plugin, some preparation may
- be in order. You'll probably want to configure vlc with "--enable-debug".
- plugin with debug information. Instead of "make'ing" with "make", use
- "make debug" and instead of installing using "make install" use "make
- install-debug".
- I use gdb to debug. Debugging vlc with the entire suite of plugins
- under gdb is slow because it has to read in symbol tables from all the
- plugins. There are two ways to make loading faster when debugging. The
- simplest is just to go to the plugin directory and remove unused
- plugins. Another approach is create a new directory and make
- (symbolic) links into the complete plugin directory. Another way to
- speed up gdb loading is to attach the debugger after vlc has started up
- via a command like:
- gdb -p *pid-of-vlc-process*
- **cddax debugging...
- It's a fact of life that this plugin may be in an incomplete state
- and/or will have bugs. So to facilitate tracking down problems we let
- you see what's going on dynamically. Various debugging settings will
- cause output to appear on vlc's plugin log and/or "standard error"
- (assuming you've run vlc in a way that you can capture this).
- You think of debug switches as a bit mask, that you specify as an
- integers the various "bit" values (given in decimal) are listed below.
- name value description
- ---------- ----- -----------
- META 1 Meta information
- EVENT 2 Trace keyboard events
- MRL 4 MRL debugging
- EXT 8 Calls from external routines
- CALL 16 all calls
- LSN 32 LSN changes
- SEEK 64 Seeks to set location
- CDIO 128 Debugging from CDIO library routines
- CDDB 256 debugging from CDDB library routines
- **CD debugging...
- The tool cd-info from libcdio can be used to show the contents and
- analyze the contents of a CD.
- The tool cd-read from libcdio can be used to show the sectors of
- the CD or CD image or extract sectors.
- $Id: intf-cdda.txt 6961 2004-03-05 17:34:23Z sam $