libcdio  2.1.0
Enumerations | Functions
read.h File Reference

The top-level header for sector (block, frame)-related libcdio calls. More...

#include <cdio/types.h>

Go to the source code of this file.

Enumerations

enum  cdio_read_mode_t {
  CDIO_READ_MODE_AUDIO, CDIO_READ_MODE_M1F1, CDIO_READ_MODE_M1F2, CDIO_READ_MODE_M2F1,
  CDIO_READ_MODE_M2F2
}
 

Functions

off_t cdio_lseek (const CdIo_t *p_cdio, off_t offset, int whence)
 
ssize_t cdio_read (const CdIo_t *p_cdio, void *p_buf, size_t i_size)
 
driver_return_code_t cdio_read_audio_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn)
 
driver_return_code_t cdio_read_audio_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, uint32_t i_blocks)
 
driver_return_code_t cdio_read_data_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, uint16_t i_blocksize, uint32_t i_blocks)
 
driver_return_code_t cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, bool b_form2)
 
driver_return_code_t cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, bool b_form2, uint32_t i_blocks)
 
driver_return_code_t cdio_read_mode2_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, bool b_form2)
 
driver_return_code_t cdio_read_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, cdio_read_mode_t read_mode)
 
driver_return_code_t cdio_read_mode2_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, bool b_form2, uint32_t i_blocks)
 
driver_return_code_t cdio_read_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, cdio_read_mode_t read_mode, uint32_t i_blocks)
 

Detailed Description

The top-level header for sector (block, frame)-related libcdio calls.

Enumeration Type Documentation

◆ cdio_read_mode_t

All the different ways a block/sector can be read.

Enumerator
CDIO_READ_MODE_AUDIO 

CD-DA, audio, Red Book

CDIO_READ_MODE_M1F1 

Mode 1 Form 1

CDIO_READ_MODE_M1F2 

Mode 1 Form 2

CDIO_READ_MODE_M2F1 

Mode 2 Form 1

CDIO_READ_MODE_M2F2 

Mode 2 Form 2

Function Documentation

◆ cdio_lseek()

off_t cdio_lseek ( const CdIo_t p_cdio,
off_t  offset,
int  whence 
)

Reposition read offset Similar to (if not the same as) libc's fseek()

Parameters
p_cdioobject which gets adjusted
offsetamount to seek
whencelike corresponding parameter in libc's fseek, e.g. SEEK_SET or SEEK_END.
Returns
(off_t) -1 on error.

◆ cdio_read()

ssize_t cdio_read ( const CdIo_t p_cdio,
void *  p_buf,
size_t  i_size 
)

Reads into buf the next size bytes. Similar to (if not the same as) libc's read(). This is a "cooked" read, or one handled by the OS. It probably won't work on audio data. For that use cdio_read_audio_sector(s).

Parameters
p_cdioobject to read from
p_bufplace to read data into. The caller should make sure this location can store at least i_size bytes.
i_sizenumber of bytes to read
Returns
(ssize_t) -1 on error.

◆ cdio_read_audio_sector()

driver_return_code_t cdio_read_audio_sector ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn 
)

Read an audio sector

Parameters
p_cdioobject to read from
p_bufplace to read data into. The caller should make sure this location can store at least CDIO_FRAMESIZE_RAW bytes.
i_lsnsector to read

◆ cdio_read_audio_sectors()

driver_return_code_t cdio_read_audio_sectors ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
uint32_t  i_blocks 
)

Reads audio sectors

Parameters
p_cdioobject to read from
p_bufplace to read data into. The caller should make sure this location can store at least CDIO_FRAMESIZE_RAW i_blocks bytes.
i_lsnsector to read
i_blocksnumber of sectors to read

◆ cdio_read_data_sectors()

driver_return_code_t cdio_read_data_sectors ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
uint16_t  i_blocksize,
uint32_t  i_blocks 
)

Read data sectors

