New API call burn_read_audio
This commit is contained in:
parent
64fc9069e3
commit
a4ec3058e8
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2012.11.29.112605"
|
#define Cdrskin_timestamP "2012.11.30.193330"
|
||||||
|
@ -3782,6 +3782,50 @@ int burn_read_data(struct burn_drive *d, off_t byte_address,
|
|||||||
char data[], off_t data_size, off_t *data_count, int flag);
|
char data[], off_t data_size, off_t *data_count, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* ts B21119 */
|
||||||
|
/** Read CD audio sectors in random access mode.
|
||||||
|
The drive must be grabbed successfully before calling this function.
|
||||||
|
Only CD audio tracks with 2352 bytes per sector can be read this way.
|
||||||
|
I.e. not data tracks, not CD-video-stream, ...
|
||||||
|
|
||||||
|
Note that audio data do not have exact block addressing. If you read a
|
||||||
|
sequence of successive blocks then you will get a seamless stream
|
||||||
|
of data. But the actual start and end position of this audio stream
|
||||||
|
will differ by a few dozens of milliseconds, depending on individual
|
||||||
|
CD and individual drive.
|
||||||
|
Expect leading and trailing zeros, as well as slight truncation.
|
||||||
|
|
||||||
|
@param d The drive from which to read.
|
||||||
|
It must be a real MMC drive (i.e. not a stdio file)
|
||||||
|
and it must have a CD loaded (i.e. not DVD or BD).
|
||||||
|
@param sector_no The sector number (Logical Block Address)
|
||||||
|
It may be slightly below 0, depending on drive and
|
||||||
|
medium. -150 is a lower limit.
|
||||||
|
@param data A memory buffer capable of taking data_size bytes
|
||||||
|
@param data_size The amount of data to be read. This must be aligned
|
||||||
|
to full multiples of 2352.
|
||||||
|
@param data_count The amount of data actually read (interesting on error)
|
||||||
|
@param flag Bitfield for control purposes:
|
||||||
|
bit0= - reserved -
|
||||||
|
bit1= do not submit error message if read error
|
||||||
|
bit2= on error do not try to read a second time
|
||||||
|
with single block steps.
|
||||||
|
bit3= Enable DAP : "flaw obscuring mechanisms like
|
||||||
|
audio data mute and interpolate"
|
||||||
|
bit4= return -3 on SCSI error
|
||||||
|
5 64 00 ILLEGAL MODE FOR THIS TRACK
|
||||||
|
and prevent this error from being reported as
|
||||||
|
event message. Do not retry reading in this case.
|
||||||
|
(Useful to try the last two blocks of a CD
|
||||||
|
track which might be non-audio because of TAO.)
|
||||||
|
@return 1=sucessful , <=0 an error occured
|
||||||
|
with bit3: -2= permission denied error
|
||||||
|
@since 1.2.6
|
||||||
|
*/
|
||||||
|
int burn_read_audio(struct burn_drive *d, int sector_no,
|
||||||
|
char data[], off_t data_size, off_t *data_count, int flag);
|
||||||
|
|
||||||
|
|
||||||
/* ts A70904 */
|
/* ts A70904 */
|
||||||
/** Inquire whether the drive object is a real MMC drive or a pseudo-drive
|
/** Inquire whether the drive object is a real MMC drive or a pseudo-drive
|
||||||
created by a stdio: address.
|
created by a stdio: address.
|
||||||
@ -4011,46 +4055,5 @@ int burn_nec_optiarc_rep_err_rate(struct burn_drive *d,
|
|||||||
#endif /* Libburn_develop_quality_scaN */
|
#endif /* Libburn_develop_quality_scaN */
|
||||||
|
|
||||||
|
|
||||||
/* Early experimental:
|
|
||||||
*/
|
|
||||||
#define Libburn_with_read_audiO
|
|
||||||
|
|
||||||
#ifdef Libburn_with_read_audiO
|
|
||||||
|
|
||||||
/* ts B21119 */
|
|
||||||
/** Read CD audio sectors in random access mode.
|
|
||||||
The drive must be grabbed successfully before calling this function.
|
|
||||||
Only CD audio tracks with 2352 bytes per sector can be read this way.
|
|
||||||
I.e. not data tracks, not CD-video-stream, ...
|
|
||||||
@param d The drive from which to read.
|
|
||||||
It must be a real MMC drive (i.e. not a stdio file)
|
|
||||||
and it must have a CD loaded (i.e. not DVD or BD).
|
|
||||||
@param sector_no The sector number (Logical Block Address)
|
|
||||||
@param data A memory buffer capable of taking data_size bytes
|
|
||||||
@param data_size The amount of data to be read. This must be aligned
|
|
||||||
to full multiples of 2352.
|
|
||||||
@param data_count The amount of data actually read (interesting on error)
|
|
||||||
@param flag Bitfield for control purposes:
|
|
||||||
bit0= - reserved -
|
|
||||||
bit1= do not submit error message if read error
|
|
||||||
bit2= on error do not try to read a second time
|
|
||||||
with single block steps.
|
|
||||||
bit3= Enable DAP : "flaw obscuring mechanisms like
|
|
||||||
audio data mute and interpolate"
|
|
||||||
bit4= return -3 on SCSI error
|
|
||||||
5 64 00 ILLEGAL MODE FOR THIS TRACK
|
|
||||||
and prevent this error from being reported as
|
|
||||||
event message. Do not retry reading in this case.
|
|
||||||
(Useful to try the last two blocks of a CD
|
|
||||||
track which might be non-audio because of TAO.)
|
|
||||||
@return 1=sucessful , <=0 an error occured
|
|
||||||
with bit3: -2= permission denied error
|
|
||||||
@since 1.2.6
|
|
||||||
*/
|
|
||||||
int burn_read_audio(struct burn_drive *d, int sector_no,
|
|
||||||
char data[], off_t data_size, off_t *data_count, int flag);
|
|
||||||
|
|
||||||
#endif /* Libburn_with_read_audiO */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /*LIBBURN_H*/
|
#endif /*LIBBURN_H*/
|
||||||
|
@ -540,8 +540,6 @@ ex:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef Libburn_with_read_audiO
|
|
||||||
|
|
||||||
/* ts B21119 : API function*/
|
/* ts B21119 : API function*/
|
||||||
int burn_read_audio(struct burn_drive *d, int sector_no,
|
int burn_read_audio(struct burn_drive *d, int sector_no,
|
||||||
char data[], off_t data_size, off_t *data_count, int flag)
|
char data[], off_t data_size, off_t *data_count, int flag)
|
||||||
@ -644,9 +642,6 @@ ex:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* Libburn_with_read_audiO */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef Libburn_develop_quality_scaN
|
#ifdef Libburn_develop_quality_scaN
|
||||||
|
|
||||||
/* B21108 ts */
|
/* B21108 ts */
|
||||||
|
Loading…
Reference in New Issue
Block a user