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:
@@ -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>
|
||||
#
|
||||
@@ -75,6 +75,7 @@ libcdio_sources = \
|
||||
image.h \
|
||||
image/bincue.c \
|
||||
image/cdrdao.c \
|
||||
image_common.c \
|
||||
image_common.h \
|
||||
image/nrg.c \
|
||||
image/nrg.h \
|
||||
|
||||
@@ -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) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -26,7 +26,7 @@
|
||||
(*.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 "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_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 bool parse_cuefile (_img_private_t *cd, const char *toc_name);
|
||||
|
||||
#define NEED_MEDIA_EJECT_IMAGE
|
||||
#include "image_common.h"
|
||||
static bool parse_cuefile (_img_private_t *cd, const char *toc_name);
|
||||
|
||||
/*!
|
||||
Initialize image structures.
|
||||
@@ -1162,10 +1146,13 @@ cdio_open_cue (const char *psz_cue_name)
|
||||
_funcs.get_hwinfo = get_hwinfo_bincue;
|
||||
_funcs.get_mcn = _get_mcn_image;
|
||||
_funcs.get_num_tracks = _get_num_tracks_image;
|
||||
_funcs.get_track_channels = get_track_channels_image,
|
||||
_funcs.get_track_copy_permit = get_track_copy_permit_image,
|
||||
_funcs.get_track_format = _get_track_format_bincue;
|
||||
_funcs.get_track_green = _get_track_green_bincue;
|
||||
_funcs.get_track_lba = _get_lba_track_bincue;
|
||||
_funcs.get_track_msf = _get_track_msf_image;
|
||||
_funcs.get_track_preemphasis = get_track_preemphasis_image,
|
||||
_funcs.lseek = _lseek_bincue;
|
||||
_funcs.read = _read_bincue;
|
||||
_funcs.read_audio_sectors = _read_audio_sectors_bincue;
|
||||
|
||||
@@ -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>
|
||||
toc reading routine adapted from cuetools
|
||||
@@ -25,7 +25,7 @@
|
||||
(*.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 "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_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"
|
||||
|
||||
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.
|
||||
*/
|
||||
@@ -1144,10 +1130,13 @@ cdio_open_cdrdao (const char *psz_cue_name)
|
||||
_funcs.get_hwinfo = get_hwinfo_cdrdao;
|
||||
_funcs.get_mcn = _get_mcn_image;
|
||||
_funcs.get_num_tracks = _get_num_tracks_image;
|
||||
_funcs.get_track_channels = get_track_channels_image,
|
||||
_funcs.get_track_copy_permit = get_track_copy_permit_image,
|
||||
_funcs.get_track_format = _get_track_format_cdrdao;
|
||||
_funcs.get_track_green = _get_track_green_cdrdao;
|
||||
_funcs.get_track_lba = _get_lba_track_cdrdao;
|
||||
_funcs.get_track_msf = _get_track_msf_image;
|
||||
_funcs.get_track_preemphasis = get_track_preemphasis_image,
|
||||
_funcs.lseek = _lseek_cdrdao;
|
||||
_funcs.read = _read_cdrdao;
|
||||
_funcs.read_audio_sectors = _read_audio_sectors_cdrdao;
|
||||
|
||||
@@ -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) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -46,7 +46,7 @@
|
||||
#include "_cdio_stdio.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 */
|
||||
@@ -66,39 +66,12 @@ typedef struct {
|
||||
} _mapping_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* Things common to all drivers like this.
|
||||
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;
|
||||
#define NEED_NERO_STRUCT
|
||||
#include "image_common.h"
|
||||
|
||||
static bool parse_nrg (_img_private_t *env, const char *psz_cue_name);
|
||||
static uint32_t _stat_size_nrg (void *user_data);
|
||||
|
||||
#include "image_common.h"
|
||||
|
||||
/* Updates internal track TOC, so we can later
|
||||
simulate ioctl(CDROMREADTOCENTRY).
|
||||
*/
|
||||
|
||||
266
lib/driver/image_common.c
Normal file
266
lib/driver/image_common.c
Normal 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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -30,6 +30,35 @@
|
||||
#ifndef __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) \
|
||||
if (NULL != obj) { free(obj); obj=NULL; };
|
||||
|
||||
@@ -37,67 +66,34 @@
|
||||
We don't need the image any more. Free all memory associated with
|
||||
it.
|
||||
*/
|
||||
static void
|
||||
_free_image (void *user_data)
|
||||
{
|
||||
_img_private_t *p_env = user_data;
|
||||
track_t i_track;
|
||||
void _free_image (void *p_user_data);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
#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
|
||||
int _eject_media_image(void *p_user_data);
|
||||
|
||||
/*!
|
||||
Return the value associated with the key "arg".
|
||||
*/
|
||||
static 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;
|
||||
}
|
||||
const char * _get_arg_image (void *user_data, const char key[]);
|
||||
|
||||
/*!
|
||||
Get disc type associated with cd_obj.
|
||||
*/
|
||||
static discmode_t
|
||||
_get_discmode_image (void *p_user_data)
|
||||
{
|
||||
_img_private_t *p_env = p_user_data;
|
||||
return p_env->disc_mode;
|
||||
}
|
||||
discmode_t _get_discmode_image (void *p_user_data);
|
||||
|
||||
/*!
|
||||
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);
|
||||
|
||||
/*!
|
||||
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
|
||||
@@ -106,14 +102,13 @@ _get_discmode_image (void *p_user_data)
|
||||
Note: string is malloc'd so caller has to free() the returned
|
||||
string when done with it.
|
||||
*/
|
||||
static char *
|
||||
_get_mcn_image(const void *user_data)
|
||||
{
|
||||
const _img_private_t *env = user_data;
|
||||
char * _get_mcn_image(const void *p_user_data);
|
||||
|
||||
/*!
|
||||
Return the number of tracks.
|
||||
*/
|
||||
track_t _get_num_tracks_image(void *p_user_data);
|
||||
|
||||
if (NULL == env || NULL == env->psz_mcn) return NULL;
|
||||
return strdup(env->psz_mcn);
|
||||
}
|
||||
|
||||
/*!
|
||||
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.
|
||||
|
||||
*/
|
||||
static bool
|
||||
_get_track_msf_image(void *user_data, track_t track_num, msf_t *msf)
|
||||
{
|
||||
_img_private_t *env = user_data;
|
||||
bool _get_track_msf_image(void *p_user_data, track_t i_track, msf_t *msf);
|
||||
|
||||
if (NULL == msf) return false;
|
||||
|
||||
if (track_num == CDIO_CDROM_LEADOUT_TRACK) track_num = env->gen.i_tracks+1;
|
||||
|
||||
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.
|
||||
/*! 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.
|
||||
*/
|
||||
static track_t
|
||||
_get_first_track_num_image(void *p_user_data)
|
||||
{
|
||||
_img_private_t *p_env = p_user_data;
|
||||
int get_track_channels_image(const void *p_user_data, track_t i_track);
|
||||
|
||||
return p_env->gen.i_first_track;
|
||||
}
|
||||
|
||||
/*!
|
||||
Return the number of tracks.
|
||||
/*! Return 1 if copy is permitted on the track, 0 if not, or -1 for error.
|
||||
Is this meaningful if not an audio track?
|
||||
*/
|
||||
static track_t
|
||||
_get_num_tracks_image(void *p_user_data)
|
||||
{
|
||||
_img_private_t *p_env = p_user_data;
|
||||
track_flag_t get_track_copy_permit_image(void *p_user_data, track_t i_track);
|
||||
|
||||
return p_env->gen.i_tracks;
|
||||
}
|
||||
/*! 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);
|
||||
/*!
|
||||
Set the arg "key" with "value" in the source device.
|
||||
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.
|
||||
*/
|
||||
static 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;
|
||||
}
|
||||
|
||||
/*!
|
||||
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;
|
||||
}
|
||||
int _set_arg_image (void *user_data, const char key[], const char value[]);
|
||||
|
||||
#endif /* __CDIO_IMAGE_COMMON_H__ */
|
||||
|
||||
@@ -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) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
|
||||
@@ -1106,6 +1106,7 @@ main(int argc, const char *argv[])
|
||||
printf("%-5s", psz);
|
||||
|
||||
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)) {
|
||||
case CDIO_TRACK_FLAG_FALSE:
|
||||
psz="no";
|
||||
@@ -1121,7 +1122,13 @@ main(int argc, const char *argv[])
|
||||
psz="error";
|
||||
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" );
|
||||
|
||||
@@ -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>
|
||||
#
|
||||
@@ -48,7 +48,7 @@ check_SCRIPTS = check_nrg.sh check_cue.sh check_cd_read.sh \
|
||||
|
||||
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 \
|
||||
cdda.right cdda.toc cdda.cue cdda.bin \
|
||||
isofs-m1.right isofs-m1.toc isofs-m1.cue isofs-m1.bin \
|
||||
|
||||
@@ -5,8 +5,8 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DA
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 audio false
|
||||
#: MSF LSN Type Green? Copy? Channels Premphasis?
|
||||
1: 00:02:00 000000 audio false ? unknown ?
|
||||
170: 00:09:64 000589 leadout (1 MB)
|
||||
Media Catalog Number (MCN): 123456789ABCD
|
||||
__________________________________
|
||||
|
||||
@@ -3,4 +3,5 @@ CATALOG 0000010271955
|
||||
PERFORMER "Richard Stallman"
|
||||
FILE "BOING.BIN" BINARY
|
||||
TRACK 01 AUDIO
|
||||
FLAGS DCP
|
||||
INDEX 01 00:00:00
|
||||
|
||||
@@ -5,8 +5,8 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DA
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 audio false
|
||||
#: MSF LSN Type Green? Copy? Channels Premphasis?
|
||||
1: 00:02:00 000000 audio false yes 2 no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): 0000010271955
|
||||
__________________________________
|
||||
|
||||
@@ -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 0 {
|
||||
@@ -10,4 +10,5 @@ CATALOG "0000010271955"
|
||||
CD_DA
|
||||
|
||||
TRACK AUDIO
|
||||
COPY
|
||||
FILE "cdda.bin" 00:00:00 00:00:00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
# (via cd-info).
|
||||
|
||||
@@ -24,7 +24,7 @@ testnum=CD-DA
|
||||
opts="--quiet --no-device-info --cue-file ${srcdir}/${fname}.cue --no-cddb"
|
||||
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
|
||||
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"
|
||||
@@ -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"
|
||||
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
|
||||
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
|
||||
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"
|
||||
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
|
||||
RC=$?
|
||||
check_result $RC "cd-info CUE test $testnum" "$opts"
|
||||
check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts"
|
||||
else
|
||||
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped."
|
||||
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"
|
||||
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
|
||||
RC=$?
|
||||
check_result $RC "cd-info TOC test $testnum" "cd-info $opts"
|
||||
check_result $RC "cd-info TOC test $testnum" "${CD_INFO} $opts"
|
||||
else
|
||||
echo "Don't see TOC file ${srcdir}/${fname}.bin. Test $testnum skipped."
|
||||
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"
|
||||
test_cdinfo "$opts" ${fname}.dump $right
|
||||
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"
|
||||
if test -f ${srcdir}/${fname}.toc ; then
|
||||
test_cdinfo "$opts" ${fname}.dump $right
|
||||
RC=$?
|
||||
check_result $RC "cd-info TOC test $testnum" "cd-info $opts"
|
||||
check_result $RC "cd-info TOC test $testnum" "${CD_INFO} $opts"
|
||||
else
|
||||
echo "Don't see TOC file ${srcdir}/${fname}.toc. Test $testnum skipped."
|
||||
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"
|
||||
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
|
||||
RC=$?
|
||||
check_result $RC "cd-info CUE test $testnum" "cd-info $opts"
|
||||
check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts"
|
||||
else
|
||||
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped."
|
||||
fi
|
||||
|
||||
@@ -5,7 +5,7 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DATA (Mode 1)
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
|
||||
@@ -5,7 +5,7 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DATA (Mode 1)
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
|
||||
@@ -5,8 +5,8 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DATA (Mode 1)
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -5,8 +5,8 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DATA (Mode 1)
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -5,8 +5,8 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DATA (Mode 1)
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -5,8 +5,8 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD-DATA (Mode 1)
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -4,8 +4,8 @@ PARTICULAR PURPOSE.
|
||||
__________________________________
|
||||
|
||||
CD-ROM Track List (1 - 1)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 data false
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 data false no
|
||||
170: 00:06:02 000302 leadout (693 KB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -5,9 +5,9 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD DATA (Mode 2)
|
||||
CD-ROM Track List (1 - 2)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 XA true
|
||||
2: 00:18:51 001251 XA true
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 XA true ?
|
||||
2: 00:18:51 001251 XA true ?
|
||||
170: 00:39:71 002846 leadout (6 MB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -4,9 +4,9 @@ PARTICULAR PURPOSE.
|
||||
__________________________________
|
||||
|
||||
CD-ROM Track List (1 - 2)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 XA true
|
||||
2: 00:09:01 000526 XA true
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 XA true yes
|
||||
2: 00:09:01 000526 XA true yes
|
||||
170: 00:56:56 004106 leadout (9 MB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
@@ -5,9 +5,9 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD DATA (Mode 2)
|
||||
CD-ROM Track List (1 - 2)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 XA true
|
||||
2: 00:22:53 001553 XA true
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 XA true ?
|
||||
2: 00:22:53 001553 XA true ?
|
||||
170: 01:17:62 005687 leadout (12 MB)
|
||||
Media Catalog Number (MCN):
|
||||
__________________________________
|
||||
|
||||
@@ -4,10 +4,10 @@ PARTICULAR PURPOSE.
|
||||
__________________________________
|
||||
|
||||
CD-ROM Track List (1 - 3)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 XA true
|
||||
2: 00:17:57 001182 XA true
|
||||
3: 00:24:71 001721 XA true
|
||||
#: MSF LSN Type Green? Copy?
|
||||
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
|
||||
__________________________________
|
||||
|
||||
96
test/vcd_demo_vcdinfo_toc.right
Normal file
96
test/vcd_demo_vcdinfo_toc.right
Normal 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 '
|
||||
@@ -5,12 +5,12 @@ __________________________________
|
||||
|
||||
Disc mode is listed as: CD DATA (Mode 2)
|
||||
CD-ROM Track List (1 - 5)
|
||||
#: MSF LSN Type Green?
|
||||
1: 00:02:00 000000 XA true
|
||||
2: 00:13:01 000826 XA true
|
||||
3: 00:16:01 001051 XA true
|
||||
4: 00:19:01 001276 XA true
|
||||
5: 00:22:01 001501 XA true
|
||||
#: MSF LSN Type Green? Copy?
|
||||
1: 00:02:00 000000 XA true ?
|
||||
2: 00:13:01 000826 XA true ?
|
||||
3: 00:16:01 001051 XA true ?
|
||||
4: 00:19:01 001276 XA true ?
|
||||
5: 00:22:01 001501 XA true ?
|
||||
170: 00:25:01 001726 leadout (3 MB)
|
||||
Media Catalog Number (MCN): not available
|
||||
__________________________________
|
||||
|
||||
Reference in New Issue
Block a user