ardour
timecode_tester.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2012 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 void
21 AudioClock::timecode_tester ()
22 {
23 #if 0
24 #define Timecode_SAMPLE_TEST_1
25 #define Timecode_SAMPLE_TEST_2
26 #define Timecode_SAMPLE_TEST_3
27 #define Timecode_SAMPLE_TEST_4
28 #define Timecode_SAMPLE_TEST_5
29 #define Timecode_SAMPLE_TEST_6
30 #define Timecode_SAMPLE_TEST_7
31 
32  // Testcode for timecode<->sample conversions (P.S.)
33  Timecode::Time timecode1;
34  framepos_t sample1;
35  framepos_t oldsample = 0;
36  Timecode::Time timecode2;
37  framecnt_t sample_increment;
38 
39  sample_increment = (framecnt_t)rint(_session->frame_rate() / _session->timecode_frames_per_second);
40 
41 #ifdef Timecode_SAMPLE_TEST_1
42  // Test 1: use_offset = false, use_subframes = false
43  cout << "use_offset = false, use_subframes = false" << endl;
44  for (int i = 0; i < 108003; i++) {
45  _session->timecode_to_sample( timecode1, sample1, false /* use_offset */, false /* use_subframes */ );
46  _session->sample_to_timecode( sample1, timecode2, false /* use_offset */, false /* use_subframes */ );
47 
48  if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
49  cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
50  cout << "timecode1: " << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
51  cout << "sample: " << sample1 << endl;
52  cout << "sample: " << sample1 << " -> ";
53  cout << "timecode2: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
54  break;
55  }
56 
57  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
58  cout << "ERROR: timecode2 not equal timecode1" << endl;
59  cout << "timecode1: " << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
60  cout << "sample: " << sample1 << endl;
61  cout << "sample: " << sample1 << " -> ";
62  cout << "timecode2: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
63  break;
64  }
65  oldsample = sample1;
66  _session->timecode_increment( timecode1 );
67  }
68 
69  cout << "sample_increment: " << sample_increment << endl;
70  cout << "sample: " << sample1 << " -> ";
71  cout << "timecode: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
72 #endif
73 
74 #ifdef Timecode_SAMPLE_TEST_2
75  // Test 2: use_offset = true, use_subframes = false
76  cout << "use_offset = true, use_subframes = false" << endl;
77 
78  timecode1.hours = 0;
79  timecode1.minutes = 0;
80  timecode1.seconds = 0;
81  timecode1.frames = 0;
82  timecode1.subframes = 0;
83  sample1 = oldsample = 0;
84 
85  _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
86  cout << "Starting at sample: " << sample1 << " -> ";
87  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
88 
89  for (int i = 0; i < 108003; i++) {
90  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
91  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
92 
93 // cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
94 // cout << "sample: " << sample1 << endl;
95 // cout << "sample: " << sample1 << " -> ";
96 // cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
97 
98  if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
99  cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
100  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
101  cout << "sample: " << sample1 << endl;
102  cout << "sample: " << sample1 << " -> ";
103  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
104  break;
105  }
106 
107  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
108  cout << "ERROR: timecode2 not equal timecode1" << endl;
109  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
110  cout << "sample: " << sample1 << endl;
111  cout << "sample: " << sample1 << " -> ";
112  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
113  break;
114  }
115  oldsample = sample1;
116  _session->timecode_increment( timecode1 );
117  }
118 
119  cout << "sample_increment: " << sample_increment << endl;
120  cout << "sample: " << sample1 << " -> ";
121  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
122 #endif
123 
124 #ifdef Timecode_SAMPLE_TEST_3
125  // Test 3: use_offset = true, use_subframes = false, decrement
126  cout << "use_offset = true, use_subframes = false, decrement" << endl;
127 
128  _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
129  cout << "Starting at sample: " << sample1 << " -> ";
130  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
131 
132  for (int i = 0; i < 108003; i++) {
133  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
134  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
135 
136 // cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
137 // cout << "sample: " << sample1 << endl;
138 // cout << "sample: " << sample1 << " -> ";
139 // cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
140 
141  if ((i > 0) && ( ((oldsample - sample1) != sample_increment) && ((oldsample - sample1) != (sample_increment + 1)) && ((oldsample - sample1) != (sample_increment - 1)))) {
142  cout << "ERROR: sample increment not right: " << (oldsample - sample1) << " != " << sample_increment << endl;
143  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
144  cout << "sample: " << sample1 << endl;
145  cout << "sample: " << sample1 << " -> ";
146  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
147  break;
148  }
149 
150  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
151  cout << "ERROR: timecode2 not equal timecode1" << endl;
152  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
153  cout << "sample: " << sample1 << endl;
154  cout << "sample: " << sample1 << " -> ";
155  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
156  break;
157  }
158  oldsample = sample1;
159  _session->timecode_decrement( timecode1 );
160  }
161 
162  cout << "sample_decrement: " << sample_increment << endl;
163  cout << "sample: " << sample1 << " -> ";
164  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
165 #endif
166 
167 
168 #ifdef Timecode_SAMPLE_TEST_4
169  // Test 4: use_offset = true, use_subframes = true
170  cout << "use_offset = true, use_subframes = true" << endl;
171 
172  for (long sub = 5; sub < 80; sub += 5) {
173  timecode1.hours = 0;
174  timecode1.minutes = 0;
175  timecode1.seconds = 0;
176  timecode1.frames = 0;
177  timecode1.subframes = 0;
178  sample1 = oldsample = (sample_increment * sub) / 80;
179 
180  _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, true /* use_subframes */ );
181 
182  cout << "starting at sample: " << sample1 << " -> ";
183  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
184 
185  for (int i = 0; i < 108003; i++) {
186  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, true /* use_subframes */ );
187  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, true /* use_subframes */ );
188 
189  if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
190  cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
191  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
192  cout << "sample: " << sample1 << endl;
193  cout << "sample: " << sample1 << " -> ";
194  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
195  //break;
196  }
197 
198  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames || timecode2.subframes != timecode1.subframes) {
199  cout << "ERROR: timecode2 not equal timecode1" << endl;
200  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
201  cout << "sample: " << sample1 << endl;
202  cout << "sample: " << sample1 << " -> ";
203  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
204  break;
205  }
206  oldsample = sample1;
207  _session->timecode_increment( timecode1 );
208  }
209 
210  cout << "sample_increment: " << sample_increment << endl;
211  cout << "sample: " << sample1 << " -> ";
212  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
213 
214  for (int i = 0; i < 108003; i++) {
215  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, true /* use_subframes */ );
216  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, true /* use_subframes */ );
217 
218  if ((i > 0) && ( ((oldsample - sample1) != sample_increment) && ((oldsample - sample1) != (sample_increment + 1)) && ((oldsample - sample1) != (sample_increment - 1)))) {
219  cout << "ERROR: sample increment not right: " << (oldsample - sample1) << " != " << sample_increment << endl;
220  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
221  cout << "sample: " << sample1 << endl;
222  cout << "sample: " << sample1 << " -> ";
223  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
224  //break;
225  }
226 
227  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames || timecode2.subframes != timecode1.subframes) {
228  cout << "ERROR: timecode2 not equal timecode1" << endl;
229  cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
230  cout << "sample: " << sample1 << endl;
231  cout << "sample: " << sample1 << " -> ";
232  cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
233  break;
234  }
235  oldsample = sample1;
236  _session->timecode_decrement( timecode1 );
237  }
238 
239  cout << "sample_decrement: " << sample_increment << endl;
240  cout << "sample: " << sample1 << " -> ";
241  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
242  }
243 #endif
244 
245 
246 #ifdef Timecode_SAMPLE_TEST_5
247  // Test 5: use_offset = true, use_subframes = false, increment seconds
248  cout << "use_offset = true, use_subframes = false, increment seconds" << endl;
249 
250  timecode1.hours = 0;
251  timecode1.minutes = 0;
252  timecode1.seconds = 0;
253  timecode1.frames = 0;
254  timecode1.subframes = 0;
255  sample1 = oldsample = 0;
256  sample_increment = _session->frame_rate();
257 
258  _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
259  cout << "Starting at sample: " << sample1 << " -> ";
260  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
261 
262  for (int i = 0; i < 3600; i++) {
263  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
264  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
265 
266 // cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
267 // cout << "sample: " << sample1 << endl;
268 // cout << "sample: " << sample1 << " -> ";
269 // cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
270 
271 // if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
272 // {
273 // cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
274 // break;
275 // }
276 
277  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
278  cout << "ERROR: timecode2 not equal timecode1" << endl;
279  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
280  cout << "sample: " << sample1 << endl;
281  cout << "sample: " << sample1 << " -> ";
282  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
283  break;
284  }
285  oldsample = sample1;
286  _session->timecode_increment_seconds( timecode1 );
287  }
288 
289  cout << "sample_increment: " << sample_increment << endl;
290  cout << "sample: " << sample1 << " -> ";
291  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
292 #endif
293 
294 
295 #ifdef Timecode_SAMPLE_TEST_6
296  // Test 6: use_offset = true, use_subframes = false, increment minutes
297  cout << "use_offset = true, use_subframes = false, increment minutes" << endl;
298 
299  timecode1.hours = 0;
300  timecode1.minutes = 0;
301  timecode1.seconds = 0;
302  timecode1.frames = 0;
303  timecode1.subframes = 0;
304  sample1 = oldsample = 0;
305  sample_increment = _session->frame_rate() * 60;
306 
307  _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
308  cout << "Starting at sample: " << sample1 << " -> ";
309  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
310 
311  for (int i = 0; i < 60; i++) {
312  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
313  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
314 
315 // cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
316 // cout << "sample: " << sample1 << endl;
317 // cout << "sample: " << sample1 << " -> ";
318 // cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
319 
320 // if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
321 // {
322 // cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
323 // break;
324 // }
325 
326  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
327  cout << "ERROR: timecode2 not equal timecode1" << endl;
328  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
329  cout << "sample: " << sample1 << endl;
330  cout << "sample: " << sample1 << " -> ";
331  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
332  break;
333  }
334  oldsample = sample1;
335  _session->timecode_increment_minutes( timecode1 );
336  }
337 
338  cout << "sample_increment: " << sample_increment << endl;
339  cout << "sample: " << sample1 << " -> ";
340  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
341 #endif
342 
343 #ifdef Timecode_SAMPLE_TEST_7
344  // Test 7: use_offset = true, use_subframes = false, increment hours
345  cout << "use_offset = true, use_subframes = false, increment hours" << endl;
346 
347  timecode1.hours = 0;
348  timecode1.minutes = 0;
349  timecode1.seconds = 0;
350  timecode1.frames = 0;
351  timecode1.subframes = 0;
352  sample1 = oldsample = 0;
353  sample_increment = _session->frame_rate() * 60 * 60;
354 
355  _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
356  cout << "Starting at sample: " << sample1 << " -> ";
357  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
358 
359  for (int i = 0; i < 10; i++) {
360  _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
361  _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
362 
363 // cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
364 // cout << "sample: " << sample1 << endl;
365 // cout << "sample: " << sample1 << " -> ";
366 // cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
367 
368 // if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
369 // {
370 // cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
371 // break;
372 // }
373 
374  if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
375  cout << "ERROR: timecode2 not equal timecode1" << endl;
376  cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
377  cout << "sample: " << sample1 << endl;
378  cout << "sample: " << sample1 << " -> ";
379  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
380  break;
381  }
382  oldsample = sample1;
383  _session->timecode_increment_hours( timecode1 );
384  }
385 
386  cout << "sample_increment: " << sample_increment << endl;
387  cout << "sample: " << sample1 << " -> ";
388  cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
389 #endif
390 
391 #endif
392 }
double timecode_frames_per_second() const
Definition: session_time.cc:55
framecnt_t frame_rate() const
Definition: session.h:365
int64_t framecnt_t
Definition: types.h:76
void sample_to_timecode(framepos_t sample, Timecode::Time &timecode, bool use_offset, bool use_subframes) const
void timecode_to_sample(Timecode::Time &timecode, framepos_t &sample, bool use_offset, bool use_subframes) const
int64_t framepos_t
ARDOUR::Session * _session