Add image driver track flag reporting. Reorganize code for image drivers

a little better (via image_common.c).

Update regression tests for more expanded cd-info output.
This commit is contained in:
rocky
2004-12-31 07:51:43 +00:00
parent cc9b8fcb42
commit 97a51c3c26
26 changed files with 570 additions and 320 deletions

View File

@@ -1,4 +1,4 @@
# $Id: Makefile.am,v 1.1 2004/12/18 17:29:32 rocky Exp $ # $Id: Makefile.am,v 1.2 2004/12/31 07:51:43 rocky Exp $
# #
# Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> # Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
# #
@@ -75,6 +75,7 @@ libcdio_sources = \
image.h \ image.h \
image/bincue.c \ image/bincue.c \
image/cdrdao.c \ image/cdrdao.c \
image_common.c \
image_common.h \ image_common.h \
image/nrg.c \ image/nrg.c \
image/nrg.h \ image/nrg.h \

View File

@@ -1,5 +1,5 @@
/* /*
$Id: bincue.c,v 1.2 2004/12/31 05:47:36 rocky Exp $ $Id: bincue.c,v 1.3 2004/12/31 07:51:43 rocky Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -26,7 +26,7 @@
(*.cue). (*.cue).
*/ */
static const char _rcsid[] = "$Id: bincue.c,v 1.2 2004/12/31 05:47:36 rocky Exp $"; static const char _rcsid[] = "$Id: bincue.c,v 1.3 2004/12/31 07:51:43 rocky Exp $";
#include "image.h" #include "image.h"
#include "cdio_assert.h" #include "cdio_assert.h"
@@ -63,25 +63,9 @@ static const char _rcsid[] = "$Id: bincue.c,v 1.2 2004/12/31 05:47:36 rocky Exp
#define DEFAULT_CDIO_DEVICE "videocd.bin" #define DEFAULT_CDIO_DEVICE "videocd.bin"
#define DEFAULT_CDIO_CUE "videocd.cue" #define DEFAULT_CDIO_CUE "videocd.cue"
typedef struct {
/* Things common to all drivers like this.
This must be first. */
generic_img_private_t gen;
internal_position_t pos;
char *psz_cue_name;
char *psz_mcn; /* Media Catalog Number (5.22.3)
exactly 13 bytes */
track_info_t tocent[CDIO_CD_MAX_TRACKS+1]; /* entry info for each track
add 1 for leadout. */
discmode_t disc_mode;
} _img_private_t;
static uint32_t _stat_size_bincue (void *user_data); static uint32_t _stat_size_bincue (void *user_data);
static bool parse_cuefile (_img_private_t *cd, const char *toc_name);
#define NEED_MEDIA_EJECT_IMAGE
#include "image_common.h" #include "image_common.h"
static bool parse_cuefile (_img_private_t *cd, const char *toc_name);
/*! /*!
Initialize image structures. Initialize image structures.
@@ -1150,31 +1134,34 @@ cdio_open_cue (const char *psz_cue_name)
memset( &_funcs, 0, sizeof(_funcs) ); memset( &_funcs, 0, sizeof(_funcs) );
_funcs.eject_media = _eject_media_image; _funcs.eject_media = _eject_media_image;
_funcs.free = _free_image; _funcs.free = _free_image;
_funcs.get_arg = _get_arg_image; _funcs.get_arg = _get_arg_image;
_funcs.get_cdtext = get_cdtext_generic; _funcs.get_cdtext = get_cdtext_generic;
_funcs.get_devices = cdio_get_devices_bincue; _funcs.get_devices = cdio_get_devices_bincue;
_funcs.get_default_device = cdio_get_default_device_bincue; _funcs.get_default_device = cdio_get_default_device_bincue;
_funcs.get_discmode = _get_discmode_image; _funcs.get_discmode = _get_discmode_image;
_funcs.get_drive_cap = _get_drive_cap_image; _funcs.get_drive_cap = _get_drive_cap_image;
_funcs.get_first_track_num= _get_first_track_num_image; _funcs.get_first_track_num = _get_first_track_num_image;
_funcs.get_hwinfo = get_hwinfo_bincue; _funcs.get_hwinfo = get_hwinfo_bincue;
_funcs.get_mcn = _get_mcn_image; _funcs.get_mcn = _get_mcn_image;
_funcs.get_num_tracks = _get_num_tracks_image; _funcs.get_num_tracks = _get_num_tracks_image;
_funcs.get_track_format = _get_track_format_bincue; _funcs.get_track_channels = get_track_channels_image,
_funcs.get_track_green = _get_track_green_bincue; _funcs.get_track_copy_permit = get_track_copy_permit_image,
_funcs.get_track_lba = _get_lba_track_bincue; _funcs.get_track_format = _get_track_format_bincue;
_funcs.get_track_msf = _get_track_msf_image; _funcs.get_track_green = _get_track_green_bincue;
_funcs.lseek = _lseek_bincue; _funcs.get_track_lba = _get_lba_track_bincue;
_funcs.read = _read_bincue; _funcs.get_track_msf = _get_track_msf_image;
_funcs.read_audio_sectors = _read_audio_sectors_bincue; _funcs.get_track_preemphasis = get_track_preemphasis_image,
_funcs.read_mode1_sector = _read_mode1_sector_bincue; _funcs.lseek = _lseek_bincue;
_funcs.read_mode1_sectors = _read_mode1_sectors_bincue; _funcs.read = _read_bincue;
_funcs.read_mode2_sector = _read_mode2_sector_bincue; _funcs.read_audio_sectors = _read_audio_sectors_bincue;
_funcs.read_mode2_sectors = _read_mode2_sectors_bincue; _funcs.read_mode1_sector = _read_mode1_sector_bincue;
_funcs.set_arg = _set_arg_image; _funcs.read_mode1_sectors = _read_mode1_sectors_bincue;
_funcs.stat_size = _stat_size_bincue; _funcs.read_mode2_sector = _read_mode2_sector_bincue;
_funcs.read_mode2_sectors = _read_mode2_sectors_bincue;
_funcs.set_arg = _set_arg_image;
_funcs.stat_size = _stat_size_bincue;
if (NULL == psz_cue_name) return NULL; if (NULL == psz_cue_name) return NULL;

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cdrdao.c,v 1.2 2004/12/31 05:47:36 rocky Exp $ $Id: cdrdao.c,v 1.3 2004/12/31 07:51:43 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
toc reading routine adapted from cuetools toc reading routine adapted from cuetools
@@ -25,7 +25,7 @@
(*.cue). (*.cue).
*/ */
static const char _rcsid[] = "$Id: cdrdao.c,v 1.2 2004/12/31 05:47:36 rocky Exp $"; static const char _rcsid[] = "$Id: cdrdao.c,v 1.3 2004/12/31 07:51:43 rocky Exp $";
#include "image.h" #include "image.h"
#include "cdio_assert.h" #include "cdio_assert.h"
@@ -64,26 +64,12 @@ static const char _rcsid[] = "$Id: cdrdao.c,v 1.2 2004/12/31 05:47:36 rocky Exp
#define DEFAULT_CDIO_DEVICE "videocd.bin" #define DEFAULT_CDIO_DEVICE "videocd.bin"
#define DEFAULT_CDIO_CDRDAO "videocd.toc" #define DEFAULT_CDIO_CDRDAO "videocd.toc"
typedef struct {
/* Things common to all drivers like this.
This must be first. */
generic_img_private_t gen;
internal_position_t pos;
char *psz_cue_name;
char *psz_mcn; /* Media Catalog Number (5.22.3)
exactly 13 bytes */
track_info_t tocent[CDIO_CD_MAX_TRACKS+1]; /* entry info for each track
add 1 for leadout. */
discmode_t disc_mode;
} _img_private_t;
static uint32_t _stat_size_cdrdao (void *user_data);
static bool parse_tocfile (_img_private_t *cd, const char *toc_name);
#define NEED_MEDIA_EJECT_IMAGE
#include "image_common.h" #include "image_common.h"
static uint32_t _stat_size_cdrdao (void *p_user_data);
static bool parse_tocfile (_img_private_t *cd, const char *p_toc_name);
/*! /*!
Initialize image structures. Initialize image structures.
*/ */
@@ -1132,31 +1118,34 @@ cdio_open_cdrdao (const char *psz_cue_name)
memset( &_funcs, 0, sizeof(_funcs) ); memset( &_funcs, 0, sizeof(_funcs) );
_funcs.eject_media = _eject_media_image; _funcs.eject_media = _eject_media_image;
_funcs.free = _free_image; _funcs.free = _free_image;
_funcs.get_arg = _get_arg_image; _funcs.get_arg = _get_arg_image;
_funcs.get_cdtext = get_cdtext_generic; _funcs.get_cdtext = get_cdtext_generic;
_funcs.get_devices = cdio_get_devices_cdrdao; _funcs.get_devices = cdio_get_devices_cdrdao;
_funcs.get_default_device = cdio_get_default_device_cdrdao; _funcs.get_default_device = cdio_get_default_device_cdrdao;
_funcs.get_discmode = _get_discmode_image; _funcs.get_discmode = _get_discmode_image;
_funcs.get_drive_cap = _get_drive_cap_image; _funcs.get_drive_cap = _get_drive_cap_image;
_funcs.get_first_track_num= _get_first_track_num_image; _funcs.get_first_track_num = _get_first_track_num_image;
_funcs.get_hwinfo = get_hwinfo_cdrdao; _funcs.get_hwinfo = get_hwinfo_cdrdao;
_funcs.get_mcn = _get_mcn_image; _funcs.get_mcn = _get_mcn_image;
_funcs.get_num_tracks = _get_num_tracks_image; _funcs.get_num_tracks = _get_num_tracks_image;
_funcs.get_track_format = _get_track_format_cdrdao; _funcs.get_track_channels = get_track_channels_image,
_funcs.get_track_green = _get_track_green_cdrdao; _funcs.get_track_copy_permit = get_track_copy_permit_image,
_funcs.get_track_lba = _get_lba_track_cdrdao; _funcs.get_track_format = _get_track_format_cdrdao;
_funcs.get_track_msf = _get_track_msf_image; _funcs.get_track_green = _get_track_green_cdrdao;
_funcs.lseek = _lseek_cdrdao; _funcs.get_track_lba = _get_lba_track_cdrdao;
_funcs.read = _read_cdrdao; _funcs.get_track_msf = _get_track_msf_image;
_funcs.read_audio_sectors = _read_audio_sectors_cdrdao; _funcs.get_track_preemphasis = get_track_preemphasis_image,
_funcs.read_mode1_sector = _read_mode1_sector_cdrdao; _funcs.lseek = _lseek_cdrdao;
_funcs.read_mode1_sectors = _read_mode1_sectors_cdrdao; _funcs.read = _read_cdrdao;
_funcs.read_mode2_sector = _read_mode2_sector_cdrdao; _funcs.read_audio_sectors = _read_audio_sectors_cdrdao;
_funcs.read_mode2_sectors = _read_mode2_sectors_cdrdao; _funcs.read_mode1_sector = _read_mode1_sector_cdrdao;
_funcs.set_arg = _set_arg_image; _funcs.read_mode1_sectors = _read_mode1_sectors_cdrdao;
_funcs.stat_size = _stat_size_cdrdao; _funcs.read_mode2_sector = _read_mode2_sector_cdrdao;
_funcs.read_mode2_sectors = _read_mode2_sectors_cdrdao;
_funcs.set_arg = _set_arg_image;
_funcs.stat_size = _stat_size_cdrdao;
if (NULL == psz_cue_name) return NULL; if (NULL == psz_cue_name) return NULL;

