更新renderer

This commit is contained in:
langhuihui
2020-05-10 22:01:15 +08:00
parent 0d0fa35f12
commit 01acf56dd2

View File

@@ -16,10 +16,6 @@ function Jessibuca(opt) {
}; };
this.decoderWorker = new Worker(opt.decoder || 'ff.js') this.decoderWorker = new Worker(opt.decoder || 'ff.js')
var _this = this var _this = this
function draw(output) {
_this.drawNextOutputPicture(_this.width, _this.height, null, output)
postMessage({ cmd: "setBuffer", buffer: output }, '*', [output[0].buffer, output[1].buffer, output[2].buffer])
}
this.decoderWorker.onmessage = function (event) { this.decoderWorker.onmessage = function (event) {
var msg = event.data var msg = event.data
switch (msg.cmd) { switch (msg.cmd) {
@@ -53,7 +49,12 @@ function Jessibuca(opt) {
// } else { // } else {
// draw(msg.output) // draw(msg.output)
// } // }
draw(msg.output) if (_this.contextGL) {
_this.drawNextOuptutPictureGL(_this.width, _this.height, null, msg.output);
postMessage({ cmd: "setBuffer", buffer: msg.output }, '*', [msg.output[0].buffer, msg.output[1].buffer, msg.output[2].buffer])
} else {
_this.drawNextOuptutPictureRGBA(_this.width, _this.height, null, msg.buffer);
}
break break
case "initAudio": case "initAudio":
_this.initAudioPlay(msg.frameCount, msg.samplerate, msg.channels) _this.initAudioPlay(msg.frameCount, msg.samplerate, msg.channels)
@@ -83,15 +84,17 @@ Jessibuca.prototype.initAudioPlanar = function (msg) {
var _this = this var _this = this
this.playAudio = function (buffer) { this.playAudio = function (buffer) {
var frameCount = buffer[0][0].length var frameCount = buffer[0][0].length
var audioBuffer = context.createBuffer(channels, frameCount, samplerate); var audioBuffer = context.createBuffer(channels, frameCount*buffer.length, samplerate);
var copyToCtxBuffer = function (fromBuffer) { var copyToCtxBuffer = function (fromBuffer) {
for (var channel = 0; channel < channels; channel++) { for (var channel = 0; channel < channels; channel++) {
var nowBuffering = audioBuffer.getChannelData(channel); var nowBuffering = audioBuffer.getChannelData(channel);
for( var j=0;j<buffer.length;j++){
for (var i = 0; i < frameCount; i++) { for (var i = 0; i < frameCount; i++) {
nowBuffering[i] = fromBuffer[channel][i] nowBuffering[i+j*frameCount] = fromBuffer[j][channel][i]
}
//postMessage({ cmd: "setBufferA", buffer: fromBuffer[j] }, '*', fromBuffer[j].map(x => x.buffer))
} }
} }
postMessage({ cmd: "setBufferA", buffer: fromBuffer }, '*', fromBuffer.map(x => x.buffer))
} }
var playNextBuffer = function () { var playNextBuffer = function () {
isPlaying = false; isPlaying = false;
@@ -114,15 +117,11 @@ Jessibuca.prototype.initAudioPlanar = function (msg) {
source.buffer = audioBuffer; source.buffer = audioBuffer;
source.connect(context.destination); source.connect(context.destination);
// source.onended = playNextBuffer; // source.onended = playNextBuffer;
if (!_this.audioInterval) {
_this.audioInterval = setInterval(playNextBuffer, audioBuffer.duration * 1000);
}
source.start(); source.start();
}; };
_this.playAudio = function(buffer){ _this.playAudio = playAudio
buffer.forEach(playAudio) _this.audioInterval = setInterval(playNextBuffer, audioBuffer.duration * 1000);
} playAudio(buffer)
buffer.forEach(playAudio)
}; };
} }