@@ -307,7 +307,7 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
307307 for (uint32_t i = 0 ; i < length ; i ++ ) {
308308 int16_t echo , word = 0 ;
309309 uint32_t next_buffer_pos = 0 ;
310- uint32_t echo_buffer_offset = echo_buf_len * (self -> freq_shift && (channel == 1 || (i % self -> base .channel_count ) == 1 ));
310+ uint32_t echo_buffer_offset = echo_buf_len * (self -> freq_shift && (( single_channel_output && channel == 1 ) || (! single_channel_output && ( i % self -> base .channel_count ) == 1 ) ));
311311
312312 if (self -> freq_shift ) {
313313 echo = echo_buffer [(echo_buffer_pos >> 8 ) + echo_buffer_offset ];
@@ -337,7 +337,7 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
337337 }
338338 }
339339
340- if (self -> freq_shift && (single_channel_output || echo_buffer_offset )) {
340+ if (self -> freq_shift && (self -> base . channel_count == 1 || single_channel_output || (! single_channel_output && ( i % self -> base . channel_count ) == 1 ) )) {
341341 echo_buffer_pos = next_buffer_pos % (echo_buf_len << 8 );
342342 } else if (!self -> freq_shift && echo_buffer_pos >= echo_buf_len ) {
343343 echo_buffer_pos = 0 ;
@@ -375,7 +375,7 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
375375
376376 int32_t echo , word = 0 ;
377377 uint32_t next_buffer_pos = 0 ;
378- uint32_t echo_buffer_offset = echo_buf_len * (self -> freq_shift && (channel == 1 || (i % self -> base .channel_count ) == 1 ));
378+ uint32_t echo_buffer_offset = echo_buf_len * (self -> freq_shift && (( single_channel_output && channel == 1 ) || (! single_channel_output && ( i % self -> base .channel_count ) == 1 ) ));
379379
380380 if (self -> freq_shift ) {
381381 echo = echo_buffer [(echo_buffer_pos >> 8 ) + echo_buffer_offset ];
@@ -428,7 +428,7 @@ audioio_get_buffer_result_t audiodelays_echo_get_buffer(audiodelays_echo_obj_t *
428428 }
429429 }
430430
431- if (self -> freq_shift && (single_channel_output || echo_buffer_offset )) {
431+ if (self -> freq_shift && (self -> base . channel_count == 1 || single_channel_output || (! single_channel_output && ( i % self -> base . channel_count ) == 1 ) )) {
432432 echo_buffer_pos = next_buffer_pos % (echo_buf_len << 8 );
433433 } else if (!self -> freq_shift && echo_buffer_pos >= echo_buf_len ) {
434434 echo_buffer_pos = 0 ;
0 commit comments