hopefully fixed internal buffering of audio streams

This commit is contained in:
Daniel Sommer 2022-04-25 16:47:55 +02:00
parent 087698df8c
commit 80179e4bfa

View file

@ -47,7 +47,10 @@ class Player extends EventEmitter {
if (this.isPlaying() === false) {
return;
}
this.playFromBuffer();
if (this.buffer.size < this.buffer.limit) {
logger.debug('fell below buffer limit of ' + this.buffer.limit + ' bytes, resuming read stream...');
this.stream.resume();
}
});
this.buffer.limit = config?.buffer?.limit;
if (isNaN(this.buffer.limit) || this.buffer.limit < this.buffer.threshold) {
@ -68,6 +71,7 @@ class Player extends EventEmitter {
if (this.buffer.size >= this.buffer.limit) {
logger.debug('buffer limit of ' + this.buffer.limit + ' bytes reached, pausing read stream...');
this.stream.pause();
this.playFromBuffer();
}
});
}
@ -79,12 +83,13 @@ class Player extends EventEmitter {
playFromBuffer() {
const tmp = this.buffer.elements[0];
if (tmp === undefined) {
return;
}
this.buffer.elements.shift();
this.buffer.size -= tmp.length;
this.speaker.write(tmp);
if (this.buffer.size < this.buffer.limit) {
logger.debug('fell below buffer limit of ' + this.buffer.limit + ' bytes, resuming read stream...');
this.stream.resume();
if (this.speaker.write(tmp) === false) {
this.stream.pause();
}
}