Browse Source

Merge branch 'develop'

tags/v1.9.19
falkTX 4 years ago
parent
commit
0ec22bbc1b
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
22 changed files with 77 additions and 30 deletions
  1. +10
    -0
      ChangeLog.rst
  2. +1
    -1
      android/JackSapaProxy.cpp
  3. +2
    -2
      common/JackAPI.cpp
  4. +5
    -2
      common/JackActivationCount.h
  5. +4
    -1
      common/JackAtomicArrayState.h
  6. +4
    -1
      common/JackAtomicState.h
  7. +3
    -0
      common/JackConnectionManager.cpp
  8. +1
    -1
      common/JackConnectionManager.h
  9. +2
    -2
      common/JackConstants.h
  10. +7
    -3
      common/JackEngineControl.h
  11. +4
    -1
      common/JackMessageBuffer.cpp
  12. +1
    -1
      common/JackMessageBuffer.h
  13. +2
    -0
      common/JackTransportEngine.cpp
  14. +1
    -1
      common/JackTransportEngine.h
  15. +2
    -2
      common/jack/jack.h
  16. +18
    -6
      common/jack/types.h
  17. +1
    -1
      doxyfile.in
  18. +4
    -0
      macosx/JackAtomic_os.h
  19. +1
    -1
      tests/test.cpp
  20. +1
    -1
      tools/zalsa/jackclient.cc
  21. +1
    -1
      waflib/Context.py
  22. +2
    -2
      wscript

+ 10
- 0
ChangeLog.rst View File

@@ -1,6 +1,16 @@
ChangeLog
#########

* 1.9.19 (2021-07-15)

* WIP (note to write asking CI help)
* Add jack_position_t::tick_double, and flags around it
* Add zalsa "-w" argument to wait for soundcard to be available
* Bump internal protocol version to 9 (due to struct alignment)
* Fix alignment of fields for atomic accesses
* Fix build for platforms needing __STDC_FORMAT_MACROS
* Fix compilation of documentation

* 1.9.18 (2021-04-15)

* Add zalsa_in/out as internal client (based on zita-a2j/j2a and jack1 code)


+ 1
- 1
android/JackSapaProxy.cpp View File

@@ -113,7 +113,7 @@ namespace Jack
jack_set_process_callback(client, Process, this);
jack_activate(client);

