Device::Cdio::Device(3pm)
NAME
Device::Cdio::Device - Class for disc and device aspects of Cdio.
SYNOPSIS
use Device::Cdio::Device; $d = Device::Cdio::Device->new(-driver_id=>$perlcdio::DRIVER_DEVICE); $drive_name = $d->get_device(); ($i_read_cap, $i_write_cap, $i_misc_cap) = $d->get_drive_cap(); $start_lsn = $d->get_first_track()->get_lsn(); $end_lsn=$d->get_disc_last_lsn(); $drc = $d->audio_play_lsn($start_lsn, $end_lsn); ($vendor, $model, $release, $drc) = $d->get_hwinfo();
METHODS
- new
- new(source, driver_id, access_mode)->$device_object
- Create a new Device object. Either parameter "source", "driver_id" or
"access_mode" can be "undef". In fact it is probably best to not to
give an "access_mode" unless you know what you are doing. - audio_pause
- audio_pause()-> $status
- Pause playing CD through analog output. The device status is returned.
- audio_play_lsn
- audio_play_lsn(start_lsn, end_lsn)-> $status
- Playing CD through analog output at the given lsn to the ending lsn The device status is returned.
- audio_resume
- audio_resume()-> $status
- Resume playing an audio CD through the analog interface. The device
status is returned. - audio_stop
- audio_stop()-> $status
- Stop playing an audio CD through the analog interface. The device
status is returned. - close
- close()->bool
- Free resources associated with cdio. Call this when done using using
CD reading/control operations for the current device. - eject_media
- eject_media()->drc
- Eject media in CD drive if there is a routine to do so. status is
returned. - get_arg
- get_arg(key)->string
- get_device
- get_device()->str
- Get the default CD device.
- If the CD object has an opened CD, return the name of the device used. (In fact this is the same thing as issuing "d-"get_arg("source")>.
- If we haven't initialized a specific device driver, then find a
suitable one and return the default device for that. - In some situations of drivers or OS's we can't find a CD device if
there is no media in it and it is possible for this routine to return
undef even though there may be a hardware CD-ROM. - get_disc_last_lsn
- get_disc_last_lsn(self)->int
- Get the LSN of the end of the CD. $perlcdio::INVALID_LSN is returned if there was an error.
- get_disc_mode
- get_disc_mode() -> str
- Get disc mode - the kind of CD: CD-DA, CD-ROM mode 1, CD-MIXED, etc.
that we've got. The notion of 'CD' is extended a little to include
DVD's. - get_drive_cap
- get_drive_cap()->(read_cap, write_cap, misc_cap)
- Get drive capabilities of device.
- In some situations of drivers or OS's we can't find a CD device if
there is no media in it. In this situation capabilities will show up as empty even though there is a hardware CD-ROM. - get_drive_cap_dev
- get_drive_cap_dev(device=undef)->(read_cap, write_cap, misc_cap)
- Get drive capabilities of device.
- In some situations of drivers or OS's we can't find a CD device if
there is no media in it. In this situation capabilities will show up as empty even though there is a hardware CD-ROM. - get_driver_name
- get_driver_name()-> string
- return a string containing the name of the driver in use. "undef" is
returned if there's an error. - get_driver_id
- get_driver_id()-> int
- get_first_track
- get_first_track()->Track
- return a Track object of the first track. $perlcdio::INVALID_TRACK or
$perlcdio::BAD_PARAMETER is returned if there was a problem. - Return the driver id of the driver in use. if object has not been
initialized or is None, return $perlcdio::DRIVER_UNKNOWN. - get_hwinfo
- get_hwinfo()->(vendor, model, release, drc)
- Get the CD-ROM hardware info via a SCSI MMC INQUIRY command. An
exception is raised if we had an error. - get_joliet_level
- get_joliet_level()->int
- Return the Joliet level recognized for cdio. This only makes sense for something that has an ISO-9660 filesystem.
- get_last_session
- get_last_session(self) -> (track_lsn, drc)
- Get the LSN of the first track of the last session of on the CD.
- get_last_track
- get_last_track()->Track
- return a Track object of the last track. $perlcdio::INVALID_TRACK or
$perlcdio::BAD_PARAMETER is returned if there was a problem. - get_mcn
- get_mcn()->str
- Get the media catalog number (MCN) from the CD.
- get_media_changed
- get_media_changed() -> int
- Find out if media has changed since the last call. Return 1 if media
has changed since last call, 0 if not. A negative number indicates the driver status error. - get_num_tracks
- get_num_tracks()->int
- Return the number of tracks on the CD. $perlcdio::INVALID_TRACK is
raised on error. - get_track
- get_track(track_num)->track
- Set a new track object of the current disc for the given track number.
- get_track_for_lsn
- get_track_for_lsn(LSN)->Track
- Find the track which contains LSN. undef is returned if the lsn
outside of the CD or if there was some error. - If the LSN is before the pregap of the first track, A track object with
a 0 track is returned. Otherwise we return the track that spans the
lsn. - have_ATAPI
- have_ATAPI()->bool
- return 1 if CD-ROM understand ATAPI commands.
- lseek
- lseek(offset, whence)->int
- Reposition read offset. Similar to (if not the same as) libc's fseek()
- offset is the amount to seek and whence is like corresponding parameter in libc's lseek, e.g. it should be SEEK_SET or SEEK_END.
- the offset is returned or -1 on error.
- open
- open(source=undef, driver_id=$libcdio::DRIVER_UNKNOWN,
access_mode=undef)->$cdio_obj
- Sets up to read from place specified by source, driver_id and access
mode. This should be called before using any other routine except those that act on a CD-ROM drive by name. It is implicitly called when a new is done specifying a source or driver id. - If "undef" is given as the source, we'll use the default driver device.
If "undef" is given as the driver_id, we'll find a suitable device
driver. Device is opened so that subsequent operations can be
performed. - read
- read(size)->(size, data)
- Reads the next size bytes. Similar to (if not the same as) libc's
read() - The number of bytes read and the data is returned.
- read_data_blocks
- read_data_blocks(lsn, blocks=1)->($data, $size, $drc)
- Reads a number of data sectors (AKA blocks).
- lsn is sector to read, blocks is the number of bytes.
- The size of the data will be a multiple of $perlcdio::ISO_BLOCKSIZE.
- The number of data, size of the data, and the return code status is
returned in an array context. In a scalar context just the data is
returned. "undef" is returned as the data on error. - read_sectors
- read_sectors($lsn, $read_mode, $blocks=1)->($data, $size, $drc)
read_sectors($lsn, $read_mode, $blocks=1)->$data - Reads a number of sectors (AKA blocks).
- lsn is sector to read, bytes is the number of bytes.
- If read_mode is $perlcdio::MODE_AUDIO, the return data size will be a
multiple of $perlcdio::CDIO_FRAMESIZE_RAW i_blocks bytes. - If read_mode is $perlcdio::MODE_DATA, data will be a multiple of
$perlcdio::ISO_BLOCKSIZE, $perlcdio::M1RAW_SECTOR_SIZE or
$perlcdio::M2F2_SECTOR_SIZE bytes depending on what mode the data is
in. - If read_mode is $perlcdio::MODE_M2F1, data will be a multiple of
$perlcdio::M2RAW_SECTOR_SIZE bytes. - If read_mode is $perlcdio::MODE_M2F2, the return data size will be a
multiple of $perlcdio::CD_FRAMESIZE bytes. - The number of data, size of the data, and the return code status is
returned in an array context. In a scalar context just the data is
returned. undef is returned as the data on error. - set_blocksize
- set_blocksize(blocksize) -> $status
- Set the blocksize for subsequent reads. The operation status code is
returned. - set_speed
- set_speed(speed)->drc
- The operation status code is returned.
SEE ALSO
Device::Cdio for the top-level module, Device::Cdio::Track for track
objects, and Device::Cdio::ISO9660 for working with ISO9660
filesystems.
perlcdio is the lower-level interface to libcdio.
<http://www.gnu.org/software/libcdio> has documentation on libcdio
including the a manual and the API via doxygen.
AUTHORS
Rocky Bernstein "<rocky at cpan.org>".
COPYRIGHT
Copyright (C) 2006 Rocky Bernstein <rocky@cpan.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
- You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA