From 477628a88463ace31dcb8990612296d698d727cb Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 3 Mar 2019 10:17:46 -0700 Subject: [PATCH] rename LTC_Slave::prev_sample to prev_frame, correcting s/frame/sample/ changes --- libs/ardour/ardour/transport_master.h | 2 +- libs/ardour/ltc_slave.cc | 53 +++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/libs/ardour/ardour/transport_master.h b/libs/ardour/ardour/transport_master.h index 9ddc70c670..0c1ee085e3 100644 --- a/libs/ardour/ardour/transport_master.h +++ b/libs/ardour/ardour/transport_master.h @@ -527,7 +527,7 @@ public: LTCDecoder * decoder; double samples_per_ltc_frame; Timecode::Time timecode; - LTCFrameExt prev_sample; + LTCFrameExt prev_frame; bool fps_detected; samplecnt_t monotonic_cnt; diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc index b7b3ace928..0489107e0f 100644 --- a/libs/ardour/ltc_slave.cc +++ b/libs/ardour/ltc_slave.cc @@ -69,7 +69,7 @@ LTC_TransportMaster::LTC_TransportMaster (std::string const & name) DEBUG_TRACE (DEBUG::Slave, string_compose ("LTC registered %1\n", _port->name())); - memset (&prev_sample, 0, sizeof(LTCFrameExt)); + memset (&prev_frame, 0, sizeof(LTCFrameExt)); resync_latency(); @@ -242,30 +242,67 @@ LTC_TransportMaster::equal_ltc_sample_time(LTCFrame *a, LTCFrame *b) { } return true; } +static ostream& operator<< (ostream& ostr, LTCFrame& a) +{ + ostr + << a.hours_tens + << a.hours_units << ':' + << a.mins_tens + << a.mins_units << ':' + << a.secs_tens + << a.secs_units << ':' + << a.frame_tens + << a.frame_units + << (a.dfbit ? 'D' : ' ') + ; + return ostr; +} + +static ostream& operator<< (ostream& ostr, SMPTETimecode& t) +{ + for (size_t i = 0; i < sizeof (timezone); ++i) { + ostr << t.timezone[i]; + } + ostr << ' ' + << t.years << ' ' + << t.months << ' ' + << t.days << ' ' + << t.hours << ' ' + << t.mins << ' ' + << t.secs << ' ' + << t.frame + ; + return ostr; +} bool LTC_TransportMaster::detect_discontinuity(LTCFrameExt *sample, int fps, bool fuzzy) { bool discontinuity_detected = false; if (fuzzy && ( - ( sample->reverse && prev_sample.ltc.frame_units == 0) + ( sample->reverse && prev_frame.ltc.frame_units == 0) ||(!sample->reverse && sample->ltc.frame_units == 0) )) { - memcpy(&prev_sample, sample, sizeof(LTCFrameExt)); + memcpy(&prev_frame, sample, sizeof(LTCFrameExt)); return false; } if (sample->reverse) { - ltc_frame_decrement(&prev_sample.ltc, fps, LTC_TV_525_60, 0); + ltc_frame_decrement(&prev_frame.ltc, fps, LTC_TV_525_60, 0); } else { - ltc_frame_increment(&prev_sample.ltc, fps, LTC_TV_525_60, 0); + cerr << "increment from " << prev_frame.ltc << " to "; + ltc_frame_increment(&prev_frame.ltc, fps, LTC_TV_525_60, 0); + cerr << prev_frame.ltc << " @ " << fps << endl; } - if (!equal_ltc_sample_time(&prev_sample.ltc, &sample->ltc)) { + + if (!equal_ltc_sample_time(&prev_frame.ltc, &sample->ltc)) { + cerr << prev_frame.ltc << " != " << sample->ltc << endl; + cerr << "discontinuty detected, prev != sample\n"; discontinuity_detected = true; } - memcpy(&prev_sample, sample, sizeof(LTCFrameExt)); - return discontinuity_detected; + memcpy (&prev_frame, sample, sizeof(LTCFrameExt)); + return discontinuity_detected; } bool