diff options
Diffstat (limited to 'libs/surfaces/control_protocol/control_protocol/timecode.h')
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol/timecode.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/libs/surfaces/control_protocol/control_protocol/timecode.h b/libs/surfaces/control_protocol/control_protocol/timecode.h new file mode 100644 index 0000000000..f30234b248 --- /dev/null +++ b/libs/surfaces/control_protocol/control_protocol/timecode.h @@ -0,0 +1,70 @@ +/* + Copyright (C) 2006 Paul Davis + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_timecode_h__ +#define __ardour_timecode_h__ + +#include <inttypes.h> + +namespace Timecode { + +enum Wrap { + NONE = 0, + FRAMES, + SECONDS, + MINUTES, + HOURS +}; + +struct Time { + bool negative; + uint32_t hours; + uint32_t minutes; + uint32_t seconds; + uint32_t frames; ///< Timecode frames (not audio samples) + uint32_t subframes; ///< Typically unused + float rate; ///< Frame rate of this Time + static float default_rate;///< Rate to use for default constructor + bool drop; ///< Whether this Time uses dropframe Timecode + + Time(float a_rate = default_rate) { + negative = false; + hours = 0; + minutes = 0; + seconds = 0; + frames = 0; + subframes = 0; + rate = a_rate; + } +}; + +Wrap increment( Time& timecode, uint32_t ); +Wrap decrement( Time& timecode, uint32_t ); +Wrap increment_subframes( Time& timecode, uint32_t ); +Wrap decrement_subframes( Time& timecode, uint32_t ); +Wrap increment_seconds( Time& timecode, uint32_t ); +Wrap increment_minutes( Time& timecode, uint32_t ); +Wrap increment_hours( Time& timecode, uint32_t ); +void frames_floor( Time& timecode ); +void seconds_floor( Time& timecode ); +void minutes_floor( Time& timecode ); +void hours_floor( Time& timecode ); + +} // namespace Timecode + +#endif // __ardour_timecode_h__ |