From d0ba094fb619103d8c549fe2809d697badda825b Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 7 Dec 2011 12:28:57 +0000 Subject: [PATCH] Correct NetJack2 code. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4632 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/JackNetTool.cpp | 48 ++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/common/JackNetTool.cpp b/common/JackNetTool.cpp index b89b885b..0621bbbd 100644 --- a/common/JackNetTool.cpp +++ b/common/JackNetTool.cpp @@ -450,7 +450,7 @@ namespace Jack void NetFloatAudioBuffer::RenderToNetwork(char* net_buffer, int active_port, int sub_cycle) { - for ( int port_index = 0; port_index < fNPorts; port_index++ ) { + for (int port_index = 0; port_index < fNPorts; port_index++ ) { jack_default_audio_sample_t* src = (jack_default_audio_sample_t*)(fPortBuffer[active_port] + sub_cycle * fSubPeriodSize); jack_default_audio_sample_t* dst = (jack_default_audio_sample_t*)(net_buffer); for (unsigned int sample = 0; sample < (fSubPeriodBytesSize - sizeof(int)) / sizeof(jack_default_audio_sample_t); sample++) { @@ -631,14 +631,16 @@ namespace Jack float buffer[fPeriodSize]; for (int port_index = 0; port_index < fNPorts; port_index++) { - memcpy(buffer, fPortBuffer[port_index], fPeriodSize * sizeof(sample_t)); -#if HAVE_CELT_API_0_8 || HAVE_CELT_API_0_11 - int res = celt_encode_float(fCeltEncoder[port_index], buffer, fPeriodSize, fCompressedBuffer[port_index], fCompressedSizeByte); -#else - int res = celt_encode_float(fCeltEncoder[port_index], buffer, NULL, fCompressedBuffer[port_index], fCompressedSizeByte); -#endif - if (res != fCompressedSizeByte) { - jack_error("celt_encode_float error fCompressedSizeByte = %d res = %d", fCompressedSizeByte, res); + if (fPortBuffer[port_index]) { + memcpy(buffer, fPortBuffer[port_index], fPeriodSize * sizeof(sample_t)); + #if HAVE_CELT_API_0_8 || HAVE_CELT_API_0_11 + int res = celt_encode_float(fCeltEncoder[port_index], buffer, fPeriodSize, fCompressedBuffer[port_index], fCompressedSizeByte); + #else + int res = celt_encode_float(fCeltEncoder[port_index], buffer, NULL, fCompressedBuffer[port_index], fCompressedSizeByte); + #endif + if (res != fCompressedSizeByte) { + jack_error("celt_encode_float error fCompressedSizeByte = %d res = %d", fCompressedSizeByte, res); + } } } @@ -649,13 +651,15 @@ namespace Jack void NetCeltAudioBuffer::RenderToJackPorts() { for (int port_index = 0; port_index < fNPorts; port_index++) { -#if HAVE_CELT_API_0_8 || HAVE_CELT_API_0_11 - int res = celt_decode_float(fCeltDecoder[port_index], fCompressedBuffer[port_index], fCompressedSizeByte, fPortBuffer[port_index], fPeriodSize); -#else - int res = celt_decode_float(fCeltDecoder[port_index], fCompressedBuffer[port_index], fCompressedSizeByte, fPortBuffer[port_index]); -#endif - if (res != CELT_OK) { - jack_error("celt_decode_float error fCompressedSizeByte = %d res = %d", fCompressedSizeByte, res); + if (fPortBuffer[port_index]) { + #if HAVE_CELT_API_0_8 || HAVE_CELT_API_0_11 + int res = celt_decode_float(fCeltDecoder[port_index], fCompressedBuffer[port_index], fCompressedSizeByte, fPortBuffer[port_index], fPeriodSize); + #else + int res = celt_decode_float(fCeltDecoder[port_index], fCompressedBuffer[port_index], fCompressedSizeByte, fPortBuffer[port_index]); + #endif + if (res != CELT_OK) { + jack_error("celt_decode_float error fCompressedSizeByte = %d res = %d", fCompressedSizeByte, res); + } } } @@ -758,8 +762,10 @@ namespace Jack int NetIntAudioBuffer::RenderFromJackPorts() { for (int port_index = 0; port_index < fNPorts; port_index++) { - for (uint frame = 0; frame < fPeriodSize; frame++) { - fIntBuffer[port_index][frame] = short(fPortBuffer[port_index][frame] * 32768.f); + if (fPortBuffer[port_index]) { + for (uint frame = 0; frame < fPeriodSize; frame++) { + fIntBuffer[port_index][frame] = short(fPortBuffer[port_index][frame] * 32768.f); + } } } @@ -771,8 +777,10 @@ namespace Jack { float coef = 1.f / 32768.f; for (int port_index = 0; port_index < fNPorts; port_index++) { - for (uint frame = 0; frame < fPeriodSize; frame++) { - fPortBuffer[port_index][frame] = float(fIntBuffer[port_index][frame] * coef); + if (fPortBuffer[port_index]) { + for (uint frame = 0; frame < fPeriodSize; frame++) { + fPortBuffer[port_index][frame] = float(fIntBuffer[port_index][frame] * coef); + } } }