From ee999dc16e8f5e93fadad618d1695d5fb6914fdc Mon Sep 17 00:00:00 2001 From: pixsperdavid Date: Thu, 18 Nov 2021 18:37:59 +0000 Subject: [PATCH] Fix for crash when receiving audio Signed-off-by: pixsperdavid --- .../jit.ndi.receive~/jit.ndi.receive.c | 37 +++++++++++++------ .../jit.ndi.receive~/max.jit.ndi.receive~.c | 4 +- .../jit.ndi/jit.ndi.send~/max.jit.ndi.send~.c | 2 +- source/jit.ndi/version.h | 4 +- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/source/jit.ndi/jit.ndi.receive~/jit.ndi.receive.c b/source/jit.ndi/jit.ndi.receive~/jit.ndi.receive.c index cadc98c..7366e19 100644 --- a/source/jit.ndi/jit.ndi.receive~/jit.ndi.receive.c +++ b/source/jit.ndi/jit.ndi.receive~/jit.ndi.receive.c @@ -521,7 +521,7 @@ t_jit_err jit_ndi_receive_matrix_calc(t_jit_ndi_receive* x, void* inputs, void* convInfo.dstdimend[0] = info.dim[0]; convInfo.dstdimend[1] = info.dim[1]; - err = jit_object_method(outputMatrix, _jit_sym_frommatrix, x->matrix, &convInfo); + err = (t_jit_err)jit_object_method(outputMatrix, _jit_sym_frommatrix, x->matrix, &convInfo); } else { @@ -703,17 +703,30 @@ void jit_ndi_receive_get_samples(t_jit_ndi_receive* x, double** outs, long sampl NDIlib_audio_frame_v2_t audioFrame = { 0 }; ndiLib->framesync_capture_audio(x->ndiFrameSync, &audioFrame, x->samplerate, x->attrNumAudioChannels, sampleFrames); - assert(audioFrame.no_channels == x->attrNumAudioChannels); - assert(audioFrame.no_samples == sampleFrames); - - for(int i = 0; i < x->attrNumAudioChannels; ++i) - { - double* dst = outs[i]; - float* src = audioFrame.p_data + ((audioFrame.channel_stride_in_bytes / sizeof(float)) * i); - - for(int j = 0; j < sampleFrames; ++j) - *dst++ = *src++; - } + if (audioFrame.p_data) + { + assert(audioFrame.no_channels == x->attrNumAudioChannels); + assert(audioFrame.no_samples == sampleFrames); + + for(int i = 0; i < x->attrNumAudioChannels; ++i) + { + double* dst = outs[i]; + float* src = audioFrame.p_data + ((audioFrame.channel_stride_in_bytes / sizeof(float)) * i); + + for(int j = 0; j < sampleFrames; ++j) + *dst++ = *src++; + } + } + else + { + for(int i = 0; i < x->attrNumAudioChannels; ++i) + { + double* dst = outs[i]; + + for(int j = 0; j < sampleFrames; ++j) + *dst++ = 0; + } + } ndiLib->framesync_free_audio(x->ndiFrameSync, &audioFrame); } diff --git a/source/jit.ndi/jit.ndi.receive~/max.jit.ndi.receive~.c b/source/jit.ndi/jit.ndi.receive~/max.jit.ndi.receive~.c index 3b3144a..098f7af 100644 --- a/source/jit.ndi/jit.ndi.receive~/max.jit.ndi.receive~.c +++ b/source/jit.ndi/jit.ndi.receive~/max.jit.ndi.receive~.c @@ -23,8 +23,8 @@ #include -#include "../ndi_runtime.h" -#include "../version.h" +#include "ndi_runtime.h" +#include "version.h" #ifdef MAC_VERSION #include diff --git a/source/jit.ndi/jit.ndi.send~/max.jit.ndi.send~.c b/source/jit.ndi/jit.ndi.send~/max.jit.ndi.send~.c index bbe8b05..7d0111d 100644 --- a/source/jit.ndi/jit.ndi.send~/max.jit.ndi.send~.c +++ b/source/jit.ndi/jit.ndi.send~/max.jit.ndi.send~.c @@ -23,7 +23,7 @@ #include #include "ndi_runtime.h" -#include "../version.h" +#include "version.h" diff --git a/source/jit.ndi/version.h b/source/jit.ndi/version.h index 944d22e..50efbf4 100644 --- a/source/jit.ndi/version.h +++ b/source/jit.ndi/version.h @@ -2,9 +2,9 @@ #define H_JIT_NDI_VERSION #define JIT_NDI_VERSION_MAJOR 0 -#define JIT_NDI_VERSION_MINOR 2 +#define JIT_NDI_VERSION_MINOR 3 #define JIT_NDI_VERSION_BUGFIX 0 -#define JIT_NDI_COPYRIGHT "Copyright (C) 2020 David Butler / The Impersonal Stereo" +#define JIT_NDI_COPYRIGHT "Copyright (C) 2021 Pixsper Ltd." #endif \ No newline at end of file