Menu

#57 Sub-channel data is occasionally corrupted. (CDR 1.4)

open
nobody
None
5
2005-05-24
2005-05-24
No

In unsigned char * GetSCSIAudioSub(void) in scsi.c,

300 SubAData[12]=(cB[5]<<4)|(cB[5]>>4);
301 SubAData[13]=cB[6];
302 SubAData[14]=cB[7];
303 SubAData[15]=itob(cB[13]);
304 SubAData[16]=itob(cB[14]);
305 SubAData[17]=itob(cB[15]);
306 SubAData[18]=0;
307 SubAData[19]=itob(cB[9]);
308 SubAData[20]=itob(cB[10]);
309 SubAData[21]=itob(cB[11]);

should be

300 SubAData[12]=(cB[5]<<4)|(cB[5]>>4);
301 SubAData[13]=itob(cB[6]);
302 SubAData[14]=itob(cB[7]);
303 SubAData[15]=itob(cB[13]);
304 SubAData[16]=itob(cB[14]);
305 SubAData[17]=itob(cB[15]);
306 SubAData[18]=0;
307 SubAData[19]=itob(cB[9]);
308 SubAData[20]=itob(cB[10]);
309 SubAData[21]=itob(cB[11]);

because track number and index number should also be
BCD format.
(See Q Sub-channel discription in MMC standard.)

Oppositely, in DWORD ReadSCSI_BE_Sub(BOOL
bWait,FRAMEBUF * f) in scsi.c,
the format translations:

476 SubCData[15]=itob(SubCData[15]);
477 SubCData[16]=itob(SubCData[16]);
478 SubCData[17]=itob(SubCData[17]);
479
480 SubCData[19]=itob(SubCData[19]);
481 SubCData[20]=itob(SubCData[20]);
482 SubCData[21]=itob(SubCData[21]);

should not be done because the Q Sub-channel data
read by 'READ CD Command (BEh)' is a raw data which
is BCD format.

Discussion


Log in to post a comment.