View File

@@ -1,5 +1,5 @@
/* /*
$Id: nrg.c,v 1.1 2004/12/18 17:29:32 rocky Exp $ $Id: nrg.c,v 1.2 2004/12/31 07:51:43 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
@@ -46,7 +46,7 @@
#include "_cdio_stdio.h" #include "_cdio_stdio.h"
#include "nrg.h" #include "nrg.h"
static const char _rcsid[] = "$Id: nrg.c,v 1.1 2004/12/18 17:29:32 rocky Exp $"; static const char _rcsid[] = "$Id: nrg.c,v 1.2 2004/12/31 07:51:43 rocky Exp $";
/* reader */ /* reader */
@@ -66,39 +66,12 @@ typedef struct {
} _mapping_t; } _mapping_t;
typedef struct { #define NEED_NERO_STRUCT
/* Things common to all drivers like this. #include "image_common.h"
This must be first. */
generic_img_private_t gen;
internal_position_t pos;
/* This is common to all image drivers... */
char *psz_cue_name;
char *psz_mcn; /* Media Catalog Number (5.22.3) */
track_info_t tocent[CDIO_CD_MAX_TRACKS+1]; /* entry info for each track
add 1 for leadout. */
discmode_t disc_mode;
/* Nero Specific stuff. Note: for the image_free to work, this *must*
be last. */
bool is_dao; /* True if some of disk at once. False
if some sort of track at once. */
uint32_t mtyp; /* Value of MTYP (media type?) tag */
uint8_t dtyp; /* Value of DAOX media type tag */
/* This is a hack because I don't really understnad NERO better. */
bool is_cues;
CdioList *mapping; /* List of track information */
uint32_t size;
} _img_private_t;
static bool parse_nrg (_img_private_t *env, const char *psz_cue_name); static bool parse_nrg (_img_private_t *env, const char *psz_cue_name);
static uint32_t _stat_size_nrg (void *user_data); static uint32_t _stat_size_nrg (void *user_data);
#include "image_common.h"
/* Updates internal track TOC, so we can later /* Updates internal track TOC, so we can later
simulate ioctl(CDROMREADTOCENTRY). simulate ioctl(CDROMREADTOCENTRY).
*/ */

