libcdio-devel
[Top][All Lists]
Advanced

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

Re: [Libcdio-devel] Fedora bug report concerning CD-TEXT


From: Thomas Schmitt
Subject: Re: [Libcdio-devel] Fedora bug report concerning CD-TEXT
Date: Wed, 30 Mar 2016 08:58:50 +0200

Hi,

James made an experiment with a different drive.
  https://bugzilla.redhat.com/show_bug.cgi?id=1321677#c8

He reports:
> It exhibited the same behavior save that instead of duplicating
> the 8 ISRC on the 9th, it duplicated the 7th on the 8th

The CD-TEXT TITLE problem is not bound to a particular drive
and quite easy to reproduce.

But the ISRC problem seems to be partly drive dependent. Possibly it
is only reproducible by your physical CD medium unless you find a
free software command which i could use here to produce such a CD.
(I currently assume that your ISRC got written by what is described
 in MMC-4 as "4.2.4.5.4 ADR=3 (0011b) – Mode-3 Q".)

If you are willing to make experiments with libcdio, e.g.
  http://ftp.gnu.org/gnu/libcdio/libcdio-0.93.tar.bz2
then i propose you first take care that in
  ./lib/driver/mmc/mmc.c : mmc_get_track_isrc_private()
the buffer gets fully zeroed.

Further you should watch what replies the function gets from
the MMC command.

----------------------------------------------------------------------
--- ./lib/driver/mmc/mmc.c.orig 2014-09-25 03:19:42.000000000 +0200
+++ ./lib/driver/mmc/mmc.c      2016-03-30 08:26:24.268567826 +0200
@@ -559,6 +559,7 @@ mmc_get_track_isrc_private ( void *p_env
 
   CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_READ_SUBCHANNEL);
   CDIO_MMC_SET_READ_LENGTH8(cdb.field, sizeof(buf));
+  memset(buf, 0, sizeof(buf));
 
   cdb.field[1] = 0x0;
   cdb.field[2] = 0x40;
@@ -570,8 +571,18 @@ mmc_get_track_isrc_private ( void *p_env
                              &cdb, SCSI_MMC_DATA_READ,
                              sizeof(buf), buf);
   if(i_status == 0) {
+
+    int i;
+    fprintf(stderr, "libcdio_DEBUG: After CDIO_SUBCHANNEL_TRACK_ISRC:\n");
+    for (i = 9; i < sizeof(buf); i++)
+      fprintf(stderr, " %2.2X", (unsigned char) buf[i]);
+    fprintf(stderr, "\n");
+
     return strdup(&buf[9]);
   }
+
+  fprintf(stderr, "libcdio_DEBUG: CDIO_SUBCHANNEL_TRACK_ISRC failed\n");
+
   return NULL;
 }
 
----------------------------------------------------------------------

Although i did not write ISRC to the subchannels of the tracks but
rather to the CD-TEXT packs, the command 42h READ SUB-CHANNEL delivers
the ISRC from CD-TEXT:

  Vendor                      : HL-DT-ST
  Model                       : DVDRAM GH24NSC0 
  Revision                    : LK00
  ...
  libcdio_DEBUG: After CDIO_SUBCHANNEL_TRACK_ISRC:
   58 59 42 4C 47 31 31 30 31 32 33 34 00 04 00 DB 00 00 00
  TRACK  1 ISRC: XYBLG1101234
  libcdio_DEBUG: After CDIO_SUBCHANNEL_TRACK_ISRC:
   58 59 42 4C 47 31 31 30 30 30 30 35 00 45 00 DB 00 00 00
  TRACK  2 ISRC: XYBLG1100005
  libcdio_DEBUG: After CDIO_SUBCHANNEL_TRACK_ISRC:
   58 59 42 4C 47 31 31 30 30 30 30 36 00 37 00 DB 00 00 00
  TRACK  3 ISRC: XYBLG1100006


Have a nice day :)

Thomas




reply via email to

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