Parameters
p_cdioobject to read from
p_bufplace to read data into. The caller should make sure this location can store at least ISO_BLOCKSIZE, M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE depending on the kind of sector getting read. If you don't know whether you have a Mode 1/2, Form 1/ Form 2/Formless sector best to reserve space for the maximum, M2RAW_SECTOR_SIZE.
i_lsnsector to read
i_blocksizesize of block. Should be either CDIO_CD_FRAMESIZE, M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
i_blocksnumber of blocks to read

◆ cdio_read_mode1_sector()

driver_return_code_t cdio_read_mode1_sector ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
bool  b_form2 
)

Reads a mode 1 sector

Parameters
p_cdioobject to read from
p_bufplace to read data into.
i_lsnsector to read
b_form2true for reading mode 1 form 2 sectors or false for mode 1 form 1 sectors.

◆ cdio_read_mode1_sectors()

driver_return_code_t cdio_read_mode1_sectors ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
bool  b_form2,
uint32_t  i_blocks 
)

Reads mode 1 sectors

Parameters
p_cdioobject to read from
p_bufplace to read data into
i_lsnsector to read
b_form2true for reading mode 1 form 2 sectors or false for mode 1 form 1 sectors.
i_blocksnumber of sectors to read

◆ cdio_read_mode2_sector()

driver_return_code_t cdio_read_mode2_sector ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
bool  b_form2 
)

Reads a mode 2 sector

Parameters
p_cdioobject to read from
p_bufplace to read data into. The caller should make sure this location can store at least M2RAW_SECTOR_SIZE (for form 1) or CDIO_CD_FRAMESIZE (for form 2) bytes.
i_lsnsector to read
b_form2true for reading mode 2 form 2 sectors or false for mode 2 form 1 sectors.
Returns
0 if no error, nonzero otherwise.

◆ cdio_read_mode2_sectors()

driver_return_code_t cdio_read_mode2_sectors ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
bool  b_form2,
uint32_t  i_blocks 
)

Reads mode 2 sectors

Parameters
p_cdioobject to read from
p_bufplace to read data into. The caller should make sure this location can store at least M2RAW_SECTOR_SIZE (for form 1) or CDIO_CD_FRAMESIZE (for form 2) * i_blocks bytes.
i_lsnsector to read
b_form2true for reading mode2 form 2 sectors or false for mode 2 form 1 sectors.
i_blocksnumber of sectors to read
Returns
0 if no error, nonzero otherwise.

◆ cdio_read_sector()

driver_return_code_t cdio_read_sector ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
cdio_read_mode_t  read_mode 
)

The special case of reading a single block is a common one so we provide a routine for that as a convenience.

◆ cdio_read_sectors()

driver_return_code_t cdio_read_sectors ( const CdIo_t p_cdio,
void *  p_buf,
lsn_t  i_lsn,
cdio_read_mode_t  read_mode,
uint32_t  i_blocks 
)

Reads a number of sectors (AKA blocks).

Parameters
p_cdiocdio object
p_bufplace to read data into. The caller should make sure this location is large enough. See below for size information.
read_modethe kind of "mode" to use in reading.
i_lsnsector to read
i_blocksnumber of sectors to read
Returns
DRIVER_OP_SUCCESS (0) if no error, other (negative) enumerations are returned on error.

If read_mode is CDIO_MODE_AUDIO, p_buf should hold at least CDIO_FRAMESIZE_RAW * i_blocks bytes.

If read_mode is CDIO_MODE_DATA, p_buf should hold at least i_blocks times either ISO_BLOCKSIZE, M1RAW_SECTOR_SIZE or M2F2_SECTOR_SIZE depending on the kind of sector getting read. If you don't know whether you have a Mode 1/2, Form 1/ Form 2/Formless sector best to reserve space for the maximum which is M2RAW_SECTOR_SIZE.

If read_mode is CDIO_MODE_M2F1, p_buf should hold at least M2RAW_SECTOR_SIZE * i_blocks bytes.

If read_mode is CDIO_MODE_M2F2, p_buf should hold at least CDIO_CD_FRAMESIZE * i_blocks bytes.