Skip to content

Commit 28fee5a

Browse files
committed
BufferedStream optimize readBytes
1 parent d073522 commit 28fee5a

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/AudioTools/CoreAudio/AudioStreams.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ class BufferedStream : public ModifyingStream {
570570
if (buffer.isEmpty()) {
571571
return readExt(data, len);
572572
} else {
573-
refill();
573+
refill(len);
574574
return buffer.readArray(data, len);
575575
}
576576
}
@@ -599,12 +599,19 @@ class BufferedStream : public ModifyingStream {
599599
Print *p_out = nullptr;
600600
Stream *p_in = nullptr;
601601

602-
// refills the buffer with data from the source
602+
/// refills the buffer with data from the source
603603
void refill() {
604-
size_t result = readExt(buffer.address(), buffer.size());
604+
buffer.trim();
605+
size_t result = readExt(buffer.address(), buffer.availableForWrite());
605606
buffer.setAvailable(result);
606607
}
607608

609+
/// refill only if not enough data
610+
void refill(size_t len) {
611+
if (buffer.available() >= len) return;
612+
refill();
613+
}
614+
608615
virtual size_t writeExt(const uint8_t *data, size_t len) {
609616
return p_out == nullptr ? 0 : p_out->write(data, len);
610617
}

0 commit comments

Comments
 (0)