diff --git a/test/lc3/lc3_decoder.c b/test/lc3/lc3_decoder.c index ea1531cfd..7ab27c636 100644 --- a/test/lc3/lc3_decoder.c +++ b/test/lc3/lc3_decoder.c @@ -212,7 +212,7 @@ int main (int argc, const char * argv[]){ uint8_t tmp_BEC_detect; uint8_t BFI = 0; - uint8_t status = lc3_decoder->decode_signed_16(&decoder_contexts[channel], read_buffer, bytes_per_frame, BFI, &pcm[channel * MAX_SAMPLES_PER_FRAME], 1, &tmp_BEC_detect); + uint8_t status = lc3_decoder->decode_signed_16(&decoder_contexts[channel], read_buffer, bytes_per_frame, BFI, &pcm[channel], num_channels, &tmp_BEC_detect); if (status != ERROR_CODE_SUCCESS){ printf("Error %u\n", status); done = true; @@ -222,14 +222,7 @@ int main (int argc, const char * argv[]){ if (done) break; - uint16_t sample; - int16_t wav_frame[MAX_NUM_CHANNELS]; - for (sample = 0 ; sample < number_samples_per_frame ; sample++){ - for (channel = 0; channel < num_channels; channel++) { - wav_frame[channel] = pcm[channel * MAX_SAMPLES_PER_FRAME + sample]; - } - wav_writer_write_int16(num_channels, wav_frame); - } + wav_writer_write_int16(num_channels * number_samples_per_frame, pcm); frame_count++; } diff --git a/test/lc3/lc3_encoder.c b/test/lc3/lc3_encoder.c index e15854bc0..e08973d0e 100644 --- a/test/lc3/lc3_encoder.c +++ b/test/lc3/lc3_encoder.c @@ -60,7 +60,6 @@ static uint8_t write_buffer[200]; static int16_t samples_buffer[MAX_SAMPLES_PER_FRAME + MAX_NUM_CHANNELS]; -static int16_t frame_buffer[MAX_SAMPLES_PER_FRAME]; static uint32_t frame_count = 0; @@ -164,11 +163,7 @@ int main (int argc, const char * argv[]){ // encode frame by frame for (channel = 0; channel < num_channels ; channel++){ - uint16_t sample; - for (sample = 0 ; sample < number_samples_per_frame ; sample++){ - frame_buffer[sample] = samples_buffer[ sample * num_channels + channel]; - } - status = lc3_encoder->encode_signed_16(&encoder_contexts[channel], frame_buffer, 1, write_buffer, bytes_per_frame); + status = lc3_encoder->encode_signed_16(&encoder_contexts[channel], &samples_buffer[channel], num_channels, write_buffer, bytes_per_frame); if (status != ERROR_CODE_SUCCESS){ printf("Error %u\n", status); break; diff --git a/test/le_audio/le_audio_broadcast_sink.c b/test/le_audio/le_audio_broadcast_sink.c index 660a2c1c8..d07bb7bbd 100644 --- a/test/le_audio/le_audio_broadcast_sink.c +++ b/test/le_audio/le_audio_broadcast_sink.c @@ -599,32 +599,20 @@ static void iso_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *p uint8_t tmp_BEC_detect; uint8_t BFI = 0; (void) lc3_decoder->decode_signed_16(&decoder_contexts[bis_channel], &packet[offset], iso_sdu_length, BFI, - &pcm[bis_channel * MAX_SAMPLES_PER_FRAME], 1, + &pcm[bis_channel], num_bis, &tmp_BEC_detect); - // interleave channel samples + // process complete iso frame if ((bis_channel + 1) == num_bis) { - uint16_t sample; - int16_t wav_frame[MAX_NUM_BIS]; - uint8_t wav_channel; - for (sample = 0; sample < number_samples_per_frame; sample++) { - for (wav_channel = 0; wav_channel < num_bis; wav_channel++) { - wav_frame[wav_channel] = pcm[wav_channel * MAX_SAMPLES_PER_FRAME + sample]; - } - - // write wav sample - if (lc3_frames < DUMP_LEN_LC3_FRAMES) { - wav_writer_write_int16(num_bis, wav_frame); - } - - // store sample in playback buffer - uint32_t bytes_to_store = num_bis * 2; - samples_received++; - if (btstack_ring_buffer_bytes_free(&playback_buffer) >= bytes_to_store) { - btstack_ring_buffer_write(&playback_buffer, (uint8_t *) wav_frame, bytes_to_store); - } else { - samples_dropped++; - } + // write wav samples + wav_writer_write_int16(num_bis * number_samples_per_frame, pcm); + // store samples in playback buffer + uint32_t bytes_to_store = num_bis * number_samples_per_frame * 2; + samples_received += number_samples_per_frame; + if (btstack_ring_buffer_bytes_free(&playback_buffer) >= bytes_to_store) { + btstack_ring_buffer_write(&playback_buffer, (uint8_t *) pcm, bytes_to_store); + } else { + samples_dropped += number_samples_per_frame; } } diff --git a/test/le_audio/le_audio_broadcast_source.c b/test/le_audio/le_audio_broadcast_source.c index bf8cacde7..ce59c1571 100644 --- a/test/le_audio/le_audio_broadcast_source.c +++ b/test/le_audio/le_audio_broadcast_source.c @@ -253,7 +253,6 @@ static uint8_t menu_variant; static int hxcmod_initialized; static modcontext mod_context; static tracker_buffer_state trkbuf; -static int16_t mod_pcm[MAX_NUM_BIS * MAX_SAMPLES_PER_FRAME]; // sine generator static uint8_t sine_step; @@ -379,7 +378,7 @@ static void generate_audio(void){ uint8_t channel; for (channel = 0; channel < num_bis; channel++) { int16_t value = sine_int16[sine_phases[channel]] / 4; - pcm[channel * MAX_SAMPLES_PER_FRAME + sample] = value; + pcm[sample * num_bis + channel] = value; sine_phases[channel] += sine_step * (1+channel); // second channel, double frequency if (sine_phases[channel] >= (sizeof(sine_int16) / sizeof(int16_t))) { sine_phases[channel] = 0; @@ -389,18 +388,12 @@ static void generate_audio(void){ break; case AUDIO_SOURCE_MODPLAYER: // mod player configured for stereo - hxcmod_fillbuffer(&mod_context, (unsigned short *) &mod_pcm[0], number_samples_per_frame, &trkbuf); - uint16_t i; - if (num_bis == 1){ + hxcmod_fillbuffer(&mod_context, (unsigned short *) pcm, number_samples_per_frame, &trkbuf); + if (num_bis == 1) { // stereo -> mono + uint16_t i; for (i=0;iencode_signed_16(&encoder_contexts[bis_index], &pcm[bis_index * MAX_SAMPLES_PER_FRAME], 1, &buffer[8], octets_per_frame); + lc3_encoder->encode_signed_16(&encoder_contexts[bis_index], &pcm[bis_index], num_bis, &buffer[8], octets_per_frame); #endif // send hci_send_iso_packet_buffer(4 + 0 + 4 + octets_per_frame); diff --git a/test/le_audio/le_audio_unicast_sink.c b/test/le_audio/le_audio_unicast_sink.c index a056e547b..b8d89093a 100644 --- a/test/le_audio/le_audio_unicast_sink.c +++ b/test/le_audio/le_audio_unicast_sink.c @@ -582,33 +582,21 @@ static void iso_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *p uint8_t tmp_BEC_detect; uint8_t BFI = 0; (void) lc3_decoder->decode_signed_16(&decoder_contexts[channel], &packet[offset], octets_per_frame, BFI, - &pcm[channel * MAX_SAMPLES_PER_FRAME], 1, + &pcm[channel], num_channels, &tmp_BEC_detect); offset += octets_per_frame; } - // interleave channel samples - uint16_t sample; - int16_t wav_frame[MAX_CHANNELS]; - uint8_t wav_channel; - for (sample = 0; sample < number_samples_per_frame; sample++) { - for (wav_channel = 0; wav_channel < num_channels; wav_channel++) { - wav_frame[wav_channel] = pcm[wav_channel * MAX_SAMPLES_PER_FRAME + sample]; - } + // write wav samples + wav_writer_write_int16(num_channels * number_samples_per_frame, pcm); - // write wav sample - if (lc3_frames < DUMP_LEN_LC3_FRAMES) { - wav_writer_write_int16(num_channels, wav_frame); - } - - // store sample in playback buffer - uint32_t bytes_to_store = num_channels * 2; - samples_received++; - if (btstack_ring_buffer_bytes_free(&playback_buffer) >= bytes_to_store) { - btstack_ring_buffer_write(&playback_buffer, (uint8_t *) wav_frame, bytes_to_store); - } else { - samples_dropped++; - } + // store samples in playback buffer + uint32_t bytes_to_store = num_channels * number_samples_per_frame * 2; + samples_received += number_samples_per_frame; + if (btstack_ring_buffer_bytes_free(&playback_buffer) >= bytes_to_store) { + btstack_ring_buffer_write(&playback_buffer, (uint8_t *) pcm, bytes_to_store); + } else { + samples_dropped += number_samples_per_frame; } log_info("Samples in playback buffer %5u", btstack_ring_buffer_bytes_available(&playback_buffer) / (num_channels * 2)); diff --git a/test/le_audio/le_audio_unicast_source.c b/test/le_audio/le_audio_unicast_source.c index 5b542446a..407fbd223 100644 --- a/test/le_audio/le_audio_unicast_source.c +++ b/test/le_audio/le_audio_unicast_source.c @@ -170,7 +170,6 @@ static uint8_t menu_variant; static int hxcmod_initialized; static modcontext mod_context; static tracker_buffer_state trkbuf; -static int16_t mod_pcm[MAX_CHANNELS * MAX_SAMPLES_PER_FRAME]; // sine generator static uint8_t sine_step; @@ -296,7 +295,7 @@ static void generate_audio(void){ uint8_t channel; for (channel = 0; channel < num_channels; channel++) { int16_t value = sine_int16[sine_phases[channel]] / 4; - pcm[channel * MAX_SAMPLES_PER_FRAME + sample] = value; + pcm[sample * num_channels + channel] = value; sine_phases[channel] += sine_step * (1+channel); // second channel, double frequency if (sine_phases[channel] >= (sizeof(sine_int16) / sizeof(int16_t))) { sine_phases[channel] = 0; @@ -306,18 +305,12 @@ static void generate_audio(void){ break; case AUDIO_SOURCE_MODPLAYER: // mod player configured for stereo - hxcmod_fillbuffer(&mod_context, (unsigned short *) &mod_pcm[0], number_samples_per_frame, &trkbuf); - uint16_t i; - if (num_channels == 1){ + hxcmod_fillbuffer(&mod_context, (unsigned short *) pcm, number_samples_per_frame, &trkbuf); + if (num_channels == 1) { // stereo -> mono + uint16_t i; for (i=0;iencode_signed_16(&encoder_contexts[channel], &pcm[channel * MAX_SAMPLES_PER_FRAME], 1, &buffer[offset], octets_per_frame); + lc3_encoder->encode_signed_16(&encoder_contexts[channel], &pcm[channel], num_channels, &buffer[offset], octets_per_frame); offset += octets_per_frame; } #endif