Implemented cue sheet file commands ARRANGER, COMPOSER, MESSAGE

This commit is contained in:
Thomas Schmitt 2012-01-01 17:35:20 +00:00
parent 8ac3ee15f1
commit 4c9783d7ae
4 changed files with 31 additions and 6 deletions

View File

@ -508,9 +508,11 @@ To enable CD-TEXT from the cue sheet file, cdrskin option -text has to be
present. present.
.br .br
cdrskin currently supports TRACK datatypes AUDIO and MODE1/2048 which may cdrskin currently supports TRACK datatypes AUDIO and MODE1/2048 which may
not be mixed. It ignores commands POSTGAP, PREGAP, and FLAGS. Only INDEX 01 not be mixed. It ignores commands POSTGAP and PREGAP. Only INDEX 01
is interpreted yet. Data source may be of FILE type BINARY or MOTOROLA. is interpreted yet. Data source may be of FILE type BINARY or MOTOROLA.
.br .br
Non-CDRWIN commands ARRANGER, COMPOSER, MESSAGE are supported.
.br
Cue sheet file commands CATALOG and ISRC may be overridden by option mcn= Cue sheet file commands CATALOG and ISRC may be overridden by option mcn=
and by input_sheet_v07t= purpose specifiers "UPC / EAN" and "ISRC". and by input_sheet_v07t= purpose specifiers "UPC / EAN" and "ISRC".
This does not affect their appearance in CD-TEXT, but only on Q sub-channel. This does not affect their appearance in CD-TEXT, but only on Q sub-channel.

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2012.01.01.125539" #define Cdrskin_timestamP "2012.01.01.173446"

View File

@ -7,6 +7,7 @@ by docs and results of cdtext.zip from http://www.sonydadc.com/file/
by reading http://digitalx.org/cue-sheet/syntax by reading http://digitalx.org/cue-sheet/syntax
by reading source of libcdio from http://www.gnu.org/s/libcdio by reading source of libcdio from http://www.gnu.org/s/libcdio
which quotes source of cdrecord from ftp://ftp.berlios.de/pub/cdrecord/alpha which quotes source of cdrecord from ftp://ftp.berlios.de/pub/cdrecord/alpha
by reading man cdrecord from ftp://ftp.berlios.de/pub/cdrecord/alpha
Language codes were learned from http://tech.ebu.ch/docs/tech/tech3264.pdf Language codes were learned from http://tech.ebu.ch/docs/tech/tech3264.pdf
Genre codes were learned from libcdio and confirmed by Genre codes were learned from libcdio and confirmed by
@ -634,6 +635,9 @@ attributes (CATALOG, TITLE, PERFORMER, SONGWRITER, ISRC), track block types
(TRACK) and track start addresses (INDEX 01). (TRACK) and track start addresses (INDEX 01).
The rules for CDRWIN cue sheet files are described at The rules for CDRWIN cue sheet files are described at
http://digitalx.org/cue-sheet/syntax/ http://digitalx.org/cue-sheet/syntax/
There are three more text attributes mentioned in man cdrecord for defining
the corresponding CD-TEXT attributes: ARRANGER, COMPOSER, MESSAGE.
-------------------------------------- --------------------------------------
Example of a CDRWIN cue sheet file : Example of a CDRWIN cue sheet file :
@ -668,9 +672,13 @@ TITLE "Joyful Nights"
Several restrictions apply in the libburn call burn_session_by_cue_file(): Several restrictions apply in the libburn call burn_session_by_cue_file():
Commands POSTGAP, PREGAP are ignored. Only FILE types BINARY, MOTOROLA are Commands POSTGAP, PREGAP are ignored.
allowed. Only TRACK datatypes AUDIO, MODE1/2048 are allowed. They may not Only FILE types BINARY, MOTOROLA are allowed.
be mixed in the same session. INDEX numbers 00, 02 to 99 are ignored. Only TRACK datatypes AUDIO, MODE1/2048 are allowed. They may not be mixed in
the same session.
INDEX numbers 00, 02 to 99 are ignored.
On the other hand, ARRANGER, COMPOSER, MESSAGE are supported unconditionally.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

View File

@ -1288,7 +1288,12 @@ static int cue_interpret_line(struct burn_session *session, char *line,
for (apt++; *apt == 32 || *apt == 9; apt++); for (apt++; *apt == 32 || *apt == 9; apt++);
} }
if (strcmp(cmd, "CATALOG") == 0) { if (strcmp(cmd, "ARRANGER") == 0) {
ret = cue_set_cdtext(session, crs->track, 0x84, apt, crs, 2);
if (ret <= 0)
goto ex;
} else if (strcmp(cmd, "CATALOG") == 0) {
for (cpt = apt; (cpt - apt) < 13 && *cpt == (*cpt & 0x7f); for (cpt = apt; (cpt - apt) < 13 && *cpt == (*cpt & 0x7f);
cpt++); cpt++);
if ((cpt - apt) < 13) { if ((cpt - apt) < 13) {
@ -1322,6 +1327,11 @@ out_of_mem:;
ret = -1; goto ex; ret = -1; goto ex;
} }
} else if (strcmp(cmd, "COMPOSER") == 0) {
ret = cue_set_cdtext(session, crs->track, 0x83, apt, crs, 2);
if (ret <= 0)
goto ex;
} else if (strcmp(cmd, "FILE") == 0) { } else if (strcmp(cmd, "FILE") == 0) {
if (crs->file_source != NULL) { if (crs->file_source != NULL) {
libdax_msgs_submit(libdax_messenger, -1, 0x00020192, libdax_msgs_submit(libdax_messenger, -1, 0x00020192,
@ -1561,6 +1571,11 @@ overlapping_ba:;
goto ex; goto ex;
} }
} else if (strcmp(cmd, "MESSAGE") == 0) {
ret = cue_set_cdtext(session, crs->track, 0x85, apt, crs, 2);
if (ret <= 0)
goto ex;
} else if (strcmp(cmd, "PERFORMER") == 0) { } else if (strcmp(cmd, "PERFORMER") == 0) {
ret = cue_set_cdtext(session, crs->track, 0x81, apt, crs, 2); ret = cue_set_cdtext(session, crs->track, 0x81, apt, crs, 2);
if (ret <= 0) if (ret <= 0)