get isrc from nrg files AND new API char * cdio_get_track_isrc(CdIo_t *,track_t);
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
$Id: track.h,v 1.12 2008/03/16 00:12:42 rocky Exp $
|
$Id: track.h,v 1.13 2008/03/20 01:40:28 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -219,6 +219,20 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
lsn_t cdio_get_track_pregap_lsn(const CdIo_t *p_cdio, track_t i_track);
|
lsn_t cdio_get_track_pregap_lsn(const CdIo_t *p_cdio, track_t i_track);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the International Standard Recording Code (ISRC) for track number
|
||||||
|
i_track in p_cdio. Track numbers usually start at something
|
||||||
|
greater than 0, usually 1.
|
||||||
|
|
||||||
|
@return the International Standard Recording Code (ISRC) 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 * cdio_get_track_isrc (const CdIo_t *p_cdio, track_t i_track);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the starting MSF (minutes/secs/frames) for track number
|
Return the starting MSF (minutes/secs/frames) for track number
|
||||||
i_track in p_cdio. Track numbers usually start at something
|
i_track in p_cdio. Track numbers usually start at something
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdio_private.h,v 1.32 2008/03/16 00:12:43 rocky Exp $
|
$Id: cdio_private.h,v 1.33 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -268,6 +268,15 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
lba_t (*get_track_pregap_lba) ( const void *p_env, track_t i_track );
|
lba_t (*get_track_pregap_lba) ( const void *p_env, track_t i_track );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the International Standard Recording Code (ISRC) for track number
|
||||||
|
i_track in p_cdio. Track numbers start at 1.
|
||||||
|
|
||||||
|
Note: string is malloc'd so caller has to free() the returned
|
||||||
|
string when done with it.
|
||||||
|
*/
|
||||||
|
char * (*get_track_isrc) ( const CdIo_t *p_cdio, track_t i_track );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get format of track.
|
Get format of track.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: bincue.c,v 1.21 2008/03/19 04:38:52 edsdead Exp $
|
$Id: bincue.c,v 1.22 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006
|
Copyright (C) 2002, 2003, 2004, 2005, 2006
|
||||||
Rocky Bernstein <rocky@panix.com>
|
Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
(*.cue).
|
(*.cue).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: bincue.c,v 1.21 2008/03/19 04:38:52 edsdead Exp $";
|
static const char _rcsid[] = "$Id: bincue.c,v 1.22 2008/03/20 01:40:29 edsdead Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -1154,14 +1154,15 @@ cdio_open_cue (const char *psz_cue_name)
|
|||||||
_funcs.get_media_changed = get_media_changed_image;
|
_funcs.get_media_changed = get_media_changed_image;
|
||||||
_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_channels = get_track_channels_image,
|
_funcs.get_track_channels = get_track_channels_image;
|
||||||
_funcs.get_track_copy_permit = get_track_copy_permit_image,
|
_funcs.get_track_copy_permit = get_track_copy_permit_image;
|
||||||
_funcs.get_track_format = _get_track_format_bincue;
|
_funcs.get_track_format = _get_track_format_bincue;
|
||||||
_funcs.get_track_green = _get_track_green_bincue;
|
_funcs.get_track_green = _get_track_green_bincue;
|
||||||
_funcs.get_track_lba = _get_lba_track_bincue;
|
_funcs.get_track_lba = _get_lba_track_bincue;
|
||||||
_funcs.get_track_msf = _get_track_msf_image;
|
_funcs.get_track_msf = _get_track_msf_image;
|
||||||
_funcs.get_track_preemphasis = get_track_preemphasis_image,
|
_funcs.get_track_preemphasis = get_track_preemphasis_image;
|
||||||
_funcs.get_track_pregap_lba = get_track_pregap_lba_image;
|
_funcs.get_track_pregap_lba = get_track_pregap_lba_image;
|
||||||
|
_funcs.get_track_isrc = get_track_isrc_image;
|
||||||
_funcs.lseek = _lseek_bincue;
|
_funcs.lseek = _lseek_bincue;
|
||||||
_funcs.read = _read_bincue;
|
_funcs.read = _read_bincue;
|
||||||
_funcs.read_audio_sectors = _read_audio_sectors_bincue;
|
_funcs.read_audio_sectors = _read_audio_sectors_bincue;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdrdao.c,v 1.25 2008/03/19 04:38:52 edsdead Exp $
|
$Id: cdrdao.c,v 1.26 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005, 2006, 2007 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2004, 2005, 2006, 2007 Rocky Bernstein <rocky@gnu.org>
|
||||||
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.25 2008/03/19 04:38:52 edsdead Exp $";
|
static const char _rcsid[] = "$Id: cdrdao.c,v 1.26 2008/03/20 01:40:29 edsdead Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -1276,14 +1276,15 @@ cdio_open_cdrdao (const char *psz_cue_name)
|
|||||||
_funcs.get_media_changed = get_media_changed_image;
|
_funcs.get_media_changed = get_media_changed_image;
|
||||||
_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_channels = get_track_channels_image,
|
_funcs.get_track_channels = get_track_channels_image;
|
||||||
_funcs.get_track_copy_permit = get_track_copy_permit_image,
|
_funcs.get_track_copy_permit = get_track_copy_permit_image;
|
||||||
_funcs.get_track_format = _get_track_format_cdrdao;
|
_funcs.get_track_format = _get_track_format_cdrdao;
|
||||||
_funcs.get_track_green = _get_track_green_cdrdao;
|
_funcs.get_track_green = _get_track_green_cdrdao;
|
||||||
_funcs.get_track_lba = _get_lba_track_cdrdao;
|
_funcs.get_track_lba = _get_lba_track_cdrdao;
|
||||||
_funcs.get_track_msf = _get_track_msf_image;
|
_funcs.get_track_msf = _get_track_msf_image;
|
||||||
_funcs.get_track_preemphasis = get_track_preemphasis_image,
|
_funcs.get_track_preemphasis = get_track_preemphasis_image;
|
||||||
_funcs.get_track_pregap_lba = get_track_pregap_lba_image;
|
_funcs.get_track_pregap_lba = get_track_pregap_lba_image;
|
||||||
|
_funcs.get_track_isrc = get_track_isrc_image;
|
||||||
_funcs.lseek = _lseek_cdrdao;
|
_funcs.lseek = _lseek_cdrdao;
|
||||||
_funcs.read = _read_cdrdao;
|
_funcs.read = _read_cdrdao;
|
||||||
_funcs.read_audio_sectors = _read_audio_sectors_cdrdao;
|
_funcs.read_audio_sectors = _read_audio_sectors_cdrdao;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: nrg.c,v 1.25 2008/03/16 00:12:43 rocky Exp $
|
$Id: nrg.c,v 1.26 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005, 2006 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.25 2008/03/16 00:12:43 rocky Exp $";
|
static const char _rcsid[] = "$Id: nrg.c,v 1.26 2008/03/20 01:40:29 edsdead Exp $";
|
||||||
|
|
||||||
nero_id_t nero_id;
|
nero_id_t nero_id;
|
||||||
nero_dtype_t nero_dtype;
|
nero_dtype_t nero_dtype;
|
||||||
@@ -373,7 +373,8 @@ parse_nrg (_img_private_t *p_env, const char *psz_nrg_name,
|
|||||||
{
|
{
|
||||||
_daox_t *_xentries = NULL;
|
_daox_t *_xentries = NULL;
|
||||||
_daoi_t *_ientries = NULL;
|
_daoi_t *_ientries = NULL;
|
||||||
_dao_common_t *_dao_common = (void *) chunk->data;
|
_dao_array_common_t *_dao_array_common = NULL;
|
||||||
|
_dao_common_t *_dao_common = (void *) chunk->data;
|
||||||
int disc_mode = _dao_common->unknown[1];
|
int disc_mode = _dao_common->unknown[1];
|
||||||
track_format_t track_format;
|
track_format_t track_format;
|
||||||
int i;
|
int i;
|
||||||
@@ -385,10 +386,10 @@ parse_nrg (_img_private_t *p_env, const char *psz_nrg_name,
|
|||||||
|
|
||||||
if (DAOX_ID == opcode) {
|
if (DAOX_ID == opcode) {
|
||||||
_xentries = (void *) chunk->data;
|
_xentries = (void *) chunk->data;
|
||||||
p_env->dtyp = _xentries->track_info[0].common.unknown[0];
|
p_env->dtyp = _xentries->track_info[0].common.unknown[2];
|
||||||
} else {
|
} else {
|
||||||
_ientries = (void *) chunk->data;
|
_ientries = (void *) chunk->data;
|
||||||
p_env->dtyp = _ientries->track_info[0].common.unknown[0];
|
p_env->dtyp = _ientries->track_info[0].common.unknown[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
p_env->is_dao = true;
|
p_env->is_dao = true;
|
||||||
@@ -473,6 +474,19 @@ parse_nrg (_img_private_t *p_env, const char *psz_nrg_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i=0; i<p_env->gen.i_tracks; i++) {
|
for (i=0; i<p_env->gen.i_tracks; i++) {
|
||||||
|
|
||||||
|
if (DAOX_ID == opcode) {
|
||||||
|
_dao_array_common = &_xentries->track_info[i].common;
|
||||||
|
} else {
|
||||||
|
_dao_array_common = &_ientries->track_info[i].common;
|
||||||
|
}
|
||||||
|
p_env->tocent[i].isrc = calloc(1, CDIO_ISRC_SIZE+1);
|
||||||
|
memcpy(p_env->tocent[i].isrc, _dao_array_common->psz_isrc, CDIO_ISRC_SIZE);
|
||||||
|
p_env->tocent[i].isrc[CDIO_ISRC_SIZE] = '\0';
|
||||||
|
if (p_env->tocent[i].isrc[0]) {
|
||||||
|
cdio_info("nrg isrc has value \"%s\"", p_env->tocent[i].isrc);
|
||||||
|
}
|
||||||
|
|
||||||
if (!p_env->tocent[i].datasize) {
|
if (!p_env->tocent[i].datasize) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -1263,6 +1277,7 @@ cdio_open_nrg (const char *psz_source)
|
|||||||
_funcs.get_track_msf = _get_track_msf_image;
|
_funcs.get_track_msf = _get_track_msf_image;
|
||||||
_funcs.get_track_preemphasis = get_track_preemphasis_generic;
|
_funcs.get_track_preemphasis = get_track_preemphasis_generic;
|
||||||
_funcs.get_track_pregap_lba = get_track_pregap_lba_image;
|
_funcs.get_track_pregap_lba = get_track_pregap_lba_image;
|
||||||
|
_funcs.get_track_isrc = get_track_isrc_image;
|
||||||
_funcs.lseek = _lseek_nrg;
|
_funcs.lseek = _lseek_nrg;
|
||||||
_funcs.read = _read_nrg;
|
_funcs.read = _read_nrg;
|
||||||
_funcs.read_audio_sectors = _read_audio_sectors_nrg;
|
_funcs.read_audio_sectors = _read_audio_sectors_nrg;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: nrg.h,v 1.4 2008/03/16 00:12:43 rocky Exp $
|
$Id: nrg.h,v 1.5 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2006 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2006 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>
|
||||||
@@ -75,9 +75,8 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t zero[10];
|
char psz_isrc[CDIO_ISRC_SIZE];
|
||||||
uint32_t sector_size GNUC_PACKED;
|
uint8_t unknown[6];
|
||||||
uint8_t unknown[4];
|
|
||||||
} _dao_array_common_t;
|
} _dao_array_common_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: image_common.c,v 1.13 2008/03/16 00:12:43 rocky Exp $
|
$Id: image_common.c,v 1.14 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -270,6 +270,26 @@ get_track_pregap_lba_image(const void *p_user_data, track_t i_track)
|
|||||||
return pregap;
|
return pregap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the International Standard Recording Code (ISRC) for track number
|
||||||
|
i_track in p_cdio. Track numbers start at 1.
|
||||||
|
|
||||||
|
Note: string is malloc'd so caller has to free() the returned
|
||||||
|
string when done with it.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
get_track_isrc_image(const void *p_user_data, track_t i_track)
|
||||||
|
{
|
||||||
|
const _img_private_t *p_env = p_user_data;
|
||||||
|
char *isrc = p_env->tocent[i_track-p_env->gen.i_first_track].isrc;
|
||||||
|
|
||||||
|
if (isrc && isrc[0]) {
|
||||||
|
return strdup(isrc);
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Read a data sector
|
Read a data sector
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: image_common.h,v 1.11 2008/03/16 00:12:43 rocky Exp $
|
$Id: image_common.h,v 1.12 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -157,6 +157,15 @@ track_flag_t get_track_preemphasis_image(const void *p_user_data,
|
|||||||
*/
|
*/
|
||||||
lba_t get_track_pregap_lba_image(const void *p_user_data, track_t i_track);
|
lba_t get_track_pregap_lba_image(const void *p_user_data, track_t i_track);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the International Standard Recording Code (ISRC) for track number
|
||||||
|
i_track in p_cdio. Track numbers start at 1.
|
||||||
|
|
||||||
|
Note: string is malloc'd so caller has to free() the returned
|
||||||
|
string when done with it.
|
||||||
|
*/
|
||||||
|
char *get_track_isrc_image(const void *p_user_data, track_t i_track);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Read a data sector
|
Read a data sector
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ cdio_get_track_last_lsn
|
|||||||
cdio_get_track_lba
|
cdio_get_track_lba
|
||||||
cdio_get_track_pregap_lba
|
cdio_get_track_pregap_lba
|
||||||
cdio_get_track_pregap_lsn
|
cdio_get_track_pregap_lsn
|
||||||
|
cdio_get_track_isrc
|
||||||
cdio_get_track_lsn
|
cdio_get_track_lsn
|
||||||
cdio_get_track_msf
|
cdio_get_track_msf
|
||||||
cdio_get_track_preemphasis
|
cdio_get_track_preemphasis
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: track.c,v 1.5 2008/03/16 00:12:43 rocky Exp $
|
$Id: track.c,v 1.6 2008/03/20 01:40:29 edsdead Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
@@ -246,6 +246,25 @@ cdio_get_track_lsn(const CdIo_t *p_cdio, track_t i_track)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the International Standard Recording Code (ISRC) for track number
|
||||||
|
i_track in p_cdio. Track numbers start at 1.
|
||||||
|
|
||||||
|
Note: string is malloc'd so caller has to free() the returned
|
||||||
|
string when done with it.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
cdio_get_track_isrc (const CdIo_t *p_cdio, track_t i_track)
|
||||||
|
{
|
||||||
|
if (p_cdio == NULL) return NULL;
|
||||||
|
|
||||||
|
if (p_cdio->op.get_track_isrc) {
|
||||||
|
return p_cdio->op.get_track_isrc (p_cdio->env, i_track);
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the starting LBA for the pregap for track number
|
Return the starting LBA for the pregap for track number
|
||||||
i_track in cdio. Track numbers start at 1.
|
i_track in cdio. Track numbers start at 1.
|
||||||
|
|||||||
Reference in New Issue
Block a user