memcpy(pending_buffer + pending_buffer_size, buffer, size);
pending_buffer_size += size;
- if (pending_buffer_size >= sizeof(streaming_data_header)) {
+ while (pending_buffer_size >= sizeof(streaming_data_header)) {
streaming_data_header header;
memcpy(&header, pending_buffer, sizeof(streaming_data_header));
if (pending_buffer_size >= header.streaming_data_size) {
__ma_cb_audio_streaming(audio_data_header.event,
pending_buffer + sizeof(streaming_data_header) + sizeof(streaming_data_audio_data_header),
audio_data_header.data_size);
+ if (0 == header.streaming_data_serial % 50) {
+ MA_SLOGI("__ma_cb_audio_streaming() called, serial : %d", header.streaming_data_serial);
+ }
} else if (streaming_data_type_streaming_section == header.streaming_data_type) {
streaming_data_streaming_section_header streaming_section_header;
memcpy(&streaming_section_header, pending_buffer + sizeof(streaming_data_header),
__ma_cb_audio_streaming_data_section_changed(streaming_section_header.section);
}
- memmove(pending_buffer + header.streaming_data_size, pending_buffer,
+ memmove(pending_buffer, pending_buffer + header.streaming_data_size,
sizeof(pending_buffer) - header.streaming_data_size);
pending_buffer_size -= header.streaming_data_size;
+ } else {
+ break;
}
}
}