コード例 #1
0
void cue_print_track (FILE *fp, Track *track, int trackno)
{
	Cdtext *cdtext = track_get_cdtext(track);
	int i; 	/* index */

	if (NULL != track_get_filename(track)) {
		/* 
		 * always print filename for track 1, afterwards only
		 * print filename if it differs from the previous track
		 */
		if (0 != strcmp(track_get_filename(track), filename)) {
			filename = track_get_filename(track);
			fprintf(fp, "FILE \"%s\" ", filename);

			/* NOTE: what to do with other formats (MP3, etc)? */
			if (MODE_AUDIO == track_get_mode(track))
				fprintf(fp, "WAVE\n");
			else
				fprintf(fp, "BINARY\n");
		}
	}

	fprintf(fp, "TRACK %02d ", trackno);
	switch (track_get_mode(track)) {
	case MODE_AUDIO:
		fprintf(fp, "AUDIO\n");
		break;
	case MODE_MODE1:
		fprintf(fp, "MODE1/2048\n");
		break;
	case MODE_MODE1_RAW:
		fprintf(fp, "MODE1/2352\n");
		break;
	case MODE_MODE2:
		fprintf(fp, "MODE2/2048\n");
		break;
	case MODE_MODE2_FORM1:
		fprintf(fp, "MODE2/2336\n");
		break;
	case MODE_MODE2_FORM2:
		fprintf(fp, "MODE2/2324\n");
		break;
	case MODE_MODE2_FORM_MIX:
		fprintf(fp, "MODE2/2336\n");
		break;
	case MODE_MODE2_RAW:
		fprintf(fp, "MODE2/2352\n");
		break;
	}

	cue_print_cdtext(cdtext, fp, 1);

	if (0 != track_is_set_flag(track, FLAG_ANY)) {
		fprintf(fp, "FLAGS");
		if (0 != track_is_set_flag(track, FLAG_PRE_EMPHASIS))
			fprintf(fp, " PRE");
		if (0 != track_is_set_flag(track, FLAG_COPY_PERMITTED))
			fprintf(fp, " DCP");
		if (0 != track_is_set_flag(track, FLAG_FOUR_CHANNEL))
			fprintf(fp, " 4CH");
		if (0 != track_is_set_flag(track, FLAG_SCMS))
			fprintf(fp, " SCMS");
		fprintf(fp, "\n");
	}

	if (NULL != track_get_isrc(track))
		fprintf(fp, "ISRC %s\n", track_get_isrc(track));

	if (0 != track_get_zero_pre(track))
		fprintf (fp, "PREGAP %s\n", time_frame_to_mmssff(track_get_zero_pre(track)));

	/* don't print index 0 if index 1 = 0 */
	if (track_get_index(track, 1) == 0)
		i = 1;
	else
		i = 0;

	for (; i < track_get_nindex(track); i++) {
		fprintf(fp, "INDEX %02d ", i);
		cue_print_index( \
		track_get_index(track, i) \
		+ track_get_start(track) \
		- track_get_zero_pre(track) , fp);
	}

	if (0 != track_get_zero_post(track))
		fprintf (fp, "POSTGAP %s\n", time_frame_to_mmssff(track_get_zero_post(track)));

	prev_length = track_get_length(track);
}
コード例 #2
0
ファイル: toc_print.c プロジェクト: magical/cuetools
void toc_print_track (FILE *fp, Track *track)
{
	Cdtext *cdtext = track_get_cdtext(track);
	int i;	/* index */

	fprintf(fp, "TRACK ");
	switch (track_get_mode(track)) {
	case MODE_AUDIO:
		fprintf(fp, "AUDIO");
	       	break;
	case MODE_MODE1:
		fprintf(fp, "MODE1");
	       	break;
	case MODE_MODE1_RAW:
		fprintf(fp, "MODE1_RAW");
	       	break;
	case MODE_MODE2:
		fprintf(fp, "MODE2");
	       	break;
	case MODE_MODE2_FORM1:
		fprintf(fp, "MODE2_FORM1");
	       	break;
	case MODE_MODE2_FORM2:
		fprintf(fp, "MODE2_FORM2");
	       	break;
	case MODE_MODE2_FORM_MIX:
		fprintf(fp, "MODE2_FORM_MIX");
	       	break;
	}
	fprintf(fp, "\n");

	if (0 != track_is_set_flag(track, FLAG_PRE_EMPHASIS)) {
		fprintf(fp, "PRE_EMPHASIS\n");
	}
	if (0 != track_is_set_flag(track, FLAG_COPY_PERMITTED)) {
		fprintf(fp, "COPY\n");
	}
	if (0 != track_is_set_flag(track, FLAG_FOUR_CHANNEL)) {
		fprintf(fp, "FOUR_CHANNEL_AUDIO\n");
	}

	if (NULL != track_get_isrc(track)) {
		fprintf(fp, "ISRC \"%s\"\n", track_get_isrc(track));
	}

	if (0 != cdtext_is_empty(cdtext)) {
		fprintf(fp, "CD_TEXT {\n");
		fprintf(fp, "\tLANGUAGE 0 {\n");
		toc_print_cdtext(cdtext, fp, 1);
		fprintf(fp, "\t}\n");
		fprintf(fp, "}\n");
	}

	if (0 != track_get_zero_pre(track)) {
		fprintf(fp, "SILENCE ");
		fprintf(fp, "%s", time_frame_to_mmssff(track_get_zero_pre(track)));
		fprintf(fp, "\n");
	}

	fprintf(fp, "FILE ");
	fprintf(fp, "\"%s\" ", track_get_filename(track));
	if (0 == track_get_start(track)) {
		fprintf(fp, "0");
	} else {
		fprintf(fp, "%s", time_frame_to_mmssff(track_get_start(track)));
	}
	if (0 != track_get_length(track)) {
		fprintf(fp, " %s", time_frame_to_mmssff(track_get_length(track)));
	}
	fprintf(fp, "\n");

	if (0 != track_get_zero_post(track)) {
		fprintf(fp, "SILENCE ");
		fprintf(fp, "%s", time_frame_to_mmssff(track_get_zero_post(track)));
		fprintf(fp, "\n");
	}

	if (track_get_index(track, 1) != 0) {
		fprintf(fp, "START ");
		fprintf(fp, "%s\n", time_frame_to_mmssff(track_get_index(track, 1)));
	}

	for (i = 2; i < track_get_nindex(track); i++) {
		fprintf(fp, "INDEX ");
		fprintf(fp, "%s\n", time_frame_to_mmssff(
			// Indices in TOC are relative to the START
			track_get_index(track, i) - track_get_index(track, 1)
		));
	}
}