libcdio-paranoia  10.2+0.94+2git
cdda.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2004, 2005, 2006, 2008, 2011, 2012
3  Rocky Bernstein <rocky@gnu.org>
4  Copyright (C) 2014 Robert Kausch <robert.kausch@freac.org>
5  Copyright (C) 2001 Xiph.org and Heiko Eissfeldt heiko@escape.colossus.de
6 
7  This program is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
28 #ifndef CDIO__PARANOIA__CDDA_H_
29 #define CDIO__PARANOIA__CDDA_H_
30 
31 #include <cdio/cdio.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif /* __cplusplus */
36 
41  typedef struct cdrom_drive_s cdrom_drive_t;
42 
54  typedef enum {
58  CD_FRAMESAMPLES = CDIO_CD_FRAMESIZE_RAW / 4,
59  MAXTRK = (CDIO_CD_MAX_TRACKS+1)
61 
62 
63 #include <signal.h>
64 
68 #define MAXTRK (CDIO_CD_MAX_TRACKS+1)
69 
71 typedef struct TOC_s {
72  unsigned char bTrack;
73  int32_t dwStartSector;
74 } TOC_t;
75 
77 #define TOC TOC_t
78 
80 struct cdrom_drive_s {
81 
82  CdIo_t *p_cdio;
83  int opened;
86 
87  char *drive_model;
89  int bigendianp;
93  int nsectors;
97  int cd_extra;
106  track_t tracks;
107  TOC_t disc_toc[MAXTRK];
114 
117  char *errorbuf;
118  char *messagebuf;
119 
120  /* functions specific to particular drives/interfaces */
121 
122  int (*enable_cdda) (cdrom_drive_t *d, int onoff);
123  int (*read_toc) (cdrom_drive_t *d);
124  long (*read_audio) (cdrom_drive_t *d, void *p, lsn_t begin,
125  long sectors);
126  int (*set_speed) (cdrom_drive_t *d, int speed);
129 
130  int is_atapi;
131  int is_mmc;
132 
134 
140 };
141 
142 
151  typedef enum {
160 
170 #define CDDA_TEST_ALWAYS_JITTER 4
171 
173 #define CDDA_TEST_FRAG_SMALL (1<<3)
174 #define CDDA_TEST_FRAG_LARGE (2<<3)
175 #define CDDA_TEST_FRAG_MASSIVE (3<<3)
176 
178 #define CDDA_TEST_UNDERRUN 64
179 
180 #if TESTING_IS_FINISHED
181 
183 #define CDDA_TEST_SCRATCH 128
184 #undef CDDA_TEST_BOGUS_BYTES 256
185 #undef CDDA_TEST_DROPDUPE_BYTES 512
186 #endif /* TESTING_IS_FINISHED */
187 
197 extern cdrom_drive_t *cdio_cddap_find_a_cdrom(int messagedest,
198  char **ppsz_message);
199 
207 extern cdrom_drive_t *cdio_cddap_identify(const char *psz_device,
208  int messagedest,
209  char **ppsz_message);
210 
221  int messagedest, char **ppsz_messages);
222 
225 extern const char *cdio_cddap_version();
226 
230 extern char *cdio_cddap_messages(cdrom_drive_t *d);
231 
235 extern char *cdio_cddap_errors(cdrom_drive_t *d);
236 
239 extern void cdio_cddap_free_messages(char *psz_messages);
240 
243 extern int cdio_cddap_speed_set(cdrom_drive_t *d, int speed);
244 extern void cdio_cddap_verbose_set(cdrom_drive_t *d, int err_action,
245  int mes_action);
246 
258 
269 extern int cdio_cddap_close(cdrom_drive_t *d);
270 
271 extern int cdio_cddap_open(cdrom_drive_t *d);
272 
273 extern long cdio_cddap_read(cdrom_drive_t *d, void *p_buffer,
274  lsn_t beginsector, long sectors);
275 
276 extern long cdio_cddap_read_timed(cdrom_drive_t *d, void *p_buffer,
277  lsn_t beginsector, long sectors, int *milliseconds);
278 
281  track_t i_track);
282 
285 extern lsn_t cdio_cddap_track_lastsector(cdrom_drive_t *d, track_t i_track);
286 
288 extern track_t cdio_cddap_tracks(cdrom_drive_t *d);
289 
295 extern int cdio_cddap_sector_gettrack(cdrom_drive_t *d, lsn_t lsn);
296 
301 extern int cdio_cddap_track_channels(cdrom_drive_t *d, track_t i_track);
302 
304 extern int cdio_cddap_track_audiop(cdrom_drive_t *d, track_t i_track);
305 
307 extern int cdio_cddap_track_copyp(cdrom_drive_t *d, track_t i_track);
308 
312 extern int cdio_cddap_track_preemp(cdrom_drive_t *d, track_t i_track);
313 
316 
321 
336 extern int data_bigendianp(cdrom_drive_t *d);
337 
340 typedef enum {
341  TR_OK = 0,
342  TR_EWRITE = 1 ,
343  TR_EREAD = 2 ,
347  TR_MEDIUM = 6 ,
348  TR_BUSY = 7 ,
350  TR_FAULT = 9 ,
351  TR_UNKNOWN = 10 ,
354 
355 
356 #ifdef NEED_STRERROR_TR
357 const char *strerror_tr[]={
358  "Success",
359  "Error writing packet command to device",
360  "Error reading command from device",
361  "SCSI packet data underrun (too little data)",
362  "SCSI packet data overrun (too much data)",
363  "Illegal SCSI request (rejected by target)",
364  "Medium reading data from medium",
365  "Device busy",
366  "Device not ready",
367  "Target hardware fault",
368  "Unspecified error",
369  "Drive lost streaming"
370 };
371 #endif /*NEED_STERROR_TR*/
372 
404 #ifndef DO_NOT_WANT_PARANOIA_COMPATIBILITY
405 
406 #define cdda_find_a_cdrom cdio_cddap_find_a_cdrom
407 #define cdda_identify cdio_cddap_identify
408 #define cdda_version cdio_cddap_version
409 #define cdda_speed_set cdio_cddap_speed_set
410 #define cdda_verbose_set cdio_cddap_verbose_set
411 #define cdda_messages cdio_cddap_messages
412 #define cdda_errors cdio_cddap_errors
413 #define cdda_close cdio_cddap_close
414 #define cdda_open cdio_cddap_open
415 #define cdda_read cdio_cddap_read
416 #define cdda_read_timed cdio_cddap_read_timed
417 #define cdda_track_firstsector cdio_cddap_track_firstsector
418 #define cdda_track_lastsector cdio_cddap_track_lastsector
419 #define cdda_tracks cdio_cddap_tracks
420 #define cdda_sector_gettrack cdio_cddap_sector_gettrack
421 #define cdda_track_channels cdio_cddap_track_channels
422 #define cdda_track_audiop cdio_cddap_track_audiop
423 #define cdda_track_copyp cdio_cddap_track_copyp
424 #define cdda_track_preemp cdio_cddap_track_preemp
425 #define cdda_disc_firstsector cdio_cddap_disc_firstsector
426 #define cdda_disc_lastsector cdio_cddap_disc_lastsector
427 #define cdrom_drive cdrom_drive_t
428 
429 #endif /*DO_NOT_WANT_PARANOIA_COMPATIBILITY*/
430 
431 #ifdef __cplusplus
432 }
433 #endif /* __cplusplus */
434 
443 
444 #ifdef __cplusplus
445 extern "C" {
446 #endif
447  extern const char *cdio_cddap_version(void);
448  extern void cdio_cddap_free_messages(char *psz_messages);
449 
450 #ifdef __cplusplus
451 }
452 #endif
453 
454 #endif /*CDIO__PARANOIA__CDDA_H_*/
void cdio_cddap_free_messages(char *psz_messages)
Definition: interface.c:204
Definition: cdda.h:55
cdrom_drive_t * cdio_cddap_find_a_cdrom(int messagedest, char **ppsz_message)
Definition: scan_devices.c:73
struct TOC_s TOC_t
Structure for cdparanoia&#39;s CD Table of Contents.
transport_error_t
Definition: cdda.h:340
#define CDDA_TEST_FRAG_SMALL
Definition: cdda.h:173
int is_mmc
Definition: cdda.h:131
paranoia_jitter_t debug_paranoia_jitter
Definition: cddap_interface.c:28
cdrom_drive_t * cdio_cddap_identify_cdio(CdIo_t *p_cdio, int messagedest, char **ppsz_messages)
Definition: scan_devices.c:194
Definition: cdda.h:57
track_t cdio_cddap_tracks(cdrom_drive_t *d)
Definition: cdda.h:342
int cdio_cddap_track_channels(cdrom_drive_t *d, track_t i_track)
void cdio_cddap_verbose_set(cdrom_drive_t *d, int err_action, int mes_action)
Definition: interface.c:181
Definition: cdda.h:341
lsn_t audio_first_sector
Definition: cdda.h:112
Structure for cdparanoia&#39;s CD-ROM access.
Definition: cdda.h:80
Definition: cdda.h:348
int messagedest
Definition: cdda.h:116
Definition: cdda.h:351
Definition: cdda.h:346
int i_test_flags
Definition: cdda.h:135
long cdio_cddap_read_timed(cdrom_drive_t *d, void *p_buffer, lsn_t beginsector, long sectors, int *milliseconds)
Definition: interface.c:145
Definition: cdda.h:154
int cdio_cddap_open(cdrom_drive_t *d)
Definition: interface.c:99
#define CDDA_TEST_FRAG_MASSIVE
Definition: cdda.h:175
int nsectors
Definition: cdda.h:93
int32_t dwStartSector
Definition: cdda.h:73
paranoia_cdda_enums_t
Definition: cdda.h:54
lsn_t cdio_cddap_track_firstsector(cdrom_drive_t *d, track_t i_track)
int is_atapi
Definition: cdda.h:130
Definition: cdda.h:344
Definition: cdda.h:152
track_t tracks
Definition: cdda.h:106
CdIo_t * p_cdio
Definition: cdda.h:82
int drive_type
Definition: cdda.h:88
Definition: cdda.h:56
int cdio_cddap_sector_gettrack(cdrom_drive_t *d, lsn_t lsn)
int bigendianp
Definition: cdda.h:89
Structure for cdparanoia&#39;s CD Table of Contents.
Definition: cdda.h:71
lsn_t cdio_cddap_disc_firstsector(cdrom_drive_t *d)
int error_retry
Definition: cdda.h:127
char * errorbuf
Definition: cdda.h:117
int cdio_cddap_track_preemp(cdrom_drive_t *d, track_t i_track)
lsn_t cdio_cddap_disc_lastsector(cdrom_drive_t *d)
Definition: p_block.h:153
bool b_swap_bytes
Definition: cdda.h:103
char * cdda_device_name
Definition: cdda.h:85
Definition: cdda.h:153
char * cdio_cddap_messages(cdrom_drive_t *d)
Definition: interface.c:188
lsn_t cdio_cddap_track_lastsector(cdrom_drive_t *d, track_t i_track)
Definition: cdda.h:345
const char * cdio_cddap_version()
Definition: interface.c:34
bool cdio_cddap_close_no_free_cdio(cdrom_drive_t *d)
Definition: interface.c:59
int cdio_cddap_close(cdrom_drive_t *d)
Definition: interface.c:86
char * messagebuf
Definition: cdda.h:118
cdrom_drive_t * cdio_cddap_identify(const char *psz_device, int messagedest, char **ppsz_message)
Definition: scan_devices.c:150
int data_bigendianp(cdrom_drive_t *d)
Definition: common_interface.c:53
char * drive_model
Definition: cdda.h:87
int cdio_cddap_track_audiop(cdrom_drive_t *d, track_t i_track)
int opened
Definition: cdda.h:83
int cdio_cddap_track_copyp(cdrom_drive_t *d, track_t i_track)
Definition: cdda.h:352
Definition: cdda.h:343
unsigned char bTrack
Definition: cdda.h:72
lsn_t audio_last_sector
Definition: cdda.h:113
Definition: cdda.h:58
char * cdio_cddap_errors(cdrom_drive_t *d)
Definition: interface.c:196
paranoia_cdda_enums_t debug_paranoia_cdda_enums
Definition: cddap_interface.c:29
int cdio_cddap_speed_set(cdrom_drive_t *d, int speed)
Definition: interface.c:135
Definition: cdda.h:347
long cdio_cddap_read(cdrom_drive_t *d, void *p_buffer, lsn_t beginsector, long sectors)
Definition: interface.c:176
Definition: cdda.h:349
int errordest
Definition: cdda.h:115
int last_milliseconds
Definition: cdda.h:133
Definition: cdda.h:350
int report_all
Definition: cdda.h:128
#define CDDA_TEST_UNDERRUN
Definition: cdda.h:178
paranoia_jitter_t
Definition: cdda.h:151
#define MAXTRK
Definition: cdda.h:68
int cd_extra
Definition: cdda.h:97
#define CDDA_TEST_FRAG_LARGE
Definition: cdda.h:174