266
lib/driver/image_common.c Normal file
View File

@@ -0,0 +1,266 @@
/*
$Id: image_common.c,v 1.1 2004/12/31 07:51:43 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
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.
Because _img_private_t may vary over image formats, the routines are
included into the image drivers after _img_private_t is defined. In
order for the below routines to work, there is a large part of
_img_private_t that is common among image drivers. For example, see
image.h
*/
#include "image.h"
#include "image_common.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#define free_if_notnull(obj) \
if (NULL != obj) { free(obj); obj=NULL; };
/*!
Eject media -- there's nothing to do here except free resources.
We always return 2.
*/
int
_eject_media_image(void *user_data)
{
_free_image (user_data);
return 2;
}
/*!
We don't need the image any more. Free all memory associated with
it.
*/
void
_free_image (void *p_user_data)
{
_img_private_t *p_env = p_user_data;
track_t i_track;
if (NULL == p_env) return;
for (i_track=0; i_track < p_env->gen.i_tracks; i_track++) {
free_if_notnull(p_env->tocent[i_track].filename);
free_if_notnull(p_env->tocent[i_track].isrc);
cdtext_destroy(&(p_env->tocent[i_track].cdtext));
}
free_if_notnull(p_env->psz_mcn);
free_if_notnull(p_env->psz_cue_name);
cdtext_destroy(&(p_env->gen.cdtext));
cdio_generic_stdio_free(p_env);
free(p_env);
}
/*!
Return the value associated with the key "arg".
*/
const char *
_get_arg_image (void *user_data, const char key[])
{
_img_private_t *p_env = user_data;
if (!strcmp (key, "source")) {
return p_env->gen.source_name;
} else if (!strcmp (key, "cue")) {
return p_env->psz_cue_name;
} else if (!strcmp(key, "access-mode")) {
return "image";
}
return NULL;
}
/*!
Get disc type associated with cd_obj.
*/
discmode_t
_get_discmode_image (void *p_user_data)
{
_img_private_t *p_env = p_user_data;
return p_env->disc_mode;
}
/*!
Return the the kind of drive capabilities of device.
*/
void
_get_drive_cap_image (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
*p_read_cap = CDIO_DRIVE_CAP_READ_AUDIO
| CDIO_DRIVE_CAP_READ_CD_G
| CDIO_DRIVE_CAP_READ_CD_R
| CDIO_DRIVE_CAP_READ_CD_RW
;
*p_write_cap = 0;
/* In the future we may want to simulate
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, etc.
*/
*p_misc_cap = CDIO_DRIVE_CAP_MISC_FILE;
}
/*!
Return the number of of the first track.
CDIO_INVALID_TRACK is returned on error.
*/
track_t
_get_first_track_num_image(void *p_user_data)
{
_img_private_t *p_env = p_user_data;
return p_env->gen.i_first_track;
}
/*!
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.
Note: string is malloc'd so caller has to free() the returned
string when done with it.
*/
char *
_get_mcn_image(const void *p_user_data)
{
const _img_private_t *p_env = p_user_data;
if (!p_env || !p_env->psz_mcn) return NULL;
return strdup(p_env->psz_mcn);
}
/*!
Return the number of tracks.
*/
track_t
_get_num_tracks_image(void *p_user_data)
{
_img_private_t *p_env = p_user_data;
return p_env->gen.i_tracks;
}
/*!
Return the starting MSF (minutes/secs/frames) for the track number
track_num in obj. Tracks numbers start at 1.
The "leadout" track is specified either by
using track_num LEADOUT_TRACK or the total tracks+1.
*/
bool
_get_track_msf_image(void *p_user_data, track_t i_track, msf_t *msf)
{
const _img_private_t *p_env = p_user_data;
if (NULL == msf) return false;
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = p_env->gen.i_tracks+1;
if (i_track <= p_env->gen.i_tracks+1 && i_track != 0) {
*msf = p_env->tocent[i_track-p_env->gen.i_first_track].start_msf;
return true;
} else
return false;
}
/*! Return number of channels in track: 2 or 4; -2 if not
implemented or -1 for error.
Not meaningful if track is not an audio track.
*/
int
get_track_channels_image(const void *p_user_data, track_t i_track)
{
const _img_private_t *p_env = p_user_data;
return ( p_env->tocent[i_track-p_env->gen.i_first_track].flags
& FOUR_CHANNEL_AUDIO ) ? 4 : 2;
}
/*! Return 1 if copy is permitted on the track, 0 if not, or -1 for error.
Is this meaningful if not an audio track?
*/
track_flag_t
get_track_copy_permit_image(void *p_user_data, track_t i_track)
{
const _img_private_t *p_env = p_user_data;
return ( p_env->tocent[i_track-p_env->gen.i_first_track].flags
& COPY_PERMITTED ) ? CDIO_TRACK_FLAG_TRUE : CDIO_TRACK_FLAG_FALSE;
}
/*! Return 1 if track has pre-emphasis, 0 if not, or -1 for error.
Is this meaningful if not an audio track?
pre-emphasis is a non linear frequency response.
*/
track_flag_t
get_track_preemphasis_image(const void *p_user_data, track_t i_track)
{
const _img_private_t *p_env = p_user_data;
return ( p_env->tocent[i_track-p_env->gen.i_first_track].flags
& PRE_EMPHASIS ) ? CDIO_TRACK_FLAG_TRUE : CDIO_TRACK_FLAG_FALSE;
}
/*!
Set the arg "key" with "value" in the source device.
Currently "source" to set the source device in I/O operations
is the only valid key.
0 is returned if no error was found, and nonzero if there as an error.
*/
int
_set_arg_image (void *user_data, const char key[], const char value[])
{
_img_private_t *env = user_data;
if (!strcmp (key, "source"))
{
free_if_notnull (env->gen.source_name);
if (!value)
return -2;
env->gen.source_name = strdup (value);
}
else if (!strcmp (key, "cue"))
{
free_if_notnull (env->psz_cue_name);
if (!value)
return -2;
env->psz_cue_name = strdup (value);
}
else
return -1;
return 0;
}

