erConfig })
    }

    async function playerStop() {
        if (animFrame != null) {
            cancelAnimationFrame(animFrame);
            animFrame = null
        }
        
        const stopMsg = { type: "stop" };
        muxerDownloaderWorker.postMessage(stopMsg);
        videoDecoderWorker.postMessage(stopMsg);
        audioDecoderWorker.postMessage(stopMsg);

        if (audioCtx != null) {
            await audioCtx.close();
            audioCtx = null;
        }
        sourceBufferAudioWorklet 