libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libcdio-devel] Re: isrc API?


From: Robert William Fuller
Subject: [Libcdio-devel] Re: isrc API?
Date: Wed, 19 Mar 2008 21:38:47 -0400
User-agent: Thunderbird 2.0.0.6 (X11/20071013)

Robert William Fuller wrote:
cdrdao.c and bincue.c both save the ISRC codes. I have found the Nero ISRC codes as well. I have written the code to save the Nero ISRC codes. There's only one problem. Although cdrdao.c and bincue.c have been saving ISRC codes for a while, there's no API to access the ISRC codes! What do people think about the following API?

char *cdio_get_track_isrc(CdIo_t *cd, track_t track);

I'm guessing it should follow the pattern of cdio_get_mcn and strdup the string?

All is unusually quiet. Is it a holiday? I'm going to take lack of feedback as approval. You can always chastise me later and we can roll back the changes :-) Note that we're down to only 7 unknown bytes in Nero's DAOI/DAOX structure! Here's what's going in for ISRC:

cvs diff: Diffing include/cdio
Index: include/cdio/track.h
===================================================================
RCS file: /sources/libcdio/libcdio/include/cdio/track.h,v
retrieving revision 1.12
diff -r1.12 track.h
220a221,234
>
>   /*!
>     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);
cvs diff: Diffing lib/driver
Index: lib/driver/cdio_private.h
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/cdio_private.h,v
retrieving revision 1.32
diff -r1.32 cdio_private.h
269a270,278
>
>     /*!
> 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 );
Index: lib/driver/image_common.c
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/image_common.c,v
retrieving revision 1.13
diff -r1.13 image_common.c
273a274,293
> 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;
>   }
> }
>
> /*!
Index: lib/driver/image_common.h
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/image_common.h,v
retrieving revision 1.11
diff -r1.11 image_common.h
160a161,169
> 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);
>
> /*!
Index: lib/driver/libcdio.sym
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/libcdio.sym,v
retrieving revision 1.39
diff -r1.39 libcdio.sym
84a85
> cdio_get_track_isrc
Index: lib/driver/track.c
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/track.c,v
retrieving revision 1.5
diff -r1.5 track.c
248a249,267
> /*!
> 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;
>   }
> }
>
cvs diff: Diffing lib/driver/image
Index: lib/driver/image/bincue.c
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/image/bincue.c,v
retrieving revision 1.21
diff -r1.21 bincue.c
1157,1158c1157,1158
<   _funcs.get_track_channels    = get_track_channels_image,
<   _funcs.get_track_copy_permit = get_track_copy_permit_image,
---
>   _funcs.get_track_channels    = get_track_channels_image;
>   _funcs.get_track_copy_permit = get_track_copy_permit_image;
1163c1163
<   _funcs.get_track_preemphasis = get_track_preemphasis_image,
---
>   _funcs.get_track_preemphasis = get_track_preemphasis_image;
1164a1165
>   _funcs.get_track_isrc        = get_track_isrc_image;
Index: lib/driver/image/cdrdao.c
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/image/cdrdao.c,v
retrieving revision 1.25
diff -r1.25 cdrdao.c
1279,1280c1279,1280
<   _funcs.get_track_channels    = get_track_channels_image,
<   _funcs.get_track_copy_permit = get_track_copy_permit_image,
---
>   _funcs.get_track_channels    = get_track_channels_image;
>   _funcs.get_track_copy_permit = get_track_copy_permit_image;
1285c1285
<   _funcs.get_track_preemphasis = get_track_preemphasis_image,
---
>   _funcs.get_track_preemphasis = get_track_preemphasis_image;
1286a1287
>   _funcs.get_track_isrc        = get_track_isrc_image;
Index: lib/driver/image/nrg.c
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/image/nrg.c,v
retrieving revision 1.25
diff -r1.25 nrg.c
376c376,377
<         _dao_common_t  *_dao_common = (void *) chunk->data;
---
>         _dao_array_common_t *_dao_array_common = NULL;
>         _dao_common_t *_dao_common = (void *) chunk->data;
388c389
<           p_env->dtyp = _xentries->track_info[0].common.unknown[0];
---
>           p_env->dtyp = _xentries->track_info[0].common.unknown[2];
391c392
<           p_env->dtyp = _ientries->track_info[0].common.unknown[0];
---
>           p_env->dtyp = _ientries->track_info[0].common.unknown[2];
475a477,489
>
>           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);
>           }
>
1265a1280
>   _funcs.get_track_isrc        = get_track_isrc_image;
Index: lib/driver/image/nrg.h
===================================================================
RCS file: /sources/libcdio/libcdio/lib/driver/image/nrg.h,v
retrieving revision 1.4
diff -r1.4 nrg.h
78,80c78,79
<   uint8_t  zero[10];
<   uint32_t sector_size         GNUC_PACKED;
<   uint8_t  unknown[4];
---
>   char     psz_isrc[CDIO_ISRC_SIZE];
>   uint8_t  unknown[6];





reply via email to

[Prev in Thread] Current Thread [Next in Thread]