View File

@@ -1,5 +1,5 @@
/* /*
$Id: image_common.h,v 1.2 2004/12/31 05:47:36 rocky Exp $ $Id: image_common.h,v 1.3 2004/12/31 07:51:43 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -30,6 +30,35 @@
#ifndef __CDIO_IMAGE_COMMON_H__ #ifndef __CDIO_IMAGE_COMMON_H__
#define __CDIO_IMAGE_COMMON_H__ #define __CDIO_IMAGE_COMMON_H__
typedef struct {
/* Things common to all drivers like this.
This must be first. */
generic_img_private_t gen;
internal_position_t pos;
char *psz_cue_name;
char *psz_mcn; /* Media Catalog Number (5.22.3)
exactly 13 bytes */
track_info_t tocent[CDIO_CD_MAX_TRACKS+1]; /* entry info for each track
add 1 for leadout. */
discmode_t disc_mode;
#ifdef NEED_NERO_STRUCT
/* Nero Specific stuff. Note: for the image_free to work, this *must*
be last. */
bool is_dao; /* True if some of disk at once. False
if some sort of track at once. */
uint32_t mtyp; /* Value of MTYP (media type?) tag */
uint8_t dtyp; /* Value of DAOX media type tag */
/* This is a hack because I don't really understnad NERO better. */
bool is_cues;
CdioList *mapping; /* List of track information */
uint32_t size;
#endif
} _img_private_t;
#define free_if_notnull(obj) \ #define free_if_notnull(obj) \
if (NULL != obj) { free(obj); obj=NULL; }; if (NULL != obj) { free(obj); obj=NULL; };
@@ -37,67 +66,34 @@
We don't need the image any more. Free all memory associated with We don't need the image any more. Free all memory associated with
it. it.
*/ */
static void void _free_image (void *p_user_data);
_free_image (void *user_data)
{
_img_private_t *p_env = user_data;
track_t i_track;
if (NULL == p_env) return; int _eject_media_image(void *p_user_data);
for (i_track=0; i_track < p_env->gen.i_tracks; i_track++) {
free_if_notnull(p_env->tocent[i_track].filename);
free_if_notnull(p_env->tocent[i_track].isrc);
cdtext_destroy(&(p_env->tocent[i_track].cdtext));
}
free_if_notnull(p_env->psz_mcn);
free_if_notnull(p_env->psz_cue_name);
cdtext_destroy(&(p_env->gen.cdtext));
cdio_generic_stdio_free(p_env);
free(p_env);
}
#ifdef NEED_MEDIA_EJECT_IMAGE
/*!
Eject media -- there's nothing to do here except free resources.
We always return 2.
*/
static int
_eject_media_image(void *user_data)
{
_free_image (user_data);
return 2;
}
#endif
/*! /*!
Return the value associated with the key "arg". Return the value associated with the key "arg".
*/ */
static const char * const char * _get_arg_image (void *user_data, const char key[]);
_get_arg_image (void *user_data, const char key[])
{
_img_private_t *p_env = user_data;
if (!strcmp (key, "source")) {
return p_env->gen.source_name;
} else if (!strcmp (key, "cue")) {
return p_env->psz_cue_name;
} else if (!strcmp(key, "access-mode")) {
return "image";
}
return NULL;
}
/*! /*!
Get disc type associated with cd_obj. Get disc type associated with cd_obj.
*/ */
static discmode_t discmode_t _get_discmode_image (void *p_user_data);
_get_discmode_image (void *p_user_data)
{ /*!
_img_private_t *p_env = p_user_data; Return the the kind of drive capabilities of device.
return p_env->disc_mode;
} */
void _get_drive_cap_image (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*!
Return the number of of the first track.
CDIO_INVALID_TRACK is returned on error.
*/
track_t _get_first_track_num_image(void *p_user_data);
/*! /*!
Return the media catalog number (MCN) from the CD or NULL if there Return the media catalog number (MCN) from the CD or NULL if there
@@ -106,14 +102,13 @@ _get_discmode_image (void *p_user_data)
Note: string is malloc'd so caller has to free() the returned Note: string is malloc'd so caller has to free() the returned
string when done with it. string when done with it.
*/ */
static char * char * _get_mcn_image(const void *p_user_data);
_get_mcn_image(const void *user_data)
{ /*!
const _img_private_t *env = user_data; Return the number of tracks.
*/
if (NULL == env || NULL == env->psz_mcn) return NULL; track_t _get_num_tracks_image(void *p_user_data);
return strdup(env->psz_mcn);
}
/*! /*!
Return the starting MSF (minutes/secs/frames) for the track number Return the starting MSF (minutes/secs/frames) for the track number
@@ -122,45 +117,26 @@ _get_mcn_image(const void *user_data)
using track_num LEADOUT_TRACK or the total tracks+1. using track_num LEADOUT_TRACK or the total tracks+1.
*/ */
static bool bool _get_track_msf_image(void *p_user_data, track_t i_track, msf_t *msf);
_get_track_msf_image(void *user_data, track_t track_num, msf_t *msf)
{
_img_private_t *env = user_data;
if (NULL == msf) return false; /*! Return number of channels in track: 2 or 4; -2 if not
implemented or -1 for error.
if (track_num == CDIO_CDROM_LEADOUT_TRACK) track_num = env->gen.i_tracks+1; Not meaningful if track is not an audio track.
if (track_num <= env->gen.i_tracks+1 && track_num != 0) {
*msf = env->tocent[track_num-env->gen.i_first_track].start_msf;
return true;
} else
return false;
}
/*!
Return the number of of the first track.
CDIO_INVALID_TRACK is returned on error.
*/ */
static track_t int get_track_channels_image(const void *p_user_data, track_t i_track);
_get_first_track_num_image(void *p_user_data)
{ /*! Return 1 if copy is permitted on the track, 0 if not, or -1 for error.
_img_private_t *p_env = p_user_data; Is this meaningful if not an audio track?
*/
track_flag_t get_track_copy_permit_image(void *p_user_data, track_t i_track);
/*! Return 1 if track has pre-emphasis, 0 if not, or -1 for error.
Is this meaningful if not an audio track?
return p_env->gen.i_first_track; pre-emphasis is a non linear frequency response.
}
/*!
Return the number of tracks.
*/ */
static track_t track_flag_t get_track_preemphasis_image(const void *p_user_data,
_get_num_tracks_image(void *p_user_data) track_t i_track);
{
_img_private_t *p_env = p_user_data;
return p_env->gen.i_tracks;
}
/*! /*!
Set the arg "key" with "value" in the source device. Set the arg "key" with "value" in the source device.
Currently "source" to set the source device in I/O operations Currently "source" to set the source device in I/O operations
@@ -168,58 +144,6 @@ _get_num_tracks_image(void *p_user_data)
0 is returned if no error was found, and nonzero if there as an error. 0 is returned if no error was found, and nonzero if there as an error.
*/ */
static int int _set_arg_image (void *user_data, const char key[], const char value[]);
_set_arg_image (void *user_data, const char key[], const char value[])
{
_img_private_t *env = user_data;
if (!strcmp (key, "source"))
{
free_if_notnull (env->gen.source_name);
if (!value)
return -2;
env->gen.source_name = strdup (value);
}
else if (!strcmp (key, "cue"))
{
free_if_notnull (env->psz_cue_name);
if (!value)
return -2;
env->psz_cue_name = strdup (value);
}
else
return -1;
return 0;
}
/*!
Return the the kind of drive capabilities of device.
*/
static void
_get_drive_cap_image (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
*p_read_cap = CDIO_DRIVE_CAP_READ_AUDIO
| CDIO_DRIVE_CAP_READ_CD_G
| CDIO_DRIVE_CAP_READ_CD_R
| CDIO_DRIVE_CAP_READ_CD_RW
;
*p_write_cap = 0;
/* In the future we may want to simulate
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, etc.
*/
*p_misc_cap = CDIO_DRIVE_CAP_MISC_FILE;
}
#endif /* __CDIO_IMAGE_COMMON_H__ */ #endif /* __CDIO_IMAGE_COMMON_H__ */

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cd-info.c,v 1.104 2004/12/31 05:47:36 rocky Exp $ $Id: cd-info.c,v 1.105 2004/12/31 07:51:43 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org> Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
@@ -1106,6 +1106,7 @@ main(int argc, const char *argv[])
printf("%-5s", psz); printf("%-5s", psz);
if (TRACK_FORMAT_AUDIO == track_format) { if (TRACK_FORMAT_AUDIO == track_format) {
const int i_channels = cdio_get_track_channels(p_cdio, i);
switch (cdio_get_track_preemphasis(p_cdio, i)) { switch (cdio_get_track_preemphasis(p_cdio, i)) {
case CDIO_TRACK_FLAG_FALSE: case CDIO_TRACK_FLAG_FALSE:
psz="no"; psz="no";
@@ -1121,7 +1122,13 @@ main(int argc, const char *argv[])
psz="error"; psz="error";
break; break;
} }
printf( " %-8d %s", cdio_get_track_channels(p_cdio, i), psz); if (i_channels == -2)
printf(" %-8s", "unknown");
else if (i_channels == -1)
printf(" %-8s", "error");
else
printf(" %-8d", i_channels);
printf( " %s", psz);
} }
printf( "\n" ); printf( "\n" );

View File

@@ -1,4 +1,4 @@
# $Id: Makefile.am,v 1.37 2004/12/19 01:43:38 rocky Exp $ # $Id: Makefile.am,v 1.38 2004/12/31 07:51:43 rocky Exp $
# #
# Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> # Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
# #
@@ -48,7 +48,7 @@ check_SCRIPTS = check_nrg.sh check_cue.sh check_cd_read.sh \
check_PROGRAMS = $(hack) check_PROGRAMS = $(hack)
check_DATA = vcd_demo.right \ check_DATA = vcd_demo.right vcd_demo_vcdinfo.right vcd_demo_vcdinfo_toc.right \
videocd.right videocd.nrg \ videocd.right videocd.nrg \
cdda.right cdda.toc cdda.cue cdda.bin \ cdda.right cdda.toc cdda.cue cdda.bin \
isofs-m1.right isofs-m1.toc isofs-m1.cue isofs-m1.bin \ isofs-m1.right isofs-m1.toc isofs-m1.cue isofs-m1.bin \

View File

@@ -5,8 +5,8 @@ __________________________________
Disc mode is listed as: CD-DA Disc mode is listed as: CD-DA
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy? Channels Premphasis?
1: 00:02:00 000000 audio false 1: 00:02:00 000000 audio false ? unknown ?
170: 00:09:64 000589 leadout (1 MB) 170: 00:09:64 000589 leadout (1 MB)
Media Catalog Number (MCN): 123456789ABCD Media Catalog Number (MCN): 123456789ABCD
__________________________________ __________________________________

View File

@@ -3,4 +3,5 @@ CATALOG 0000010271955
PERFORMER "Richard Stallman" PERFORMER "Richard Stallman"
FILE "BOING.BIN" BINARY FILE "BOING.BIN" BINARY
TRACK 01 AUDIO TRACK 01 AUDIO
FLAGS DCP
INDEX 01 00:00:00 INDEX 01 00:00:00

View File

@@ -5,8 +5,8 @@ __________________________________
Disc mode is listed as: CD-DA Disc mode is listed as: CD-DA
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy? Channels Premphasis?
1: 00:02:00 000000 audio false 1: 00:02:00 000000 audio false yes 2 no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): 0000010271955 Media Catalog Number (MCN): 0000010271955
__________________________________ __________________________________

View File

@@ -1,4 +1,4 @@
// $Id: cdda.toc,v 1.3 2004/07/25 09:57:04 rocky Exp $ // $Id: cdda.toc,v 1.4 2004/12/31 07:51:43 rocky Exp $
// Language number should always start with 0 // Language number should always start with 0
LANGUAGE 0 { LANGUAGE 0 {
@@ -10,4 +10,5 @@ CATALOG "0000010271955"
CD_DA CD_DA
TRACK AUDIO TRACK AUDIO
COPY
FILE "cdda.bin" 00:00:00 00:00:00 FILE "cdda.bin" 00:00:00 00:00:00

View File

@@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
#$Id: check_cue.sh.in,v 1.21 2004/09/04 00:06:50 rocky Exp $ #$Id: check_cue.sh.in,v 1.22 2004/12/31 07:51:43 rocky Exp $
# Tests to see that BIN/CUE and cdrdao TOC file iamge reading is correct # Tests to see that BIN/CUE and cdrdao TOC file iamge reading is correct
# (via cd-info). # (via cd-info).
@@ -24,7 +24,7 @@ testnum=CD-DA
opts="--quiet --no-device-info --cue-file ${srcdir}/${fname}.cue --no-cddb" opts="--quiet --no-device-info --cue-file ${srcdir}/${fname}.cue --no-cddb"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "cd-info $opts" check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts"
opts="--quiet --no-device-info --bin-file ${srcdir}/${fname}.bin --no-cddb" opts="--quiet --no-device-info --bin-file ${srcdir}/${fname}.bin --no-cddb"
@@ -35,7 +35,7 @@ check_result $RC "cd-info BIN test $testnum" "cd-info $opts"
opts="--quiet --no-device-info --toc-file ${srcdir}/${fname}.toc --no-cddb" opts="--quiet --no-device-info --toc-file ${srcdir}/${fname}.toc --no-cddb"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info TOC test $testnum" "cd-info $opts" check_result $RC "cd-info TOC test $testnum" "${CD_INFO} $opts"
fname=isofs-m1 fname=isofs-m1
testnum='ISO 9660 mode1 CUE' testnum='ISO 9660 mode1 CUE'
@@ -43,7 +43,7 @@ if test -f ${srcdir}/${fname}.bin ; then
opts="-q --no-device-info --no-disc-mode --cue-file ${srcdir}/${fname}.cue --iso9660" opts="-q --no-device-info --no-disc-mode --cue-file ${srcdir}/${fname}.cue --iso9660"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "$opts" check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts"
else else
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped." echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped."
fi fi
@@ -53,7 +53,7 @@ if test -f ${srcdir}/${fname}.bin ; then
opts="-q --no-device-info --no-disc-mode --toc-file ${srcdir}/${fname}.toc --iso9660" opts="-q --no-device-info --no-disc-mode --toc-file ${srcdir}/${fname}.toc --iso9660"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info TOC test $testnum" "cd-info $opts" check_result $RC "cd-info TOC test $testnum" "${CD_INFO} $opts"
else else
echo "Don't see TOC file ${srcdir}/${fname}.bin. Test $testnum skipped." echo "Don't see TOC file ${srcdir}/${fname}.bin. Test $testnum skipped."
fi fi
@@ -69,13 +69,18 @@ if test -f ${srcdir}/${fname}.bin ; then
opts="-q --no-device-info --no-disc-mode -c ${srcdir}/${fname}.cue --iso9660" opts="-q --no-device-info --no-disc-mode -c ${srcdir}/${fname}.cue --iso9660"
test_cdinfo "$opts" ${fname}.dump $right test_cdinfo "$opts" ${fname}.dump $right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "cd-info $opts" check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts"
if test -z "@VCDINFO_LIBS@" ; then
right=${srcdir}/${fname}.right
else
right=${srcdir}/${fname}_vcdinfo_toc.right
fi
opts="-q --no-device-info --no-disc-mode -t ${srcdir}/${fname}.toc --iso9660" opts="-q --no-device-info --no-disc-mode -t ${srcdir}/${fname}.toc --iso9660"
if test -f ${srcdir}/${fname}.toc ; then if test -f ${srcdir}/${fname}.toc ; then
test_cdinfo "$opts" ${fname}.dump $right test_cdinfo "$opts" ${fname}.dump $right
RC=$? RC=$?
check_result $RC "cd-info TOC test $testnum" "cd-info $opts" check_result $RC "cd-info TOC test $testnum" "${CD_INFO} $opts"
else else
echo "Don't see TOC file ${srcdir}/${fname}.toc. Test $testnum skipped." echo "Don't see TOC file ${srcdir}/${fname}.toc. Test $testnum skipped."
fi fi
@@ -89,7 +94,7 @@ if test -f ${srcdir}/${fname}.bin ; then
opts="-q --no-device-info --no-disc-mode --cue-file ${srcdir}/${fname}.cue $vcd_opt --iso9660" opts="-q --no-device-info --no-disc-mode --cue-file ${srcdir}/${fname}.cue $vcd_opt --iso9660"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "cd-info $opts" check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts"
else else
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped." echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped."
fi fi

View File

@@ -5,7 +5,7 @@ __________________________________
Disc mode is listed as: CD-DATA (Mode 1) Disc mode is listed as: CD-DATA (Mode 1)
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available

View File

@@ -5,7 +5,7 @@ __________________________________
Disc mode is listed as: CD-DATA (Mode 1) Disc mode is listed as: CD-DATA (Mode 1)
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available

View File

@@ -5,8 +5,8 @@ __________________________________
Disc mode is listed as: CD-DATA (Mode 1) Disc mode is listed as: CD-DATA (Mode 1)
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -5,8 +5,8 @@ __________________________________
Disc mode is listed as: CD-DATA (Mode 1) Disc mode is listed as: CD-DATA (Mode 1)
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -5,8 +5,8 @@ __________________________________
Disc mode is listed as: CD-DATA (Mode 1) Disc mode is listed as: CD-DATA (Mode 1)
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -5,8 +5,8 @@ __________________________________
Disc mode is listed as: CD-DATA (Mode 1) Disc mode is listed as: CD-DATA (Mode 1)
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -4,8 +4,8 @@ PARTICULAR PURPOSE.
__________________________________ __________________________________
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false no
170: 00:06:02 000302 leadout (693 KB) 170: 00:06:02 000302 leadout (693 KB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -5,9 +5,9 @@ __________________________________
Disc mode is listed as: CD DATA (Mode 2) Disc mode is listed as: CD DATA (Mode 2)
CD-ROM Track List (1 - 2) CD-ROM Track List (1 - 2)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true ?
2: 00:18:51 001251 XA true 2: 00:18:51 001251 XA true ?
170: 00:39:71 002846 leadout (6 MB) 170: 00:39:71 002846 leadout (6 MB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -4,9 +4,9 @@ PARTICULAR PURPOSE.
__________________________________ __________________________________
CD-ROM Track List (1 - 2) CD-ROM Track List (1 - 2)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true yes
2: 00:09:01 000526 XA true 2: 00:09:01 000526 XA true yes
170: 00:56:56 004106 leadout (9 MB) 170: 00:56:56 004106 leadout (9 MB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -5,9 +5,9 @@ __________________________________
Disc mode is listed as: CD DATA (Mode 2) Disc mode is listed as: CD DATA (Mode 2)
CD-ROM Track List (1 - 2) CD-ROM Track List (1 - 2)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true ?
2: 00:22:53 001553 XA true 2: 00:22:53 001553 XA true ?
170: 01:17:62 005687 leadout (12 MB) 170: 01:17:62 005687 leadout (12 MB)
Media Catalog Number (MCN): Media Catalog Number (MCN):
__________________________________ __________________________________

View File

@@ -4,10 +4,10 @@ PARTICULAR PURPOSE.
__________________________________ __________________________________
CD-ROM Track List (1 - 3) CD-ROM Track List (1 - 3)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true yes
2: 00:17:57 001182 XA true 2: 00:17:57 001182 XA true yes
3: 00:24:71 001721 XA true 3: 00:24:71 001721 XA true yes
170: 00:30:10 002110 leadout (4 MB) 170: 00:30:10 002110 leadout (4 MB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________

View File

@@ -0,0 +1,96 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
__________________________________
CD-ROM Track List (1 - 3)
#: MSF LSN Type Green? Copy? Channels Premphasis?
1: 00:02:00 000000 XA true yes
2: 00:17:57 001182 XA true yes
3: 00:24:71 001721 XA true yes
170: 00:30:10 002110 leadout (4 MB)
Media Catalog Number (MCN): not available
__________________________________
CD Analysis Report
CD-ROM with CD-RTOS and ISO 9660 filesystem
ISO 9660: 1032 blocks, label `V0469 '
Application:
Preparer : LKVCDIMAGER 5.0.7.10(WIN32)
Publisher : LAURENS KOEHOORN
System : CD-RTOS CD-BRIDGE
Volume : V0469
Volume Set :
ISO9660 filesystem
/:
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 ..
d d---1xrxrxr 0 0 [fn 00] [LSN 19] 2048 Jul 14 1978 00:00 ext
d d---1xrxrxr 0 0 [fn 00] [LSN 20] 2048 Jul 14 1978 00:00 mpegav
d d---1xrxrxr 0 0 [fn 00] [LSN 21] 2048 Jul 14 1978 00:00 segment
d d---1xrxrxr 0 0 [fn 00] [LSN 22] 2048 Jul 14 1978 00:00 sources
d d---1xrxrxr 0 0 [fn 00] [LSN 25] 2048 Jul 14 1978 00:00 vcd
/EXT/:
d d---1xrxrxr 0 0 [fn 00] [LSN 19] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 ..
- ----1xrxrxr 0 0 [fn 01] [LSN 375] 65536 Jul 14 1978 00:00 lot_x.vcd
- ----1xrxrxr 0 0 [fn 01] [LSN 407] 144 Jul 14 1978 00:00 psd_x.vcd
/MPEGAV/:
d d---1xrxrxr 0 0 [fn 00] [LSN 20] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 ..
- ---2-xrxrxr 0 0 [fn 01] [LSN 1182] 904036 ( 796672) Jul 14 1978 00:00 avseq01.dat
- ---2-xrxrxr 0 0 [fn 02] [LSN 1721] 904036 ( 796672) Jul 14 1978 00:00 avseq02.dat
/SEGMENT/:
d d---1xrxrxr 0 0 [fn 00] [LSN 21] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 ..
- ---2-xrxrxr 0 0 [fn 01] [LSN 225] 220780 ( 194560) Jul 14 1978 00:00 item0001.dat
/Sources/:
d d---1xrxrxr 0 0 [fn 00] [LSN 22] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 ..
d d---1xrxrxr 0 0 [fn 00] [LSN 23] 2048 Jul 14 1978 00:00 html
- ----1xrxrxr 0 0 [fn 01] [LSN 434] 842 Dec 11 2002 10:33 index.htm
- ----1xrxrxr 0 0 [fn 01] [LSN 435] 1216557 Jan 07 2003 18:01 menu.ppm
- ----1xrxrxr 0 0 [fn 01] [LSN 1030] 2793 Jan 07 2003 18:08 source.xml
/Sources/HTML/:
d d---1xrxrxr 0 0 [fn 00] [LSN 23] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 22] 2048 Jul 14 1978 00:00 ..
- ----1xrxrxr 0 0 [fn 01] [LSN 425] 1067 Jan 07 2003 17:51 0.xml
- ----1xrxrxr 0 0 [fn 01] [LSN 426] 1067 Jan 07 2003 17:51 1.xml
d d---1xrxrxr 0 0 [fn 00] [LSN 24] 2048 Jul 14 1978 00:00 img
- ----1xrxrxr 0 0 [fn 01] [LSN 427] 1327 Jan 07 2003 17:51 movies.css
- ----1xrxrxr 0 0 [fn 01] [LSN 428] 12024 Jan 07 2003 17:51 toc.xsl
/Sources/HTML/img/:
d d---1xrxrxr 0 0 [fn 00] [LSN 24] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 23] 2048 Jul 14 1978 00:00 ..
- ----1xrxrxr 0 0 [fn 01] [LSN 408] 1999 Nov 13 2002 07:27 al.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 409] 7626 Jan 07 2003 17:42 loeki_groep_01.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 413] 9986 Jan 07 2003 17:42 loeki_groep_02.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 418] 207 Nov 14 2002 19:33 a_left.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 419] 207 Nov 14 2002 19:33 a_right.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 420] 441 Nov 13 2002 10:54 animatie.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 421] 250 Nov 14 2002 11:44 face_up2.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 422] 259 Nov 13 2002 11:09 familie.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 423] 1010 Nov 14 2002 11:52 goldstar2.gif
- ----1xrxrxr 0 0 [fn 01] [LSN 424] 1783 Nov 13 2002 07:15 vcd.gif
/VCD/:
d d---1xrxrxr 0 0 [fn 00] [LSN 25] 2048 Jul 14 1978 00:00 .
d d---1xrxrxr 0 0 [fn 00] [LSN 18] 2048 Jul 14 1978 00:00 ..
- ----1xrxrxr 0 0 [fn 00] [LSN 151] 2048 Jul 14 1978 00:00 entries.vcd
- ----1xrxrxr 0 0 [fn 00] [LSN 150] 2048 Jul 14 1978 00:00 info.vcd
- ----1xrxrxr 0 0 [fn 00] [LSN 152] 65536 Jul 14 1978 00:00 lot.vcd
- ----1xrxrxr 0 0 [fn 00] [LSN 184] 72 Jul 14 1978 00:00 psd.vcd
XA sectors Video CD
Format : VCD 2.0
Album : `LOEKI'
Volume count: 1
volume number: 1
session #2 starts at track 2, LSN: 1182, ISO 9660 blocks: 1032
ISO 9660: 1032 blocks, label `V0469 '

View File

@@ -5,12 +5,12 @@ __________________________________
Disc mode is listed as: CD DATA (Mode 2) Disc mode is listed as: CD DATA (Mode 2)
CD-ROM Track List (1 - 5) CD-ROM Track List (1 - 5)
#: MSF LSN Type Green? #: MSF LSN Type Green? Copy?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true ?
2: 00:13:01 000826 XA true 2: 00:13:01 000826 XA true ?
3: 00:16:01 001051 XA true 3: 00:16:01 001051 XA true ?
4: 00:19:01 001276 XA true 4: 00:19:01 001276 XA true ?
5: 00:22:01 001501 XA true 5: 00:22:01 001501 XA true ?
170: 00:25:01 001726 leadout (3 MB) 170: 00:25:01 001726 leadout (3 MB)
Media Catalog Number (MCN): not available Media Catalog Number (MCN): not available
__________________________________ __________________________________