From ade47bdc34e9b37ac7380fc35f3f12a79cddadd9 Mon Sep 17 00:00:00 2001 From: sletz Date: Fri, 18 Jul 2008 16:00:59 +0000 Subject: [PATCH] Remove transport_type.h file, move transport types in types.h file. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2702 0c269be4-1314-0410-8aa9-9f06e86f4224 --- ChangeLog | 1 + common/JackAudioAdapterInterface.h | 2 +- common/JackClient.h | 1 - common/JackClientControl.h | 1 - common/JackNetDriver.h | 1 - common/JackNetTool.h | 17 +- common/JackTransportEngine.h | 1 - common/jack/transport.h | 217 ------------------------- common/jack/types.h | 239 +++++++++++++++++++++++++-- common/transport_types.h | 252 ----------------------------- windows/JackPortAudioDriver.cpp | 2 +- 11 files changed, 239 insertions(+), 495 deletions(-) delete mode 100644 common/transport_types.h diff --git a/ChangeLog b/ChangeLog index deb24842..70eb9ea6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,7 @@ Romain Moret * Correct audioadapter when a sample rate value different from jack server one is chosen. * Cleanup in JackTransportEngine, move some code that was in JackClient class. + * Remove transport_type.h file, move transport types in types.h file. 2008-07-12 Stephane Letz diff --git a/common/JackAudioAdapterInterface.h b/common/JackAudioAdapterInterface.h index bfba7881..2695daa3 100644 --- a/common/JackAudioAdapterInterface.h +++ b/common/JackAudioAdapterInterface.h @@ -127,7 +127,7 @@ namespace Jack virtual int SetAudioSampleRate(jack_nframes_t sample_rate) { fSampleRate = sample_rate; - // Consummer (Audio) keeps the same SR + // Consumer keeps the same SR fProducerDLL.Init(fBufferSize, fSampleRate); return 0; } diff --git a/common/JackClient.h b/common/JackClient.h index 63aab6a8..f78ebf7b 100644 --- a/common/JackClient.h +++ b/common/JackClient.h @@ -26,7 +26,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "JackConstants.h" #include "JackSynchro.h" #include "types.h" -#include "transport_types.h" #include "varargs.h" #include diff --git a/common/JackClientControl.h b/common/JackClientControl.h index 77c3f41d..4aa31b0c 100644 --- a/common/JackClientControl.h +++ b/common/JackClientControl.h @@ -25,7 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "JackPort.h" #include "JackSynchro.h" #include "JackNotification.h" -#include "transport_types.h" namespace Jack { diff --git a/common/JackNetDriver.h b/common/JackNetDriver.h index a13fec59..332af8af 100644 --- a/common/JackNetDriver.h +++ b/common/JackNetDriver.h @@ -23,7 +23,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "JackAudioDriver.h" #include "JackNetTool.h" -#include "transport_types.h" namespace Jack { diff --git a/common/JackNetTool.h b/common/JackNetTool.h index c4a30e87..78338e34 100644 --- a/common/JackNetTool.h +++ b/common/JackNetTool.h @@ -23,6 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "JackError.h" #include "JackTools.h" #include "JackPlatformNetSocket.h" +#include "types.h" #include #include @@ -40,21 +41,21 @@ namespace Jack struct _session_params { - char fPacketType[7]; //packet type ('param') - char fProtocolVersion; //version + char fPacketType[7]; //packet type ('param') + char fProtocolVersion; //version uint32_t fPacketID; //indicates the packet type - char fMasterNetName[256]; //master hostname (network) - char fSlaveNetName[256]; //slave hostname (network) + char fMasterNetName[256]; //master hostname (network) + char fSlaveNetName[256]; //slave hostname (network) uint32_t fMtu; //connection mtu uint32_t fID; //slave's ID - uint32_t fSendAudioChannels; //number of master->slave channels - uint32_t fReturnAudioChannels; //number of slave->master channels + uint32_t fSendAudioChannels; //number of master->slave channels + uint32_t fReturnAudioChannels; //number of slave->master channels uint32_t fSendMidiChannels; //number of master->slave midi channels - uint32_t fReturnMidiChannels; //number of slave->master midi channels + uint32_t fReturnMidiChannels; //number of slave->master midi channels uint32_t fSampleRate; //session sample rate uint32_t fPeriodSize; //period size uint32_t fFramesPerPacket; //complete frames per packet - uint32_t fBitdepth; //samples bitdepth (unused) + uint32_t fBitdepth; //samples bitdepth (unused) char fName[JACK_CLIENT_NAME_SIZE]; //slave's name }; diff --git a/common/JackTransportEngine.h b/common/JackTransportEngine.h index a2800685..0ca481b0 100644 --- a/common/JackTransportEngine.h +++ b/common/JackTransportEngine.h @@ -21,7 +21,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef __JackTransportEngine__ #define __JackTransportEngine__ -#include "transport_types.h" #include "JackClientInterface.h" #include "JackConstants.h" #include "JackAtomicArrayState.h" diff --git a/common/jack/transport.h b/common/jack/transport.h index 51e5dc16..923304e5 100644 --- a/common/jack/transport.h +++ b/common/jack/transport.h @@ -27,108 +27,6 @@ extern "C" { #include -/** - * Transport states. - */ -typedef enum { - - /* the order matters for binary compatibility */ - JackTransportStopped = 0, /**< Transport halted */ - JackTransportRolling = 1, /**< Transport playing */ - JackTransportLooping = 2, /**< For OLD_TRANSPORT, now ignored */ - JackTransportStarting = 3, /**< Waiting for sync ready */ - -} jack_transport_state_t; - -typedef uint64_t jack_unique_t; /**< Unique ID (opaque) */ - -/** - * Optional struct jack_position_t fields. - */ -typedef enum { - - JackPositionBBT = 0x10, /**< Bar, Beat, Tick */ - JackPositionTimecode = 0x20, /**< External timecode */ - JackBBTFrameOffset = 0x40, /**< Frame offset of BBT information */ - JackAudioVideoRatio = 0x80, /**< audio frames per video frame */ - JackVideoFrameOffset = 0x100 /**< frame offset of first video frame */ -} jack_position_bits_t; - -/** all valid position bits */ -#define JACK_POSITION_MASK (JackPositionBBT|JackPositionTimecode|JackBBTFrameOffset|JackAudioVideoRatio|JackVideoFrameOffset) -#define EXTENDED_TIME_INFO - -/** - * Struct for transport position information. - */ -typedef struct { - - /* these four cannot be set from clients: the server sets them */ - jack_unique_t unique_1; /**< unique ID */ - jack_time_t usecs; /**< monotonic, free-rolling */ - jack_nframes_t frame_rate; /**< current frame rate (per second) */ - jack_nframes_t frame; /**< frame number, always present */ - - jack_position_bits_t valid; /**< which other fields are valid */ - - /* JackPositionBBT fields: */ - int32_t bar; /**< current bar */ - int32_t beat; /**< current beat-within-bar */ - int32_t tick; /**< current tick-within-beat */ - double bar_start_tick; - - float beats_per_bar; /**< time signature "numerator" */ - float beat_type; /**< time signature "denominator" */ - double ticks_per_beat; - double beats_per_minute; - - /* JackPositionTimecode fields: (EXPERIMENTAL: could change) */ - double frame_time; /**< current time in seconds */ - double next_time; /**< next sequential frame_time - (unless repositioned) */ - - /* JackBBTFrameOffset fields: */ - jack_nframes_t bbt_offset; /**< frame offset for the BBT fields - (the given bar, beat, and tick - values actually refer to a time - frame_offset frames before the - start of the cycle), should - be assumed to be 0 if - JackBBTFrameOffset is not - set. If JackBBTFrameOffset is - set and this value is zero, the BBT - time refers to the first frame of this - cycle. If the value is positive, - the BBT time refers to a frame that - many frames before the start of the - cycle. */ - - /* JACK video positional data (experimental) */ - - float audio_frames_per_video_frame; /**< number of audio frames - per video frame. Should be assumed - zero if JackAudioVideoRatio is not - set. If JackAudioVideoRatio is set - and the value is zero, no video - data exists within the JACK graph */ - - jack_nframes_t video_offset; /**< audio frame at which the first video - frame in this cycle occurs. Should - be assumed to be 0 if JackVideoFrameOffset - is not set. If JackVideoFrameOffset is - set, but the value is zero, there is - no video frame within this cycle. */ - - /* For binary compatibility, new fields should be allocated from - * this padding area with new valid bits controlling access, so - * the existing structure size and offsets are preserved. */ - int32_t padding[7]; - - /* When (unique_1 == unique_2) the contents are consistent. */ - jack_unique_t unique_2; /**< unique ID */ - -} jack_position_t; - /** * Called by the timebase master to release itself from that * responsibility. @@ -147,31 +45,6 @@ typedef struct { */ int jack_release_timebase (jack_client_t *client); -/** - * Prototype for the @a sync_callback defined by slow-sync clients. - * When the client is active, this callback is invoked just before - * process() in the same thread. This occurs once after registration, - * then subsequently whenever some client requests a new position, or - * the transport enters the ::JackTransportStarting state. This - * realtime function must not wait. - * - * The transport @a state will be: - * - * - ::JackTransportStopped when a new position is requested; - * - ::JackTransportStarting when the transport is waiting to start; - * - ::JackTransportRolling when the timeout has expired, and the - * position is now a moving target. - * - * @param state current transport state. - * @param pos new transport position. - * @param arg the argument supplied by jack_set_sync_callback(). - * - * @return TRUE (non-zero) when ready to roll. - */ -typedef int (*JackSyncCallback)(jack_transport_state_t state, - jack_position_t *pos, - void *arg); - /** * Register (or unregister) as a slow-sync client, one that cannot * respond immediately to transport position changes. @@ -216,41 +89,6 @@ int jack_set_sync_callback (jack_client_t *client, int jack_set_sync_timeout (jack_client_t *client, jack_time_t timeout); -/** - * Prototype for the @a timebase_callback used to provide extended - * position information. Its output affects all of the following - * process cycle. This realtime function must not wait. - * - * This function is called immediately after process() in the same - * thread whenever the transport is rolling, or when any client has - * requested a new position in the previous cycle. The first cycle - * after jack_set_timebase_callback() is also treated as a new - * position, or the first cycle after jack_activate() if the client - * had been inactive. - * - * The timebase master may not use its @a pos argument to set @a - * pos->frame. To change position, use jack_transport_reposition() or - * jack_transport_locate(). These functions are realtime-safe, the @a - * timebase_callback can call them directly. - * - * @param state current transport state. - * @param nframes number of frames in current period. - * @param pos address of the position structure for the next cycle; @a - * pos->frame will be its frame number. If @a new_pos is FALSE, this - * structure contains extended position information from the current - * cycle. If TRUE, it contains whatever was set by the requester. - * The @a timebase_callback's task is to update the extended - * information here. - * @param new_pos TRUE (non-zero) for a newly requested @a pos, or for - * the first cycle after the @a timebase_callback is defined. - * @param arg the argument supplied by jack_set_timebase_callback(). - */ -typedef void (*JackTimebaseCallback)(jack_transport_state_t state, - jack_nframes_t nframes, - jack_position_t *pos, - int new_pos, - void *arg); - /** * Register as timebase master for the JACK subsystem. * @@ -368,61 +206,6 @@ void jack_transport_start (jack_client_t *client); * @param client the JACK client structure. */ void jack_transport_stop (jack_client_t *client); - - -/********************************************************************* - * The following interfaces are DEPRECATED. They are only provided - * for compatibility with the earlier JACK transport implementation. - *********************************************************************/ - -/** - * Optional struct jack_transport_info_t fields. - * - * @see jack_position_bits_t. - */ -typedef enum { - - JackTransportState = 0x1, /**< Transport state */ - JackTransportPosition = 0x2, /**< Frame number */ - JackTransportLoop = 0x4, /**< Loop boundaries (ignored) */ - JackTransportSMPTE = 0x8, /**< SMPTE (ignored) */ - JackTransportBBT = 0x10 /**< Bar, Beat, Tick */ - -} jack_transport_bits_t; - -/** - * Deprecated struct for transport position information. - * - * @deprecated This is for compatibility with the earlier transport - * interface. Use the jack_position_t struct, instead. - */ -typedef struct { - - /* these two cannot be set from clients: the server sets them */ - - jack_nframes_t frame_rate; /**< current frame rate (per second) */ - jack_time_t usecs; /**< monotonic, free-rolling */ - - jack_transport_bits_t valid; /**< which fields are legal to read */ - jack_transport_state_t transport_state; - jack_nframes_t frame; - jack_nframes_t loop_start; - jack_nframes_t loop_end; - - long smpte_offset; /**< SMPTE offset (from frame 0) */ - float smpte_frame_rate; /**< 29.97, 30, 24 etc. */ - - int bar; - int beat; - int tick; - double bar_start_tick; - - float beats_per_bar; - float beat_type; - double ticks_per_beat; - double beats_per_minute; - -} jack_transport_info_t; /** * Gets the current transport info structure (deprecated). diff --git a/common/jack/types.h b/common/jack/types.h index 5ee264c3..8b4584b4 100644 --- a/common/jack/types.h +++ b/common/jack/types.h @@ -19,20 +19,20 @@ */ #ifndef __jack_types_h__ -#define __jack_types_h__ +#define __jack_types_h__ -#ifdef WIN32 +#ifdef WIN32 #include -#ifndef __MINGW32__ - #define vsnprintf _vsnprintf - #define snprintf _snprintf - typedef char int8_t; - typedef unsigned char uint8_t; - typedef short int16_t; - typedef unsigned short uint16_t; - typedef long int32_t; - typedef unsigned long uint32_t; - typedef LONGLONG int64_t; +#ifndef __MINGW32__ + #define vsnprintf _vsnprintf + #define snprintf _snprintf + typedef char int8_t; + typedef unsigned char uint8_t; + typedef short int16_t; + typedef unsigned short uint16_t; + typedef long int32_t; + typedef unsigned long uint32_t; + typedef LONGLONG int64_t; typedef ULONGLONG uint64_t; #else #include @@ -431,4 +431,219 @@ enum JackStatus { */ typedef enum JackStatus jack_status_t; +/** + * Transport states. + */ +typedef enum { + + /* the order matters for binary compatibility */ + JackTransportStopped = 0, /**< Transport halted */ + JackTransportRolling = 1, /**< Transport playing */ + JackTransportLooping = 2, /**< For OLD_TRANSPORT, now ignored */ + JackTransportStarting = 3, /**< Waiting for sync ready */ + +} jack_transport_state_t; + +typedef uint64_t jack_unique_t; /**< Unique ID (opaque) */ + +/** + * Optional struct jack_position_t fields. + */ +typedef enum { + + JackPositionBBT = 0x10, /**< Bar, Beat, Tick */ + JackPositionTimecode = 0x20, /**< External timecode */ + JackBBTFrameOffset = 0x40, /**< Frame offset of BBT information */ + JackAudioVideoRatio = 0x80, /**< audio frames per video frame */ + JackVideoFrameOffset = 0x100 /**< frame offset of first video frame */ +} jack_position_bits_t; + +/** all valid position bits */ +#define JACK_POSITION_MASK (JackPositionBBT|JackPositionTimecode) +#define EXTENDED_TIME_INFO + +typedef struct { + + /* these four cannot be set from clients: the server sets them */ + jack_unique_t unique_1; /**< unique ID */ + jack_time_t usecs; /**< monotonic, free-rolling */ + jack_nframes_t frame_rate; /**< current frame rate (per second) */ + jack_nframes_t frame; /**< frame number, always present */ + + jack_position_bits_t valid; /**< which other fields are valid */ + + /* JackPositionBBT fields: */ + int32_t bar; /**< current bar */ + int32_t beat; /**< current beat-within-bar */ + int32_t tick; /**< current tick-within-beat */ + double bar_start_tick; + + float beats_per_bar; /**< time signature "numerator" */ + float beat_type; /**< time signature "denominator" */ + double ticks_per_beat; + double beats_per_minute; + + /* JackPositionTimecode fields: (EXPERIMENTAL: could change) */ + double frame_time; /**< current time in seconds */ + double next_time; /**< next sequential frame_time + (unless repositioned) */ + + /* JackBBTFrameOffset fields: */ + jack_nframes_t bbt_offset; /**< frame offset for the BBT fields + (the given bar, beat, and tick + values actually refer to a time + frame_offset frames before the + start of the cycle), should + be assumed to be 0 if + JackBBTFrameOffset is not + set. If JackBBTFrameOffset is + set and this value is zero, the BBT + time refers to the first frame of this + cycle. If the value is positive, + the BBT time refers to a frame that + many frames before the start of the + cycle. */ + + /* JACK video positional data (experimental) */ + + float audio_frames_per_video_frame; /**< number of audio frames + per video frame. Should be assumed + zero if JackAudioVideoRatio is not + set. If JackAudioVideoRatio is set + and the value is zero, no video + data exists within the JACK graph */ + + jack_nframes_t video_offset; /**< audio frame at which the first video + frame in this cycle occurs. Should + be assumed to be 0 if JackVideoFrameOffset + is not set. If JackVideoFrameOffset is + set, but the value is zero, there is + no video frame within this cycle. */ + + /* For binary compatibility, new fields should be allocated from + * this padding area with new valid bits controlling access, so + * the existing structure size and offsets are preserved. */ + int32_t padding[7]; + + /* When (unique_1 == unique_2) the contents are consistent. */ + jack_unique_t unique_2; /**< unique ID */ + +} jack_position_t; + +/** + * Prototype for the @a sync_callback defined by slow-sync clients. + * When the client is active, this callback is invoked just before + * process() in the same thread. This occurs once after registration, + * then subsequently whenever some client requests a new position, or + * the transport enters the ::JackTransportStarting state. This + * realtime function must not wait. + * + * The transport @a state will be: + * + * - ::JackTransportStopped when a new position is requested; + * - ::JackTransportStarting when the transport is waiting to start; + * - ::JackTransportRolling when the timeout has expired, and the + * position is now a moving target. + * + * @param state current transport state. + * @param pos new transport position. + * @param arg the argument supplied by jack_set_sync_callback(). + * + * @return TRUE (non-zero) when ready to roll. + */ +typedef int (*JackSyncCallback)(jack_transport_state_t state, + jack_position_t *pos, + void *arg); + + +/** + * Prototype for the @a timebase_callback used to provide extended + * position information. Its output affects all of the following + * process cycle. This realtime function must not wait. + * + * This function is called immediately after process() in the same + * thread whenever the transport is rolling, or when any client has + * requested a new position in the previous cycle. The first cycle + * after jack_set_timebase_callback() is also treated as a new + * position, or the first cycle after jack_activate() if the client + * had been inactive. + * + * The timebase master may not use its @a pos argument to set @a + * pos->frame. To change position, use jack_transport_reposition() or + * jack_transport_locate(). These functions are realtime-safe, the @a + * timebase_callback can call them directly. + * + * @param state current transport state. + * @param nframes number of frames in current period. + * @param pos address of the position structure for the next cycle; @a + * pos->frame will be its frame number. If @a new_pos is FALSE, this + * structure contains extended position information from the current + * cycle. If TRUE, it contains whatever was set by the requester. + * The @a timebase_callback's task is to update the extended + * information here. + * @param new_pos TRUE (non-zero) for a newly requested @a pos, or for + * the first cycle after the @a timebase_callback is defined. + * @param arg the argument supplied by jack_set_timebase_callback(). + */ +typedef void (*JackTimebaseCallback)(jack_transport_state_t state, + jack_nframes_t nframes, + jack_position_t *pos, + int new_pos, + void *arg); + +/********************************************************************* + * The following interfaces are DEPRECATED. They are only provided + * for compatibility with the earlier JACK transport implementation. + *********************************************************************/ + +/** + * Optional struct jack_transport_info_t fields. + * + * @see jack_position_bits_t. + */ +typedef enum { + + JackTransportState = 0x1, /**< Transport state */ + JackTransportPosition = 0x2, /**< Frame number */ + JackTransportLoop = 0x4, /**< Loop boundaries (ignored) */ + JackTransportSMPTE = 0x8, /**< SMPTE (ignored) */ + JackTransportBBT = 0x10 /**< Bar, Beat, Tick */ + +} jack_transport_bits_t; + +/** + * Deprecated struct for transport position information. + * + * @deprecated This is for compatibility with the earlier transport + * interface. Use the jack_position_t struct, instead. + */ +typedef struct { + + /* these two cannot be set from clients: the server sets them */ + + jack_nframes_t frame_rate; /**< current frame rate (per second) */ + jack_time_t usecs; /**< monotonic, free-rolling */ + + jack_transport_bits_t valid; /**< which fields are legal to read */ + jack_transport_state_t transport_state; + jack_nframes_t frame; + jack_nframes_t loop_start; + jack_nframes_t loop_end; + + long smpte_offset; /**< SMPTE offset (from frame 0) */ + float smpte_frame_rate; /**< 29.97, 30, 24 etc. */ + + int bar; + int beat; + int tick; + double bar_start_tick; + + float beats_per_bar; + float beat_type; + double ticks_per_beat; + double beats_per_minute; + +} +jack_transport_info_t; + #endif /* __jack_types_h__ */ diff --git a/common/transport_types.h b/common/transport_types.h deleted file mode 100644 index 41bfdfa3..00000000 --- a/common/transport_types.h +++ /dev/null @@ -1,252 +0,0 @@ -/* - Copyright (C) 2002 Paul Davis - Copyright (C) 2003 Jack O'Quin - - 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.1 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 Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - $Id: transport_types.h,v 1.1.2.2 2006/06/20 14:44:00 letz Exp $ -*/ - -#ifndef __jack_transport_aux_h__ -#define __jack_transport_aux_h__ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "types.h" - -/** - * Transport states. - */ -typedef enum { - - /* the order matters for binary compatibility */ - JackTransportStopped = 0, /**< Transport halted */ - JackTransportRolling = 1, /**< Transport playing */ - JackTransportLooping = 2, /**< For OLD_TRANSPORT, now ignored */ - JackTransportStarting = 3, /**< Waiting for sync ready */ - -} jack_transport_state_t; - -typedef uint64_t jack_unique_t; /**< Unique ID (opaque) */ - -/** - * Optional struct jack_position_t fields. - */ -typedef enum { - - JackPositionBBT = 0x10, /**< Bar, Beat, Tick */ - JackPositionTimecode = 0x20, /**< External timecode */ - JackBBTFrameOffset = 0x40, /**< Frame offset of BBT information */ - JackAudioVideoRatio = 0x80, /**< audio frames per video frame */ - JackVideoFrameOffset = 0x100 /**< frame offset of first video frame */ -} jack_position_bits_t; - -/** all valid position bits */ -#define JACK_POSITION_MASK (JackPositionBBT|JackPositionTimecode) -#define EXTENDED_TIME_INFO - -typedef struct { - - /* these four cannot be set from clients: the server sets them */ - jack_unique_t unique_1; /**< unique ID */ - jack_time_t usecs; /**< monotonic, free-rolling */ - jack_nframes_t frame_rate; /**< current frame rate (per second) */ - jack_nframes_t frame; /**< frame number, always present */ - - jack_position_bits_t valid; /**< which other fields are valid */ - - /* JackPositionBBT fields: */ - int32_t bar; /**< current bar */ - int32_t beat; /**< current beat-within-bar */ - int32_t tick; /**< current tick-within-beat */ - double bar_start_tick; - - float beats_per_bar; /**< time signature "numerator" */ - float beat_type; /**< time signature "denominator" */ - double ticks_per_beat; - double beats_per_minute; - - /* JackPositionTimecode fields: (EXPERIMENTAL: could change) */ - double frame_time; /**< current time in seconds */ - double next_time; /**< next sequential frame_time - (unless repositioned) */ - - /* JackBBTFrameOffset fields: */ - jack_nframes_t bbt_offset; /**< frame offset for the BBT fields - (the given bar, beat, and tick - values actually refer to a time - frame_offset frames before the - start of the cycle), should - be assumed to be 0 if - JackBBTFrameOffset is not - set. If JackBBTFrameOffset is - set and this value is zero, the BBT - time refers to the first frame of this - cycle. If the value is positive, - the BBT time refers to a frame that - many frames before the start of the - cycle. */ - - /* JACK video positional data (experimental) */ - - float audio_frames_per_video_frame; /**< number of audio frames - per video frame. Should be assumed - zero if JackAudioVideoRatio is not - set. If JackAudioVideoRatio is set - and the value is zero, no video - data exists within the JACK graph */ - - jack_nframes_t video_offset; /**< audio frame at which the first video - frame in this cycle occurs. Should - be assumed to be 0 if JackVideoFrameOffset - is not set. If JackVideoFrameOffset is - set, but the value is zero, there is - no video frame within this cycle. */ - - /* For binary compatibility, new fields should be allocated from - * this padding area with new valid bits controlling access, so - * the existing structure size and offsets are preserved. */ - int32_t padding[7]; - - /* When (unique_1 == unique_2) the contents are consistent. */ - jack_unique_t unique_2; /**< unique ID */ - -} jack_position_t; - - -/** - * Prototype for the @a sync_callback defined by slow-sync clients. - * When the client is active, this callback is invoked just before - * process() in the same thread. This occurs once after registration, - * then subsequently whenever some client requests a new position, or - * the transport enters the ::JackTransportStarting state. This - * realtime function must not wait. - * - * The transport @a state will be: - * - * - ::JackTransportStopped when a new position is requested; - * - ::JackTransportStarting when the transport is waiting to start; - * - ::JackTransportRolling when the timeout has expired, and the - * position is now a moving target. - * - * @param state current transport state. - * @param pos new transport position. - * @param arg the argument supplied by jack_set_sync_callback(). - * - * @return TRUE (non-zero) when ready to roll. - */ -typedef int (*JackSyncCallback)(jack_transport_state_t state, - jack_position_t *pos, - void *arg); - - -/** - * Prototype for the @a timebase_callback used to provide extended - * position information. Its output affects all of the following - * process cycle. This realtime function must not wait. - * - * This function is called immediately after process() in the same - * thread whenever the transport is rolling, or when any client has - * requested a new position in the previous cycle. The first cycle - * after jack_set_timebase_callback() is also treated as a new - * position, or the first cycle after jack_activate() if the client - * had been inactive. - * - * The timebase master may not use its @a pos argument to set @a - * pos->frame. To change position, use jack_transport_reposition() or - * jack_transport_locate(). These functions are realtime-safe, the @a - * timebase_callback can call them directly. - * - * @param state current transport state. - * @param nframes number of frames in current period. - * @param pos address of the position structure for the next cycle; @a - * pos->frame will be its frame number. If @a new_pos is FALSE, this - * structure contains extended position information from the current - * cycle. If TRUE, it contains whatever was set by the requester. - * The @a timebase_callback's task is to update the extended - * information here. - * @param new_pos TRUE (non-zero) for a newly requested @a pos, or for - * the first cycle after the @a timebase_callback is defined. - * @param arg the argument supplied by jack_set_timebase_callback(). - */ -typedef void (*JackTimebaseCallback)(jack_transport_state_t state, - jack_nframes_t nframes, - jack_position_t *pos, - int new_pos, - void *arg); - -/********************************************************************* - * The following interfaces are DEPRECATED. They are only provided - * for compatibility with the earlier JACK transport implementation. - *********************************************************************/ - -/** - * Optional struct jack_transport_info_t fields. - * - * @see jack_position_bits_t. - */ -typedef enum { - - JackTransportState = 0x1, /**< Transport state */ - JackTransportPosition = 0x2, /**< Frame number */ - JackTransportLoop = 0x4, /**< Loop boundaries (ignored) */ - JackTransportSMPTE = 0x8, /**< SMPTE (ignored) */ - JackTransportBBT = 0x10 /**< Bar, Beat, Tick */ - -} jack_transport_bits_t; - -/** - * Deprecated struct for transport position information. - * - * @deprecated This is for compatibility with the earlier transport - * interface. Use the jack_position_t struct, instead. - */ -typedef struct { - - /* these two cannot be set from clients: the server sets them */ - - jack_nframes_t frame_rate; /**< current frame rate (per second) */ - jack_time_t usecs; /**< monotonic, free-rolling */ - - jack_transport_bits_t valid; /**< which fields are legal to read */ - jack_transport_state_t transport_state; - jack_nframes_t frame; - jack_nframes_t loop_start; - jack_nframes_t loop_end; - - long smpte_offset; /**< SMPTE offset (from frame 0) */ - float smpte_frame_rate; /**< 29.97, 30, 24 etc. */ - - int bar; - int beat; - int tick; - double bar_start_tick; - - float beats_per_bar; - float beat_type; - double ticks_per_beat; - double beats_per_minute; - -} -jack_transport_info_t; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/windows/JackPortAudioDriver.cpp b/windows/JackPortAudioDriver.cpp index d6520598..d9818cae 100644 --- a/windows/JackPortAudioDriver.cpp +++ b/windows/JackPortAudioDriver.cpp @@ -80,7 +80,7 @@ namespace Jack jack_nframes_t capture_latency, jack_nframes_t playback_latency) { - PaError err; + PaError err = paNoError; PaStreamParameters inputParameters; PaStreamParameters outputParameters; int in_max = 0;