Lines Matching +full:- +full:isrc
1 /* grabbag - Convenience lib for various routines common to several tools
2 * Copyright (C) 2002-2009 Josh Coalson
3 * Copyright (C) 2011-2023 Xiph.Org Foundation
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
54 return -1; in local__parse_int64_()
59 return -1; in local__parse_int64_()
61 ret = ret * 10 + (c - '0'); in local__parse_int64_()
64 return -1; in local__parse_int64_()
74 return -1; in local__parse_int_()
78 /* accept minute:second:frame syntax of '[0-9]+:[0-9][0-9]?:[0-9][0-9]?', but max second of 59 and …
88 return -1; in local__parse_msf_()
92 field = (c - '0'); in local__parse_msf_()
94 return -1; in local__parse_msf_()
98 return -1; in local__parse_msf_()
100 field = field * 10 + (c - '0'); in local__parse_msf_()
103 return -1; in local__parse_msf_()
107 return -1; in local__parse_msf_()
112 field = (c - '0'); in local__parse_msf_()
114 return -1; in local__parse_msf_()
117 field = field * 10 + (c - '0'); in local__parse_msf_()
120 return -1; in local__parse_msf_()
123 return -1; in local__parse_msf_()
127 return -1; in local__parse_msf_()
133 return -1; in local__parse_msf_()
138 field = (c - '0'); in local__parse_msf_()
140 return -1; in local__parse_msf_()
143 field = field * 10 + (c - '0'); in local__parse_msf_()
147 return -1; in local__parse_msf_()
151 return -1; in local__parse_msf_()
154 return -1; in local__parse_msf_()
160 return -1; in local__parse_msf_()
166 /* accept minute:second syntax of '[0-9]+:[0-9][0-9]?{,.[0-9]+}', but second < 60, e.g. 0:0.0, 3:5,…
177 return -1; in local__parse_ms_()
181 field = (c - '0'); in local__parse_ms_()
183 return -1; in local__parse_ms_()
187 return -1; in local__parse_ms_()
189 field = field * 10 + (c - '0'); in local__parse_ms_()
192 return -1; in local__parse_ms_()
196 return -1; in local__parse_ms_()
200 return -1; in local__parse_ms_()
203 return -1; in local__parse_ms_()
205 return -1; in local__parse_ms_()
271 int in_track_num = -1, in_index_num = -1; in local__cuesheet_parse_()
273 FLAC__StreamMetadata_CueSheet *cs = &cuesheet->data.cue_sheet; in local__cuesheet_parse_()
278 *error_message = "CD-DA cuesheet only allowed with 44.1kHz sample rate"; in local__cuesheet_parse_()
282 cs->lead_in = is_cdda? 2 * 44100 /* The default lead-in size for CD-DA */ : 0; in local__cuesheet_parse_()
283 cs->is_cd = is_cdda; in local__cuesheet_parse_()
291 if((linelen == sizeof(buffer)-1) && line[linelen-1] != '\n') { in local__cuesheet_parse_()
307 if(strlen(field) >= sizeof(cs->media_catalog_number)) { in local__cuesheet_parse_()
312 *error_message = "CD-DA CATALOG number must be 13 decimal digits"; in local__cuesheet_parse_()
315 safe_strncpy(cs->media_catalog_number, field, sizeof(cs->media_catalog_number)); in local__cuesheet_parse_()
329 cs->tracks[cs->num_tracks-1].pre_emphasis = 1; in local__cuesheet_parse_()
335 FLAC__StreamMetadata_CueSheet_Track *track = &cs->tracks[cs->num_tracks-1]; in local__cuesheet_parse_()
349 FLAC__ASSERT(cs->num_tracks > 0); in local__cuesheet_parse_()
350 if(track->num_indices == 0) { in local__cuesheet_parse_()
358 if(in_index_num != track->indices[track->num_indices-1].number + 1) { in local__cuesheet_parse_()
364 *error_message = "CD-DA INDEX number must be between 0 and 99, inclusive"; in local__cuesheet_parse_()
375 /* CD-DA must use only MM:SS:FF format */ in local__cuesheet_parse_()
380 /* as an extension for non-CD-DA we allow MM:SS.SS or raw sample number */ in local__cuesheet_parse_()
395 if(is_cdda && cs->num_tracks == 1 && cs->tracks[0].num_indices == 0 && xx != 0) { in local__cuesheet_parse_()
399 …if(is_cdda && track->num_indices > 0 && (FLAC__uint64)xx <= track->indices[track->num_indices-1].o… in local__cuesheet_parse_()
400 *error_message = "CD-DA INDEX offsets must increase in time"; in local__cuesheet_parse_()
404 if(track->num_indices == 0) in local__cuesheet_parse_()
405 track->offset = (FLAC__uint64)xx; in local__cuesheet_parse_()
406 if(is_cdda && cs->num_tracks > 1) { in local__cuesheet_parse_()
407 const FLAC__StreamMetadata_CueSheet_Track *prev = &cs->tracks[cs->num_tracks-2]; in local__cuesheet_parse_()
408 if((FLAC__uint64)xx <= prev->offset + prev->indices[prev->num_indices-1].offset) { in local__cuesheet_parse_()
409 *error_message = "CD-DA INDEX offsets must increase in time"; in local__cuesheet_parse_()
413 …if(!FLAC__metadata_object_cuesheet_track_insert_blank_index(cuesheet, cs->num_tracks-1, track->num… in local__cuesheet_parse_()
417 track->indices[track->num_indices-1].offset = (FLAC__uint64)xx - track->offset; in local__cuesheet_parse_()
418 track->indices[track->num_indices-1].number = in_index_num; in local__cuesheet_parse_()
420 else if(0 == FLAC__STRCASECMP(field, "ISRC")) { in local__cuesheet_parse_()
423 *error_message = "found multiple ISRC commands"; in local__cuesheet_parse_()
427 *error_message = "ISRC command must come after TRACK but before INDEX"; in local__cuesheet_parse_()
431 *error_message = "ISRC is missing ISRC number"; in local__cuesheet_parse_()
436 if(*r != '-') in local__cuesheet_parse_()
441 *error_message = "invalid ISRC number"; in local__cuesheet_parse_()
444 … safe_strncpy(cs->tracks[cs->num_tracks-1].isrc, field, sizeof(cs->tracks[cs->num_tracks-1].isrc)); in local__cuesheet_parse_()
448 if(cs->num_tracks > 0) { in local__cuesheet_parse_()
449 const FLAC__StreamMetadata_CueSheet_Track *prev = &cs->tracks[cs->num_tracks-1]; in local__cuesheet_parse_()
451 prev->num_indices == 0 || in local__cuesheet_parse_()
455 (prev->num_indices == 1 && prev->indices[0].number != 1) || in local__cuesheet_parse_()
456 (prev->num_indices == 2 && prev->indices[0].number != 1 && prev->indices[1].number != 1) in local__cuesheet_parse_()
481 *error_message = "CD-DA TRACK number must be between 1 and 99, inclusive"; in local__cuesheet_parse_()
487 *error_message = "TRACK number 255 is reserved for the lead-out"; in local__cuesheet_parse_()
495 if(is_cdda && cs->num_tracks > 0 && in_track_num != cs->tracks[cs->num_tracks-1].number + 1) { in local__cuesheet_parse_()
496 *error_message = "CD-DA TRACK numbers must be sequential"; in local__cuesheet_parse_()
504 if(!FLAC__metadata_object_cuesheet_insert_blank_track(cuesheet, cs->num_tracks)) { in local__cuesheet_parse_()
508 cs->tracks[cs->num_tracks-1].number = in_track_num; in local__cuesheet_parse_()
509 …cs->tracks[cs->num_tracks-1].type = (0 == FLAC__STRCASECMP(field, "AUDIO"))? 0 : 1; /*@@@ should w… in local__cuesheet_parse_()
510 in_index_num = -1; in local__cuesheet_parse_()
516 if(0 == strcmp(field, "FLAC__lead-in")) { in local__cuesheet_parse_()
519 *error_message = "FLAC__lead-in is missing offset"; in local__cuesheet_parse_()
524 *error_message = "illegal FLAC__lead-in offset"; in local__cuesheet_parse_()
528 *error_message = "illegal CD-DA FLAC__lead-in offset, must be even multiple of 588 samples"; in local__cuesheet_parse_()
531 cs->lead_in = (FLAC__uint64)xx; in local__cuesheet_parse_()
533 else if(0 == strcmp(field, "FLAC__lead-out")) { in local__cuesheet_parse_()
537 *error_message = "multiple FLAC__lead-out commands"; in local__cuesheet_parse_()
541 *error_message = "FLAC__lead-out is missing track number"; in local__cuesheet_parse_()
546 *error_message = "illegal FLAC__lead-out track number"; in local__cuesheet_parse_()
552 *error_message = "FLAC__lead-out is missing offset"; in local__cuesheet_parse_()
557 *error_message = "illegal FLAC__lead-out offset"; in local__cuesheet_parse_()
562 *error_message = "FLAC__lead-out offset does not match end-of-stream offset"; in local__cuesheet_parse_()
572 if(cs->num_tracks == 0) { in local__cuesheet_parse_()
577 const FLAC__StreamMetadata_CueSheet_Track *prev = &cs->tracks[cs->num_tracks-1]; in local__cuesheet_parse_()
579 prev->num_indices == 0 || in local__cuesheet_parse_()
583 (prev->num_indices == 1 && prev->indices[0].number != 1) || in local__cuesheet_parse_()
584 (prev->num_indices == 2 && prev->indices[0].number != 1 && prev->indices[1].number != 1) in local__cuesheet_parse_()
599 if(!FLAC__metadata_object_cuesheet_insert_blank_track(cuesheet, cs->num_tracks)) { in local__cuesheet_parse_()
603 cs->tracks[cs->num_tracks-1].number = forced_leadout_track_num; in local__cuesheet_parse_()
604 cs->tracks[cs->num_tracks-1].offset = forced_leadout_track_offset; in local__cuesheet_parse_()
644 FLAC__ASSERT(cuesheet->type == FLAC__METADATA_TYPE_CUESHEET); in grabbag__cuesheet_emit()
646 cs = &cuesheet->data.cue_sheet; in grabbag__cuesheet_emit()
648 if(*(cs->media_catalog_number)) in grabbag__cuesheet_emit()
649 fprintf(file, "CATALOG %s\n", cs->media_catalog_number); in grabbag__cuesheet_emit()
652 FLAC__ASSERT(cs->num_tracks > 0); in grabbag__cuesheet_emit()
654 for(track_num = 0; track_num < cs->num_tracks-1; track_num++) { in grabbag__cuesheet_emit()
655 const FLAC__StreamMetadata_CueSheet_Track *track = cs->tracks + track_num; in grabbag__cuesheet_emit()
657 fprintf(file, " TRACK %02u %s\n", (uint32_t)track->number, track->type == 0? "AUDIO" : "DATA"); in grabbag__cuesheet_emit()
659 if(track->pre_emphasis) in grabbag__cuesheet_emit()
661 if(*(track->isrc)) in grabbag__cuesheet_emit()
662 fprintf(file, " ISRC %s\n", track->isrc); in grabbag__cuesheet_emit()
664 for(index_num = 0; index_num < track->num_indices; index_num++) { in grabbag__cuesheet_emit()
665 const FLAC__StreamMetadata_CueSheet_Index *indx = track->indices + index_num; in grabbag__cuesheet_emit()
667 fprintf(file, " INDEX %02u ", (uint32_t)indx->number); in grabbag__cuesheet_emit()
668 if(cs->is_cd) { in grabbag__cuesheet_emit()
669 const uint32_t logical_frame = (uint32_t)((track->offset + indx->offset) / (44100 / 75)); in grabbag__cuesheet_emit()
675 fprintf(file, "%" PRIu64 "\n", (track->offset + indx->offset)); in grabbag__cuesheet_emit()
679 fprintf(file, "REM FLAC__lead-in %" PRIu64 "\n", cs->lead_in); in grabbag__cuesheet_emit()
680 …fprintf(file, "REM FLAC__lead-out %u %" PRIu64 "\n", (uint32_t)cs->tracks[track_num].number, cs->t… in grabbag__cuesheet_emit()