debug flag for MTC; make ardour/timecode.h simply include the "authoritative" one in libs/surfaces/control_protocol

git-svn-id: svn://localhost/ardour2/branches/3.0@6209 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis
2009-11-29 22:08:18 +00:00
parent 34773ee5c0
commit b7341e0026
4 changed files with 27 additions and 76 deletions

View File

@@ -129,6 +129,8 @@ parse_debug_options (const char* str)
bits |= ARDOUR::DEBUG::Graph;
} else if (strncasecmp (p, "destruction", strlen (p)) == 0) {
bits |= ARDOUR::DEBUG::Destruction;
} else if (strncasecmp (p, "mtc", strlen (p)) == 0) {
bits |= ARDOUR::DEBUG::MTC;
}
p = strtok_r (0, ",", &sp);

View File

@@ -43,7 +43,8 @@ namespace ARDOUR {
Latency = 0x20,
Processors = 0x40,
Graph = 0x80,
Destruction = 0x100
Destruction = 0x100,
MTC = 0x200
};
}

View File

@@ -1,79 +1,24 @@
/* Copyright (C) 2006 Paul Davis
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU 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.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
/*
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__
#ifndef __libardour_timecode_h__
#define __libardour_timecode_h__
#include <inttypes.h>
#include "control_protocol/timecode.h"
namespace Timecode {
enum Wrap {
NONE = 0,
FRAMES,
SECONDS,
MINUTES,
HOURS
};
/** Timecode frame rate (in frames per second).
*
* This should be eliminated in favour of a float to support arbitrary rates.
*/
enum FPS {
MTC_24_FPS = 0,
MTC_25_FPS = 1,
MTC_30_FPS_DROP = 2,
MTC_30_FPS = 3
};
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
FPS rate; ///< Frame rate of this Time
static FPS default_rate; ///< Rate to use for default constructor
Time(FPS a_rate = default_rate) {
negative = false;
hours = 0;
minutes = 0;
seconds = 0;
frames = 0;
subframes = 0;
rate = a_rate;
}
};
Wrap increment( Time& timecode );
Wrap decrement( Time& timecode );
Wrap increment_subframes( Time& timecode );
Wrap decrement_subframes( Time& timecode );
Wrap increment_seconds( Time& timecode );
Wrap increment_minutes( Time& timecode );
Wrap increment_hours( Time& timecode );
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__
#endif // __libardour_timecode_h__

View File

@@ -26,6 +26,7 @@
#include "pbd/pthread_utils.h"
#include "midi++/port.h"
#include "ardour/debug.h"
#include "ardour/slave.h"
#include "ardour/session.h"
#include "ardour/audioengine.h"
@@ -136,6 +137,8 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full)
session.timecode_to_sample (timecode, mtc_frame, true, false);
DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC time now %1 = frame %2 (from full message ? %3)\n", timecode, mtc_frame, was_full));
if (was_full) {
current.guard1++;