diff --git a/include/cdio/sector.h b/include/cdio/sector.h index 39d06754..846c1ab0 100644 --- a/include/cdio/sector.h +++ b/include/cdio/sector.h @@ -1,5 +1,5 @@ /* - $Id: sector.h,v 1.15 2004/07/10 01:21:19 rocky Exp $ + $Id: sector.h,v 1.16 2004/07/10 02:17:57 rocky Exp $ Copyright (C) 2000 Herbert Valerio Riedel Copyright (C) 2003, 2004 Rocky Bernstein @@ -67,6 +67,39 @@ #include +/*! track modes (Table 350) + reference: MMC-3 draft revsion - 10g +*/ +typedef enum { + AUDIO, /**< 2352 byte block length */ + MODE1, /**< 2048 byte block length */ + MODE1_RAW, /**< 2352 byte block length */ + MODE2, /**< 2336 byte block length */ + MODE2_FORM1, /**< 2048 byte block length */ + MODE2_FORM2, /**< 2324 byte block length */ + MODE2_FORM_MIX, /**< 2336 byte block length */ + MODE2_RAW /**< 2352 byte block length */ +} trackmode_t; + +/*! disc modes (5.29.2.8) */ +typedef enum { + CD_DA, /* CD-DA */ + CD_ROM, /* CD-ROM mode 1 */ + CD_ROM_XA /* CD-ROM XA and CD-I */ +} discmode_t; + +/*! track flags + * Q Sub-channel Control Field (4.2.3.3) + */ +typedef enum { + NONE = 0x00, /* no flags set */ + PRE_EMPHASIS = 0x01, /* audio track recorded with pre-emphasis */ + COPY_PERMITTED = 0x02, /* digital copy permitted */ + DATA = 0x04, /* data track */ + FOUR_CHANNEL_AUDIO = 0x08, /* 4 audio channels */ + SCMS = 0x10 /* SCMS (5.29.2.7) */ +} flag_t; + #define CDIO_PREGAP_SECTORS 150 #define CDIO_POSTGAP_SECTORS 150 diff --git a/lib/Makefile.am b/lib/Makefile.am index 770c7e5e..5b1742d6 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.41 2004/07/09 01:05:31 rocky Exp $ +# $Id: Makefile.am,v 1.42 2004/07/10 02:17:58 rocky Exp $ # # Copyright (C) 2003, 2004 Rocky Bernstein # @@ -75,6 +75,7 @@ libcdio_sources = \ FreeBSD/freebsd.h \ FreeBSD/freebsd_cam.c \ FreeBSD/freebsd_ioctl.c \ + image.h \ image/bincue.c \ image/cdrdao.c \ image_common.h \ diff --git a/lib/image.h b/lib/image.h new file mode 100644 index 00000000..7a718f6b --- /dev/null +++ b/lib/image.h @@ -0,0 +1,71 @@ +/* + $Id: image.h,v 1.1 2004/07/10 02:17:59 rocky Exp $ + + Copyright (C) 2004 Rocky Bernstein + + 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 +*/ + +/* Common image routines. */ + +#ifndef __CDIO_IMAGE_H__ +#define __CDIO_IMAGE_H__ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include "cdio_private.h" +#include + +/*! + The universal format for information about a track for CD image readers + It may be that some fields can be derived from other fields. + Over time this structure may get cleaned up. Possibly this can be + expanded/reused for real CD formats. +*/ + +typedef struct { + track_t track_num; /**< Probably is index+1 */ + msf_t start_msf; + lba_t start_lba; + int start_index; + lba_t length; + lba_t pregap; /**< pre-gap with zero audio data */ + int sec_count; /**< Number of sectors in this track. Does not + include pregap */ + int num_indices; + flag_t flags; /**< "[NO] COPY", "4CH", "[NO] PREMPAHSIS" */ + char *isrc; /**< IRSC Code (5.22.4) exactly 12 bytes */ + char *filename; + CdioDataSource *data_source; + track_format_t track_format; + bool track_green; + cdtext_t *cdtext; /**< CD-TEXT */ + + trackmode_t mode; + uint16_t datasize; /**< How much is in the portion we return + back? */ + uint16_t datastart; /**< Offset from begining that data starts */ + uint16_t endsize; /**< How much stuff at the end to skip over. + This stuff may have error correction + (EDC, or ECC).*/ + uint16_t blocksize; /**< total block size = start + size + end */ +} track_info_t; + + +#endif /* __CDIO_IMAGE_H__ */ diff --git a/lib/image/bincue.c b/lib/image/bincue.c index a19a4327..b227cb8b 100644 --- a/lib/image/bincue.c +++ b/lib/image/bincue.c @@ -1,5 +1,5 @@ /* - $Id: bincue.c,v 1.29 2004/07/10 01:21:20 rocky Exp $ + $Id: bincue.c,v 1.30 2004/07/10 02:17:59 rocky Exp $ Copyright (C) 2002, 2003, 2004 Rocky Bernstein Copyright (C) 2001 Herbert Valerio Riedel @@ -26,16 +26,15 @@ (*.cue). */ -static const char _rcsid[] = "$Id: bincue.c,v 1.29 2004/07/10 01:21:20 rocky Exp $"; +static const char _rcsid[] = "$Id: bincue.c,v 1.30 2004/07/10 02:17:59 rocky Exp $"; +#include "image.h" #include "cdio_assert.h" #include "cdio_private.h" #include "_cdio_stdio.h" #include -#include #include -#include #ifdef HAVE_STDIO_H #include @@ -71,63 +70,6 @@ static const char _rcsid[] = "$Id: bincue.c,v 1.29 2004/07/10 01:21:20 rocky Exp #define DEFAULT_CDIO_DEVICE "videocd.bin" #define DEFAULT_CDIO_CUE "videocd.cue" -/* track modes (Table 350) */ -typedef enum { - AUDIO, /* 2352 byte block length */ - MODE1, /* 2048 byte block length */ - MODE1_RAW, /* 2352 byte block length */ - MODE2, /* 2336 byte block length */ - MODE2_FORM1, /* 2048 byte block length */ - MODE2_FORM2, /* 2324 byte block length */ - MODE2_FORM_MIX, /* 2336 byte block length */ - MODE2_RAW /* 2352 byte block length */ -} trackmode_t; - -/* disc modes (5.29.2.8) */ -typedef enum { - CD_DA, /* CD-DA */ - CD_ROM, /* CD-ROM mode 1 */ - CD_ROM_XA /* CD-ROM XA and CD-I */ -} discmode_t; - -/* track flags - * Q Sub-channel Control Field (4.2.3.3) - */ -typedef enum { - NONE = 0x00, /* no flags set */ - PRE_EMPHASIS = 0x01, /* audio track recorded with pre-emphasis */ - COPY_PERMITTED = 0x02, /* digital copy permitted */ - DATA = 0x04, /* data track */ - FOUR_CHANNEL_AUDIO = 0x08, /* 4 audio channels */ - SCMS = 0x10 /* SCMS (5.29.2.7) */ -} flag_t; - -typedef struct { - track_t track_num; /* Probably is index+1 */ - msf_t start_msf; - lba_t start_lba; - int start_index; - int sec_count; /* Number of sectors in this track. Does not - include pregap */ - int num_indices; - flag_t flags; /* "DCP", "4CH", "PRE" */ - track_format_t track_format; - char *filename; - bool track_green; - long int pregap; /* pre-gap with zero audio data */ - char *isrc; /* IRSC Code (5.22.4) exactly 12 bytes */ - cdtext_t *cdtext; /* CD-TEXT */ - - trackmode_t mode; - uint16_t datasize; /* How much is in the portion we return back? */ - uint16_t datastart; /* Offset from begining that data starts */ - uint16_t endsize; /* How much stuff at the end to skip over. This - stuff may have error correction (EDC, or ECC).*/ - uint16_t blocksize; /* total block size = start + size + end */ - - -} track_info_t; - typedef struct { /* Things common to all drivers like this. This must be first. */ diff --git a/lib/image/cdrdao.c b/lib/image/cdrdao.c index fd3277d2..82a9322b 100644 --- a/lib/image/cdrdao.c +++ b/lib/image/cdrdao.c @@ -1,5 +1,5 @@ /* - $Id: cdrdao.c,v 1.15 2004/07/10 01:21:20 rocky Exp $ + $Id: cdrdao.c,v 1.16 2004/07/10 02:17:59 rocky Exp $ Copyright (C) 2004 Rocky Bernstein toc reading routine adapted from cuetools @@ -25,20 +25,15 @@ (*.cue). */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -static const char _rcsid[] = "$Id: cdrdao.c,v 1.15 2004/07/10 01:21:20 rocky Exp $"; +static const char _rcsid[] = "$Id: cdrdao.c,v 1.16 2004/07/10 02:17:59 rocky Exp $"; +#include "image.h" #include "cdio_assert.h" -#include "cdio_private.h" #include "_cdio_stdio.h" #include #include #include -#include #ifdef HAVE_STDIO_H #include @@ -73,32 +68,7 @@ static const char _rcsid[] = "$Id: cdrdao.c,v 1.15 2004/07/10 01:21:20 rocky Exp /* reader */ #define DEFAULT_CDIO_DEVICE "videocd.bin" -#define DEFAULT_CDIO_CDRDAO "videocd.toc" - -typedef struct { - track_t track_num; /* Probably is index+1 */ - msf_t start_msf; - lba_t start_lba; - lba_t length; - lba_t pregap; - int start_index; - int sec_count; /* Number of sectors in this track. Does not - include pregap */ - int num_indices; - int flags; /* "DCP", "4CH", "PRE" */ - char *isrc; /* IRSC Code (5.22.4) exactly 12 bytes. */ - char *filename; /* name given inside TOC file. */ - CdioDataSource *data_source; - track_format_t track_format; - bool track_green; - uint16_t datasize; /* How much is in the portion we return back? */ - uint16_t datastart; /* Offset from begining that data starts */ - uint16_t endsize; /* How much stuff at the end to skip over. This - stuff may have error correction (EDC, or ECC).*/ - uint16_t blocksize; /* total block size = start + size + end */ - - -} track_info_t; +#define DEFAULT_CDIO_CDRDAO "videocd.toc" typedef struct { /* Things common to all drivers like this. diff --git a/lib/image/nrg.c b/lib/image/nrg.c index 5eee2b27..45ed110d 100644 --- a/lib/image/nrg.c +++ b/lib/image/nrg.c @@ -1,5 +1,5 @@ /* - $Id: nrg.c,v 1.26 2004/07/09 02:46:42 rocky Exp $ + $Id: nrg.c,v 1.27 2004/07/10 02:17:59 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein Copyright (C) 2001, 2003 Herbert Valerio Riedel @@ -22,9 +22,7 @@ CD-image format residing inside a disk file (*.nrg). */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif +#include "image.h" #ifdef HAVE_STDIO_H #include @@ -40,39 +38,20 @@ #endif #include -#include #include #include "cdio_assert.h" #include "bytesex.h" #include "ds.h" -#include "cdio_private.h" #include "_cdio_stdio.h" #include "nrg.h" -static const char _rcsid[] = "$Id: nrg.c,v 1.26 2004/07/09 02:46:42 rocky Exp $"; +static const char _rcsid[] = "$Id: nrg.c,v 1.27 2004/07/10 02:17:59 rocky Exp $"; /* reader */ #define DEFAULT_CDIO_DEVICE "image.nrg" -typedef struct { - int track_num; /* Probably is index+1 */ - msf_t start_msf; - lba_t start_lba; - int start_index; - int sec_count; /* Number of sectors in track. Does not - include pregap before next entry. */ - int flags; /* don't copy, 4 channel audio, pre emphasis */ - track_format_t track_format; - bool track_green; - uint16_t datasize; /* How much is in the portion we return back? */ - long int datastart; /* Offset from begining that data starts */ - uint16_t endsize; /* How much stuff at the end to skip over. This - stuff may have error correction (EDC, or ECC).*/ - uint16_t blocksize; /* total block size = start + size + end */ -} track_info_t; - /* Link element of track structure as a linked list. Possibly redundant with above track_info_t */ diff --git a/lib/image_common.h b/lib/image_common.h index b054706f..c8299b92 100644 --- a/lib/image_common.h +++ b/lib/image_common.h @@ -1,5 +1,5 @@ /* - $Id: image_common.h,v 1.6 2004/07/09 02:46:42 rocky Exp $ + $Id: image_common.h,v 1.7 2004/07/10 02:17:59 rocky Exp $ Copyright (C) 2004 Rocky Bernstein @@ -20,6 +20,9 @@ /* Common image routines. */ +#ifndef __CDIO_IMAGE_COMMON_H__ +#define __CDIO_IMAGE_COMMON_H__ + /*! Return the media catalog number (MCN) from the CD or NULL if there is none or we don't have the ability to get it. @@ -82,3 +85,5 @@ _get_num_tracks_image(void *user_data) return env->i_tracks; } + +#endif /* __CDIO_IMAGE_COMMON_H__ */