break;
case MinSec:
+ ok = minsec_validate_edit (edit_string);
break;
case Frames:
if (sscanf (str.c_str(), BBT_SCANF_FORMAT, &any.bbt.bars, &any.bbt.beats, &any.bbt.ticks) != 3) {
return false;
}
-
+
+ if (any.bbt.ticks > Timecode::BBT_Time::ticks_per_beat) {
+ return false;
+ }
+
if (!is_duration && any.bbt.bars == 0) {
return false;
}
return false;
}
- if (TC.minutes > 59U || TC.seconds > 59U) {
+ if (TC.hours > 23U || TC.minutes > 59U || TC.seconds > 59U) {
return false;
}
return true;
}
+bool
+AudioClock::minsec_validate_edit (const string& str)
+{
+ int hrs, mins, secs, millisecs;
+
+ if (sscanf (str.c_str(), "%d:%d:%d.%d", &hrs, &mins, &secs, &millisecs) != 4) {
+ return false;
+ }
+
+ if (hrs > 23 || mins > 59 || secs > 59 || millisecs > 999) {
+ return false;
+ }
+
+ return true;
+}
+
framepos_t
AudioClock::frames_from_timecode_string (const string& str) const
{
bool timecode_validate_edit (const std::string&);
bool bbt_validate_edit (const std::string&);
+ bool minsec_validate_edit (const std::string&);
framepos_t frames_from_timecode_string (const std::string&) const;
framepos_t frames_from_bbt_string (framepos_t, const std::string&) const;