Skip to content

Commit df4cb05

Browse files
committed
codal_port/modaudio: Make sure final partial audio data is sent out.
Signed-off-by: Damien George <[email protected]>
1 parent 4c957c4 commit df4cb05

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/codal_port/modaudio.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void microbit_audio_stop(void) {
6666
audio_output_buffer_offset = 0;
6767
audio_source_frame = NULL;
6868
audio_source_track = NULL;
69-
audio_source_iter = NULL;
69+
audio_source_iter = MP_OBJ_NULL;
7070
audio_source_frame_offset = 0;
7171
audio_current_sound_level = 0;
7272
microbit_hal_audio_stop_expression();
@@ -92,7 +92,6 @@ static void audio_data_pull_from_source(void) {
9292

9393
if (audio_source_iter == MP_OBJ_NULL) {
9494
// Audio iterator is already exhausted.
95-
microbit_audio_stop();
9695
return;
9796
}
9897

@@ -111,7 +110,7 @@ static void audio_data_pull_from_source(void) {
111110
}
112111
if (frame_obj == MP_OBJ_STOP_ITERATION) {
113112
// End of audio iterator.
114-
microbit_audio_stop();
113+
audio_source_iter = MP_OBJ_NULL;
115114
return;
116115
}
117116

@@ -128,7 +127,7 @@ static void audio_data_pull_from_source(void) {
128127
microbit_hal_audio_raw_set_rate(audio_source_track->rate);
129128
} else {
130129
// Audio iterator did not return an AudioFrame/AudioTrack/AudioRecording.
131-
microbit_audio_stop();
130+
audio_source_iter = MP_OBJ_NULL;
132131
mp_sched_exception(mp_obj_new_exception_msg(&mp_type_TypeError, MP_ERROR_TEXT("not an AudioFrame")));
133132
return;
134133
}
@@ -144,6 +143,7 @@ static void audio_data_fetcher(mp_sched_node_t *node) {
144143

145144
if (audio_output_buffer_offset == 0) {
146145
// No output data left, finish output streaming.
146+
microbit_audio_stop();
147147
return;
148148
}
149149

0 commit comments

Comments
 (0)