comparison data/model/AlignmentModel.cpp @ 1083:7fb788f891d0

Merge
author Chris Cannam
date Wed, 10 Jun 2015 13:14:32 +0100
parents c1b522cfd1ff
children 48e9f538e6e9
comparison
equal deleted inserted replaced
1082:b6092700a73e 1083:7fb788f891d0
137 137
138 sv_frame_t 138 sv_frame_t
139 AlignmentModel::toReference(sv_frame_t frame) const 139 AlignmentModel::toReference(sv_frame_t frame) const
140 { 140 {
141 #ifdef DEBUG_ALIGNMENT_MODEL 141 #ifdef DEBUG_ALIGNMENT_MODEL
142 SVDEBUG << "AlignmentModel::toReference(" << frame << ")" << endl; 142 cerr << "AlignmentModel::toReference(" << frame << ")" << endl;
143 #endif 143 #endif
144 if (!m_path) { 144 if (!m_path) {
145 if (!m_rawPath) return frame; 145 if (!m_rawPath) return frame;
146 constructPath(); 146 constructPath();
147 } 147 }
150 150
151 sv_frame_t 151 sv_frame_t
152 AlignmentModel::fromReference(sv_frame_t frame) const 152 AlignmentModel::fromReference(sv_frame_t frame) const
153 { 153 {
154 #ifdef DEBUG_ALIGNMENT_MODEL 154 #ifdef DEBUG_ALIGNMENT_MODEL
155 SVDEBUG << "AlignmentModel::fromReference(" << frame << ")" << endl; 155 cerr << "AlignmentModel::fromReference(" << frame << ")" << endl;
156 #endif 156 #endif
157 if (!m_reversePath) { 157 if (!m_reversePath) {
158 if (!m_rawPath) return frame; 158 if (!m_rawPath) return frame;
159 constructReversePath(); 159 constructReversePath();
160 } 160 }
190 190
191 int completion = 0; 191 int completion = 0;
192 m_rawPath->isReady(&completion); 192 m_rawPath->isReady(&completion);
193 193
194 #ifdef DEBUG_ALIGNMENT_MODEL 194 #ifdef DEBUG_ALIGNMENT_MODEL
195 SVDEBUG << "AlignmentModel::pathCompletionChanged: completion = " 195 cerr << "AlignmentModel::pathCompletionChanged: completion = "
196 << completion << endl; 196 << completion << endl;
197 #endif 197 #endif
198 198
199 m_pathComplete = (completion == 100); 199 m_pathComplete = (completion == 100);
200 200
238 sv_frame_t rframe = lrint(value * m_aligned->getSampleRate()); 238 sv_frame_t rframe = lrint(value * m_aligned->getSampleRate());
239 m_path->addPoint(PathPoint(frame, rframe)); 239 m_path->addPoint(PathPoint(frame, rframe));
240 } 240 }
241 241
242 #ifdef DEBUG_ALIGNMENT_MODEL 242 #ifdef DEBUG_ALIGNMENT_MODEL
243 SVDEBUG << "AlignmentModel::constructPath: " << m_path->getPointCount() << " points, at least " << (2 * m_path->getPointCount() * (3 * sizeof(void *) + sizeof(int) + sizeof(PathPoint))) << " bytes" << endl; 243 cerr << "AlignmentModel::constructPath: " << m_path->getPointCount() << " points, at least " << (2 * m_path->getPointCount() * (3 * sizeof(void *) + sizeof(int) + sizeof(PathPoint))) << " bytes" << endl;
244 #endif 244 #endif
245 } 245 }
246 246
247 void 247 void
248 AlignmentModel::constructReversePath() const 248 AlignmentModel::constructReversePath() const
269 sv_frame_t rframe = i->mapframe; 269 sv_frame_t rframe = i->mapframe;
270 m_reversePath->addPoint(PathPoint(rframe, frame)); 270 m_reversePath->addPoint(PathPoint(rframe, frame));
271 } 271 }
272 272
273 #ifdef DEBUG_ALIGNMENT_MODEL 273 #ifdef DEBUG_ALIGNMENT_MODEL
274 SVDEBUG << "AlignmentModel::constructReversePath: " << m_reversePath->getPointCount() << " points, at least " << (2 * m_reversePath->getPointCount() * (3 * sizeof(void *) + sizeof(int) + sizeof(PathPoint))) << " bytes" << endl; 274 cerr << "AlignmentModel::constructReversePath: " << m_reversePath->getPointCount() << " points, at least " << (2 * m_reversePath->getPointCount() * (3 * sizeof(void *) + sizeof(int) + sizeof(PathPoint))) << " bytes" << endl;
275 #endif 275 #endif
276 } 276 }
277 277
278 sv_frame_t 278 sv_frame_t
279 AlignmentModel::align(PathModel *path, sv_frame_t frame) const 279 AlignmentModel::align(PathModel *path, sv_frame_t frame) const
287 287
288 const PathModel::PointList &points = path->getPoints(); 288 const PathModel::PointList &points = path->getPoints();
289 289
290 if (points.empty()) { 290 if (points.empty()) {
291 #ifdef DEBUG_ALIGNMENT_MODEL 291 #ifdef DEBUG_ALIGNMENT_MODEL
292 SVDEBUG << "AlignmentModel::align: No points" << endl; 292 cerr << "AlignmentModel::align: No points" << endl;
293 #endif 293 #endif
294 return frame; 294 return frame;
295 } 295 }
296 296
297 #ifdef DEBUG_ALIGNMENT_MODEL 297 #ifdef DEBUG_ALIGNMENT_MODEL
298 SVDEBUG << "AlignmentModel::align: frame " << frame << " requested" << endl; 298 cerr << "AlignmentModel::align: frame " << frame << " requested" << endl;
299 #endif 299 #endif
300 300
301 PathModel::Point point(frame); 301 PathModel::Point point(frame);
302 PathModel::PointList::const_iterator i = points.lower_bound(point); 302 PathModel::PointList::const_iterator i = points.lower_bound(point);
303 if (i == points.end()) { 303 if (i == points.end()) {
324 #ifdef DEBUG_ALIGNMENT_MODEL 324 #ifdef DEBUG_ALIGNMENT_MODEL
325 cerr << "no other point available" << endl; 325 cerr << "no other point available" << endl;
326 #endif 326 #endif
327 } 327 }
328 328
329 #ifdef DEBUG_ALIGNMENT_MODEL
330 cerr << "foundFrame = " << foundFrame << ", foundMapFrame = " << foundMapFrame
331 << ", followingFrame = " << followingFrame << ", followingMapFrame = "
332 << followingMapFrame << endl;
333 #endif
334
329 if (foundMapFrame < 0) return 0; 335 if (foundMapFrame < 0) return 0;
330 336
331 sv_frame_t resultFrame = foundMapFrame; 337 sv_frame_t resultFrame = foundMapFrame;
332 338
333 if (followingFrame != foundFrame && frame > foundFrame) { 339 if (followingFrame != foundFrame && frame > foundFrame) {
336 double(followingFrame - foundFrame); 342 double(followingFrame - foundFrame);
337 resultFrame += lrint(double(followingMapFrame - foundMapFrame) * interp); 343 resultFrame += lrint(double(followingMapFrame - foundMapFrame) * interp);
338 } 344 }
339 345
340 #ifdef DEBUG_ALIGNMENT_MODEL 346 #ifdef DEBUG_ALIGNMENT_MODEL
341 SVDEBUG << "AlignmentModel::align: resultFrame = " << resultFrame << endl; 347 cerr << "AlignmentModel::align: resultFrame = " << resultFrame << endl;
342 #endif 348 #endif
343 349
344 return resultFrame; 350 return resultFrame;
345 } 351 }
346 352
374 { 380 {
375 if (m_path) m_path->aboutToDelete(); 381 if (m_path) m_path->aboutToDelete();
376 delete m_path; 382 delete m_path;
377 m_path = path; 383 m_path = path;
378 #ifdef DEBUG_ALIGNMENT_MODEL 384 #ifdef DEBUG_ALIGNMENT_MODEL
379 SVDEBUG << "AlignmentModel::setPath: path = " << m_path << endl; 385 cerr << "AlignmentModel::setPath: path = " << m_path << endl;
380 #endif 386 #endif
381 constructReversePath(); 387 constructReversePath();
382 #ifdef DEBUG_ALIGNMENT_MODEL 388 #ifdef DEBUG_ALIGNMENT_MODEL
383 SVDEBUG << "AlignmentModel::setPath: after construction path = " 389 cerr << "AlignmentModel::setPath: after construction path = "
384 << m_path << ", rpath = " << m_reversePath << endl; 390 << m_path << ", rpath = " << m_reversePath << endl;
385 #endif 391 #endif
386 } 392 }
387 393
388 void 394 void