From f1ae493c57d72b8985485799355156585c7165f5 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 30 Dec 2011 16:47:57 +0000 Subject: [PATCH] Coordinated option cuefile= with option input_sheet_v07t= --- cdrskin/cdrskin.1 | 26 +++++++++++++++++++------- cdrskin/cdrskin.c | 26 ++++++++++++++++++-------- cdrskin/cdrskin_timestamp.h | 2 +- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/cdrskin/cdrskin.1 b/cdrskin/cdrskin.1 index 65aa65f..0eaae3e 100644 --- a/cdrskin/cdrskin.1 +++ b/cdrskin/cdrskin.1 @@ -2,7 +2,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH CDRSKIN 1 "Dec 28, 2011" +.TH CDRSKIN 1 "Dec 30, 2011" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -507,6 +507,10 @@ present. cdrskin currently supports TRACK datatypes AUDIO and MODE1/2048 which may not be mixed. It ignores commands POSTGAP, PREGAP, and FLAGS. Only INDEX 01 is interpreted yet. Data source may be of FILE type BINARY or MOTOROLA. +.br +Cue sheet file commands CATALOG and ISRC override options mcn= and isrc=. +They may be overridden by input_sheet_v07t= purpose specifiers "UPC / EAN" +and "ISRC". .TP .BI \-dao Alias for option -sao. Write CD in Session at Once mode @@ -645,6 +649,10 @@ Use program "eject" or cdrskin -eject to get the tray out of the drive. Runs of programs like cdrecord, growisofs, wodim, cdrskin will not be hampered and normally enable the drive's eject button when they are done. .TP +.BI mcn= text +Set the CD Media Catalog Number to text, which must be exactly 13 characters +long and should consist of decimal digits. +.TP .BI minbuf= percentage Equivalent to: .br @@ -652,10 +660,6 @@ modesty_on_drive=1:min_percent=:max_percent=95 .br Percentage is permissible between 25 and 95. .TP -.BI mcn= text -Set the CD Media Catalog Number to text, which must be exactly 13 characters -long and should consist of decimal digits. -.TP .BI -minfo Print information about the loaded media. This includes media type, writability state, and a quite readable table of content. @@ -789,7 +793,8 @@ Mode -tao is not usable for minimally blanked DVD-RW and for DVD-R DL. .BI \-text Enable writing of CD-TEXT attributes read by option cuefile=. Without option -text, cue sheet file command CDTEXTFILE will be ignored and -no CD-TEXT attributes will be read from the file. +no CD-TEXT attributes will be read from the file. Nevertheless, CATALOG and +ISRC will have the same effect as options mcn= and isrc=. .TP .BI textfile= path Read CD-TEXT packs from the file depicted by path and put them into the @@ -1076,7 +1081,7 @@ growisofs -dvd-compat is roughly equivalent to cdrskin without option -multi. .TP .BI input_sheet_v07t= path Read CD-TEXT definitions from a Sony Input Sheet version 0.7T. Up to eight -such sheets can be read by multiple input_sheet_v07t= options. +or seven such sheets can be read by multiple input_sheet_v07t= options. Each will define a CD-TEXT language block. .br The information in such a sheet is given by text lines of the following form: @@ -1152,6 +1157,13 @@ See libburn's doc/cdtext.txt for a detailed definition of 0.7T and the possible values for Text Code, Language Code, Genre Code, Text Data Copy Protection. .br +Purpose specifiers "UPC / EAN" and "ISRC" override options mcn= and isrc= +and the cuefile= commands CATALOG and ISRC. +.br +If options -text cuefile= are given and if the cue sheet file defines CD-TEXT, +then only seven input_sheet_v07t= options may be given. They will then be +used as CD-TEXT language blocks 1 to 7. +.br This option will get into effect only if no option textfile= is given. The write mode must be SAO on CD. All tracks must be -audio tracks. .TP diff --git a/cdrskin/cdrskin.c b/cdrskin/cdrskin.c index a5443c4..76384ca 100644 --- a/cdrskin/cdrskin.c +++ b/cdrskin/cdrskin.c @@ -6547,16 +6547,17 @@ int Cdrskin_burn(struct CdrskiN *skin, int flag) struct burn_progress p; struct burn_drive *drive; int ret,loop_counter= 0,max_track= -1,i,hflag,nwa,num, wrote_well= 2; - int fifo_disabled= 0, min_buffer_fill= 101; + int fifo_disabled= 0, min_buffer_fill= 101, length; int use_data_image_size, needs_early_fifo_fill= 0,iso_size= -1, non_audio= 0; double start_time,last_time; double total_count= 0.0,last_count= 0.0,size,padding,sector_size= 2048.0; char *doing; char *source_path; + unsigned char *payload; int source_fd, is_from_stdin; int text_flag= 4; /* Check CRCs and silently repair CRCs if all are 0 */ unsigned char *text_packs= NULL; - int num_packs= 0; + int num_packs= 0, start_block; #ifndef Cdrskin_no_cdrfifO double put_counter, get_counter, empty_counter, full_counter; @@ -6668,12 +6669,21 @@ burn_failed:; fprintf(stderr, "cdrskin: SORRY : Option input_sheet_v07t= works only if all tracks are -audio\n"); goto burn_failed; } else { - - /* >>> if cuefile and session has block 0, then start at block 1 */; - - for(i= 0; i < skin->sheet_v07t_blocks; i++) { - ret= Cdrskin_read_input_sheet_v07t(skin, skin->sheet_v07t_paths[i], i, - session, 0); + /* If cuefile and session has block 0, then start at block 1 */ + start_block= 0; + if(skin->cuefile[0]) { + for(i= 0x80; i < 0x8f; i++) { + ret= burn_session_get_cdtext(session, 0, i, "", &payload, &length, 0); + if(ret > 0 && length > 0) + break; + } + if(i < 0x8f) + start_block= 1; + } + for(i= 0; i < skin->sheet_v07t_blocks && i < 8 - start_block; i++) { + ret= Cdrskin_read_input_sheet_v07t(skin, + skin->sheet_v07t_paths[i], + i + start_block, session, 0); if(ret <= 0) goto burn_failed; } diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index d7f5d7a..92f178b 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2011.12.30.142742" +#define Cdrskin_timestamP "2011.12.30.164755"