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