//conenct between sapaproxy and system ports
//connect between sapaproxy and system ports
for (unsigned int i = 0; i < ports_system_capture_cnt; i++) {
sprintf(port_name, "system:capture_%d", i + 1);
jack_connect(client, port_name, jack_port_name(fInputPorts[i]));


+ 2
- 2
common/JackAPI.cpp View File

@@ -18,6 +18,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

#define __STDC_FORMAT_MACROS 1
#include <inttypes.h>
#include "JackClient.h"
#include "JackError.h"
#include "JackGraphManager.h"
@@ -27,8 +29,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackTime.h"
#include "JackPortType.h"
#include <math.h>
#define __STDC_FORMAT_MACROS 1
#include <inttypes.h>

using namespace Jack;



+ 5
- 2
common/JackActivationCount.h View File

@@ -39,13 +39,16 @@ class JackActivationCount

private:

SInt32 fValue;
alignas(SInt32) SInt32 fValue;
SInt32 fCount;

public:

JackActivationCount(): fValue(0), fCount(0)
{}
{
static_assert(offsetof(JackActivationCount, fValue) % sizeof(fValue) == 0,
"fValue must be aligned within JackActivationCount");
}

bool Signal(JackSynchro* synchro, JackClientControl* control);



+ 4
- 1
common/JackAtomicArrayState.h View File

@@ -23,6 +23,7 @@
#include "JackAtomic.h"
#include "JackCompilerDeps.h"
#include <string.h> // for memcpy
#include <cstddef>

namespace Jack
{
@@ -121,7 +122,7 @@ class JackAtomicArrayState
// fState[2] ==> request

T fState[3];
volatile AtomicArrayCounter fCounter;
alignas(UInt32) volatile AtomicArrayCounter fCounter;

UInt32 WriteNextStateStartAux(int state, bool* result)
{
@@ -159,6 +160,8 @@ class JackAtomicArrayState

JackAtomicArrayState()
{
static_assert(offsetof(JackAtomicArrayState, fCounter) % sizeof(fCounter) == 0,
"fCounter must be aligned within JackAtomicArrayState");
Counter1(fCounter) = 0;
}



+ 4
- 1
common/JackAtomicState.h View File

@@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackAtomic.h"
#include "JackCompilerDeps.h"
#include <string.h> // for memcpy
#include <cstddef>

namespace Jack
{
@@ -93,7 +94,7 @@ class JackAtomicState
protected:

T fState[2];
volatile AtomicCounter fCounter;
alignas(UInt32) volatile AtomicCounter fCounter;
SInt32 fCallWriteCounter;

UInt32 WriteNextStateStartAux()
@@ -131,6 +132,8 @@ class JackAtomicState

JackAtomicState()
{
static_assert(offsetof(JackAtomicState, fCounter) % sizeof(fCounter) == 0,
"fCounter must be aligned within JackAtomicState");
Counter(fCounter) = 0;
fCallWriteCounter = 0;
}


+ 3
- 0
common/JackConnectionManager.cpp View File

@@ -32,6 +32,9 @@ namespace Jack
JackConnectionManager::JackConnectionManager()
{
int i;
static_assert(offsetof(JackConnectionManager, fInputCounter) % sizeof(UInt32) == 0,
"fInputCounter must be aligned within JackConnectionManager");

jack_log("JackConnectionManager::InitConnections size = %ld ", sizeof(JackConnectionManager));

for (i = 0; i < PORT_NUM_MAX; i++) {


+ 1
- 1
common/JackConnectionManager.h View File

@@ -417,7 +417,7 @@ class SERVER_EXPORT JackConnectionManager
JackFixedArray1<PORT_NUM_FOR_CLIENT> fInputPort[CLIENT_NUM]; /*! Table of input port per refnum : to find a refnum for a given port */
JackFixedArray<PORT_NUM_FOR_CLIENT> fOutputPort[CLIENT_NUM]; /*! Table of output port per refnum : to find a refnum for a given port */
JackFixedMatrix<CLIENT_NUM> fConnectionRef; /*! Table of port connections by (refnum , refnum) */
JackActivationCount fInputCounter[CLIENT_NUM]; /*! Activation counter per refnum */
alignas(UInt32) JackActivationCount fInputCounter[CLIENT_NUM]; /*! Activation counter per refnum */
JackLoopFeedback<CONNECTION_NUM_FOR_PORT> fLoopFeedback; /*! Loop feedback connections */

bool IsLoopPathAux(int ref1, int ref2) const;


+ 2
- 2
common/JackConstants.h View File

@@ -24,7 +24,7 @@
#include "config.h"
#endif

#define VERSION "1.9.18"
#define VERSION "1.9.19"

#define BUFFER_SIZE_MAX 8192

@@ -72,7 +72,7 @@

#define ALL_CLIENTS -1 // for notification

#define JACK_PROTOCOL_VERSION 8
#define JACK_PROTOCOL_VERSION 9

#define SOCKET_TIME_OUT 2 // in sec
#define DRIVER_OPEN_TIMEOUT 5 // in sec


+ 7
- 3
common/JackEngineControl.h View File

@@ -64,7 +64,7 @@ struct SERVER_EXPORT JackEngineControl : public JackShmMem
int fClientPriority;
int fMaxClientPriority;
char fServerName[JACK_SERVER_NAME_SIZE+1];
JackTransportEngine fTransport;
alignas(UInt32) JackTransportEngine fTransport;
jack_timer_type_t fClockSource;
int fDriverNum;
bool fVerbose;
@@ -86,14 +86,18 @@ struct SERVER_EXPORT JackEngineControl : public JackShmMem
UInt64 fConstraint;

// Timer
JackFrameTimer fFrameTimer;
alignas(UInt32) JackFrameTimer fFrameTimer;

#ifdef JACK_MONITOR
JackEngineProfiling fProfiler;
#endif

JackEngineControl(bool sync, bool temporary, long timeout, bool rt, long priority, bool verbose, jack_timer_type_t clock, const char* server_name)
{
{
static_assert(offsetof(JackEngineControl, fTransport) % sizeof(UInt32) == 0,
"fTransport must be aligned within JackEngineControl");
static_assert(offsetof(JackEngineControl, fFrameTimer) % sizeof(UInt32) == 0,
"fFrameTimer must be aligned within JackEngineControl");
fBufferSize = 512;
fSampleRate = 48000;
fPeriodUsecs = jack_time_t(1000000.f / fSampleRate * fBufferSize);


+ 4
- 1
common/JackMessageBuffer.cpp View File

@@ -38,7 +38,10 @@ JackMessageBuffer::JackMessageBuffer()
fOutBuffer(0),
fOverruns(0),
fRunning(false)
{}
{
static_assert(offsetof(JackMessageBuffer, fOverruns) % sizeof(fOverruns) == 0,
"fOverruns must be aligned within JackMessageBuffer");
}

JackMessageBuffer::~JackMessageBuffer()
{}


+ 1
- 1
common/JackMessageBuffer.h View File

@@ -64,7 +64,7 @@ class JackMessageBuffer : public JackRunnableInterface
JackProcessSync fGuard;
volatile unsigned int fInBuffer;
volatile unsigned int fOutBuffer;
SInt32 fOverruns;
alignas(SInt32) SInt32 fOverruns;
bool fRunning;

void Flush();


+ 2
- 0
common/JackTransportEngine.cpp View File

@@ -36,6 +36,8 @@ namespace Jack

JackTransportEngine::JackTransportEngine(): JackAtomicArrayState<jack_position_t>()
{
static_assert(offsetof(JackTransportEngine, fWriteCounter) % sizeof(fWriteCounter) == 0,
"fWriteCounter must be first member of JackTransportEngine to ensure its alignment");
fTransportState = JackTransportStopped;
fTransportCmd = fPreviousCmd = TransportCommandStop;
fSyncTimeout = 10000000; /* 10 seconds default...


+ 1
- 1
common/JackTransportEngine.h View File

@@ -104,7 +104,7 @@ class SERVER_EXPORT JackTransportEngine : public JackAtomicArrayState<jack_posit
bool fPendingPos;
bool fNetworkSync;
bool fConditionnal;
SInt32 fWriteCounter;
alignas(SInt32) SInt32 fWriteCounter;

bool CheckAllRolling(JackClientInterface** table);
void MakeAllStartingLocating(JackClientInterface** table);


+ 2
- 2
common/jack/jack.h View File

@@ -606,10 +606,10 @@ int jack_set_xrun_callback (jack_client_t *client,
* register a latency callback.
*
* Another case is when a client wants to use
* @ref jack_port_get_latency_range(), which only returns meaninful
* @ref jack_port_get_latency_range(), which only returns meaningful
* values when ports get connected and latency values change.
*
* See the documentation for @ref jack_port_set_latency_range()
* See the documentation for @ref jack_port_set_latency_range()
* on how the callback should operate. Remember that the @a mode
* argument given to the latency callback will need to be
* passed into @ref jack_port_set_latency_range()


+ 18
- 6
common/jack/types.h View File

@@ -538,11 +538,12 @@ typedef uint64_t jack_unique_t; /**< Unique ID (opaque) */
*/
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 */
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 */
JackTickDouble = 0x200, /**< double-resolution tick */

} jack_position_bits_t;

@@ -550,6 +551,9 @@ typedef enum {
#define JACK_POSITION_MASK (JackPositionBBT|JackPositionTimecode)
#define EXTENDED_TIME_INFO

/** transport tick_double member is available for use */
#define JACK_TICK_DOUBLE

PRE_PACKED_STRUCTURE
struct _jack_position {

@@ -609,10 +613,18 @@ struct _jack_position {
set, but the value is zero, there is
no video frame within this cycle. */

/* JACK extra transport fields */

double tick_double; /**< current tick-within-beat in double resolution.
Should be assumed zero if JackTickDouble is not set.
Since older versions of JACK do not expose this variable,
the macro JACK_TICK_DOUBLE is provided,
which can be used as build-time detection. */

/* 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];
int32_t padding[5];

/* When (unique_1 == unique_2) the contents are consistent. */
jack_unique_t unique_2; /**< unique ID */


+ 1
- 1
doxyfile.in View File

@@ -792,7 +792,7 @@ HTML_HEADER =
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.

HTML_FOOTER = @SRCDIR@/no_date_footer.html
HTML_FOOTER =

# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to


+ 4
- 0
macosx/JackAtomic_os.h View File

@@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define __JackAtomic_APPLE__

#include "JackTypes.h"
#include <cassert>

#if defined(__ppc__) || defined(__ppc64__)

@@ -67,8 +68,11 @@ static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* ad

#else

#include <stdio.h>
static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr)
{
// Assert pointer is 32-bit aligned
assert(((long)addr & (sizeof(int)-1)) == 0);
return __sync_bool_compare_and_swap ((UInt32*)addr, value, newvalue);
}



+ 1
- 1
tests/test.cpp View File

@@ -53,7 +53,7 @@
typedef struct
{
jack_nframes_t ft; // running counter frame time
jack_nframes_t fcs; // from sycle start...
jack_nframes_t fcs; // from cycle start...
jack_nframes_t lft; // last frame time...
}
FrameTimeCollector;


+ 1
- 1
tools/zalsa/jackclient.cc View File

@@ -193,7 +193,7 @@ void Jackclient::initsync (void)
_resamp->out_count = 99999;
_resamp->process ();
}
// Initiliase state variables.
// Initialise state variables.
_t_a0 = _t_a1 = 0;
_k_a0 = _k_a1 = 0;
// Initialise loop filter state.


+ 1
- 1
waflib/Context.py View File

@@ -520,7 +520,7 @@ class Context(ctx):
"""
Prints a configuration message of the form ``msg: result``.
The second part of the message will be in colors. The output
can be disabled easly by setting ``in_msg`` to a positive value::
can be disabled easily by setting ``in_msg`` to a positive value::

def configure(conf):
self.in_msg = 1


+ 2
- 2
wscript View File

@@ -11,7 +11,7 @@ import sys
from waflib import Logs, Options, Task, Utils
from waflib.Build import BuildContext, CleanContext, InstallContext, UninstallContext

VERSION='1.9.18'
VERSION='1.9.19'
APPNAME='jack'
JACK_API_VERSION = '0.1.0'

@@ -228,7 +228,7 @@ def configure(conf):
mandatory=False)

conf.env.append_unique('CFLAGS', '-Wall')
conf.env.append_unique('CXXFLAGS', '-Wall')
conf.env.append_unique('CXXFLAGS', ['-Wall', '-Wno-invalid-offsetof'])
conf.env.append_unique('CXXFLAGS', '-std=gnu++11')

if not conf.env['IS_MACOSX']:


Loading…
Cancel
Save