diff --git a/doc/release/yarp_3_5/audioFromFile_fix.md b/doc/release/yarp_3_5/audioFromFile_fix.md new file mode 100644 index 00000000000..99c8f6358fc --- /dev/null +++ b/doc/release/yarp_3_5/audioFromFile_fix.md @@ -0,0 +1,9 @@ +audioFromFile_fix {#yarp_3_5} +----------- + +Important Changes +----------------- + +### Devices + +* `audioFromFileDevice` fixed module when channels are > 1 \ No newline at end of file diff --git a/src/devices/audioFromFileDevice/audioFromFileDevice.cpp b/src/devices/audioFromFileDevice/audioFromFileDevice.cpp index aad7a5ede34..967b1af573d 100644 --- a/src/devices/audioFromFileDevice/audioFromFileDevice.cpp +++ b/src/devices/audioFromFileDevice/audioFromFileDevice.cpp @@ -141,15 +141,16 @@ void audioFromFileDevice::run() //samples (m_samples_to_be_copied) in the buffer. This operation cannot be interrupted by stopping the device //with m_recording_enabled=false. When the pointer reaches the end of the sound (audioFile), //just restart from the beginning in an endless loop + size_t chan_num = m_audioFile.getChannels(); for (size_t i = 0; i < m_samples_to_be_copied; i++) { if (m_bpnt >= m_fsize_in_samples) { m_bpnt = 0; } - for (size_t c=0; c< m_audioFile.getChannels(); c++) + for (size_t c=0; c< chan_num; c++) { - m_inputBuffer->write((unsigned short)(m_datap.at(m_bpnt+c).get())); + m_inputBuffer->write((unsigned short)(m_datap.at(m_bpnt* chan_num +c).get())); } m_bpnt++; }