fix: cast NDI p_data to float* before copying audio samples
NDIlib_audio_frame_v3_t.p_data is uint8_t*, not float*. Calling vector<float>::assign(uint8_t*, uint8_t*+N) converted each individual byte (0-255) into a separate float instead of reinterpreting 4 bytes as one float sample — producing complete noise on playback. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -177,7 +177,8 @@ public:
|
||||
audio_info.samples = audio_frame.no_samples;
|
||||
audio_info.channel_stride = audio_frame.channel_stride_in_bytes / sizeof(float);
|
||||
const int total = audio_frame.no_channels * audio_info.channel_stride;
|
||||
audio_out.assign(audio_frame.p_data, audio_frame.p_data + total);
|
||||
const auto* fdata = reinterpret_cast<const float*>(audio_frame.p_data);
|
||||
audio_out.assign(fdata, fdata + total);
|
||||
NDIlib_recv_free_audio_v3(recv_, &audio_frame);
|
||||
return FrameKind::Audio;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user