annotate foosdk/sdk/foobar2000/helpers/cue_creator.cpp @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "StdAfx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "cue_creator.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "../SDK/chapterizer.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 static pfc::string8 format_meta(const file_info& p_source, const char* p_name, bool p_allow_space = true) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 pfc::string8 temp, ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 p_source.meta_format(p_name, temp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 temp.replace_byte('\"', '\'');
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 uReplaceString(ret, temp, pfc_infinite, "\x0d\x0a", 2, "\\", 1, false);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 if (!p_allow_space) ret.replace_byte(' ', '_');
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 ret.replace_nontext_chars();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 static bool is_meta_same_everywhere(const cue_creator::t_entry_list & p_list,const char * p_meta)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 pfc::string8_fastalloc reference,temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 bool first = true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 for(auto & iter : p_list) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 if ( ! iter.isTrackAudio() ) continue;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 if ( first ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 first = false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 if (!iter.m_infos.meta_format(p_meta,reference)) return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 if (!iter.m_infos.meta_format(p_meta,temp)) return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 if (strcmp(temp,reference)!=0) return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #define g_eol "\r\n"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 namespace cue_creator
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 pfc::string_formatter create(const t_entry_list& p_list) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 pfc::string_formatter ret; create(ret, p_list); return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 void create(pfc::string_formatter & p_out,const t_entry_list & p_data)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 if (p_data.get_count() == 0) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 bool album_artist_global = is_meta_same_everywhere(p_data,"album artist"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 artist_global = is_meta_same_everywhere(p_data,"artist"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 album_global = is_meta_same_everywhere(p_data,"album"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 genre_global = is_meta_same_everywhere(p_data,"genre"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 date_global = is_meta_same_everywhere(p_data,"date"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 discid_global = is_meta_same_everywhere(p_data,"discid"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 comment_global = is_meta_same_everywhere(p_data,"comment"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 catalog_global = is_meta_same_everywhere(p_data,"catalog"),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 songwriter_global = is_meta_same_everywhere(p_data,"songwriter");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 auto firstTrack = p_data.first();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 while( firstTrack.is_valid() && ! firstTrack->isTrackAudio() ) ++ firstTrack;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 if ( firstTrack.is_valid() ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 if (genre_global) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 p_out << "REM GENRE " << format_meta(firstTrack->m_infos,"genre") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 if (date_global) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 p_out << "REM DATE " << format_meta(firstTrack->m_infos,"date") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 if (discid_global) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 p_out << "REM DISCID " << format_meta(firstTrack->m_infos,"discid") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 if (comment_global) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 p_out << "REM COMMENT " << format_meta(firstTrack->m_infos,"comment") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 if (is_meta_same_everywhere(p_data, "discnumber")) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 p_out << "REM DISCNUMBER " << format_meta(firstTrack->m_infos, "discnumber") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 if (is_meta_same_everywhere(p_data, "totaldiscs")) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 p_out << "REM TOTALDISCS " << format_meta(firstTrack->m_infos, "totaldiscs") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 if (catalog_global) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 p_out << "CATALOG " << format_meta(firstTrack->m_infos,"catalog") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 if (songwriter_global) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 p_out << "SONGWRITER \"" << format_meta(firstTrack->m_infos,"songwriter") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 if (album_artist_global)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 p_out << "PERFORMER \"" << format_meta(firstTrack->m_infos,"album artist") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 artist_global = false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 else if (artist_global)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 p_out << "PERFORMER \"" << format_meta(firstTrack->m_infos,"artist") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 if (album_global)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 p_out << "TITLE \"" << format_meta(firstTrack->m_infos,"album") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 replaygain_info::t_text_buffer rgbuffer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 replaygain_info rg = firstTrack->m_infos.get_replaygain();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 if (rg.format_album_gain(rgbuffer))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 p_out << "REM REPLAYGAIN_ALBUM_GAIN " << rgbuffer << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 if (rg.format_album_peak(rgbuffer))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 p_out << "REM REPLAYGAIN_ALBUM_PEAK " << rgbuffer << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 pfc::string8 last_file;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 for(t_entry_list::const_iterator iter = p_data.first();iter.is_valid();++iter)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 if (strcmp(last_file,iter->m_file) != 0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 auto fileType = iter->m_fileType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 if ( fileType.length() == 0 ) fileType = "WAVE";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 p_out << "FILE \"" << iter->m_file << "\" " << fileType << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 last_file = iter->m_file;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 auto trackType = iter->m_trackType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 if (trackType.length() == 0) trackType = "AUDIO";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 p_out << " TRACK " << pfc::format_int(iter->m_track_number,2) << " " << trackType << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 if (iter->m_infos.meta_find("title") != pfc_infinite)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 p_out << " TITLE \"" << format_meta(iter->m_infos,"title") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 const bool bHaveArtist = iter->m_infos.meta_exists("artist");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 if (!artist_global && bHaveArtist) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 p_out << " PERFORMER \"" << format_meta(iter->m_infos,"artist") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 } else if (album_artist_global && !bHaveArtist) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 // special case: album artist set, track artist not set
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 p_out << " PERFORMER \"\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 if (!songwriter_global && iter->m_infos.meta_find("songwriter") != pfc_infinite) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 p_out << " SONGWRITER \"" << format_meta(iter->m_infos,"songwriter") << "\"" << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 if (iter->m_infos.meta_find("isrc") != pfc_infinite) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 p_out << " ISRC " << format_meta(iter->m_infos,"isrc") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 if (!date_global && iter->m_infos.meta_find("date") != pfc_infinite) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 p_out << " REM DATE " << format_meta(iter->m_infos,"date") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 if (!comment_global && iter->m_infos.meta_exists("comment")) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 p_out << " REM COMMENT " << format_meta(iter->m_infos, "comment") << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 replaygain_info::t_text_buffer rgbuffer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 replaygain_info rg = iter->m_infos.get_replaygain();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 if (rg.format_track_gain(rgbuffer))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 p_out << " REM REPLAYGAIN_TRACK_GAIN " << rgbuffer << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 if (rg.format_track_peak(rgbuffer))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 p_out << " REM REPLAYGAIN_TRACK_PEAK " << rgbuffer << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 if (!iter->m_flags.is_empty()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 p_out << " FLAGS " << iter->m_flags << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 if (iter->m_index_list.m_positions[0] < iter->m_index_list.m_positions[1])
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 if (iter->m_index_list.m_positions[0] < 0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 p_out << " PREGAP " << cuesheet_format_index_time(iter->m_index_list.m_positions[1] - iter->m_index_list.m_positions[0]) << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 p_out << " INDEX 00 " << cuesheet_format_index_time(iter->m_index_list.m_positions[0]) << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 p_out << " INDEX 01 " << cuesheet_format_index_time(iter->m_index_list.m_positions[1]) << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 for(unsigned n=2;n<t_cuesheet_index_list::count && iter->m_index_list.m_positions[n] > 0;n++)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 p_out << " INDEX " << pfc::format_uint(n,2) << " " << cuesheet_format_index_time(iter->m_index_list.m_positions[n]) << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 // p_out << " INDEX 01 " << cuesheet_format_index_time(iter->m_offset) << g_eol;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 void t_entry::set_simple_index(double p_time)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 m_index_list.reset();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 m_index_list.m_positions[0] = m_index_list.m_positions[1] = p_time;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 void t_entry::set_index01(double index0, double index1) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 PFC_ASSERT( index0 <= index1 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 m_index_list.reset();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 m_index_list.m_positions[0] = index0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 m_index_list.m_positions[1] = index1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 bool t_entry::isTrackAudio() const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 PFC_ASSERT( m_trackType.length() > 0 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 return pfc::stringEqualsI_ascii( m_trackType, "AUDIO" );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209