diff options
author | Robin Gareus <robin@gareus.org> | 2012-11-13 16:14:25 +0000 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2012-11-13 16:14:25 +0000 |
commit | 55c7a3bf01ddbc22620eccbf682f5094e6be97e3 (patch) | |
tree | a40aee060c8bbe7495b6bb3e8fa430919e11c08b /libs/timecode | |
parent | 1f1cba381496187b3e442f02a4c5657a2cabd891 (diff) |
add timecode format parser
git-svn-id: svn://localhost/ardour2/branches/3.0@13479 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/timecode')
-rw-r--r-- | libs/timecode/src/time.cc | 18 | ||||
-rw-r--r-- | libs/timecode/timecode/time.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/libs/timecode/src/time.cc b/libs/timecode/src/time.cc index 10dfd2fb59..b39da34d6d 100644 --- a/libs/timecode/src/time.cc +++ b/libs/timecode/src/time.cc @@ -623,6 +623,24 @@ std::string timecode_format_sampletime ( return timecode_format_time(t); } +bool parse_timecode_format(std::string tc, Timecode::Time &TC) { + char negative[2]; + char ignored[2]; + TC.subframes = 0; + if (sscanf (tc.c_str(), "%[- ]%" PRId32 ":%" PRId32 ":%" PRId32 "%[:;]%" PRId32, + negative, &TC.hours, &TC.minutes, &TC.seconds, ignored, &TC.frames) != 6) { + TC.hours = TC.minutes = TC.seconds = TC.frames = 0; + TC.negative = false; + return false; + } + if (negative[0]=='-') { + TC.negative = true; + } else { + TC.negative = false; + } + return true; +} + void timecode_to_sample( Timecode::Time& timecode, int64_t& sample, diff --git a/libs/timecode/timecode/time.h b/libs/timecode/timecode/time.h index 23655bfe5d..dcd537c7e5 100644 --- a/libs/timecode/timecode/time.h +++ b/libs/timecode/timecode/time.h @@ -112,6 +112,8 @@ std::string timecode_format_sampletime ( double timecode_frames_per_second, bool timecode_drop_frames ); +bool parse_timecode_format(std::string tc, Timecode::Time &TC); + void timecode_to_sample( Timecode::Time& timecode, int64_t& sample, |