Firefox crash lors de l'utilisation des web workers

En utilisant libmp3lame

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour tout le monde,

Je créé un encodeur audio, et j'utilise libmp3lame-js. Avec Chrome ça a l'air de bien se passer, cependant sur mobile et firefox ça plante. A tel point que sur desktop firefox ça plante tout l'ordinateur !

En fait j'ai une memory leak flagrante (quand je lance le script avec 2Go de ram occupé, il passe instantanément à 5Go de ram utilisée). Cependant je ne sais pas d'où ça vient, sachant en plus que le tout fonctionne bien sous chrome.

Je pensais que les workers fonctionnaient en queue, c'est à dire qu'à chaque postMessage l'instruction était mise en queue, ais-je tord ? (je n'ai pas trouvé d'article ni de code contredisant cela) En outre cela ne devrait pas créer de fuite de mémoire mais simplement ralentir l'ordinateur.

Je vous donne des bouts de code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// worker.js
var data = [];

function encodeSample(inputBuffer) {
    // In case of mp3 recording
    var mp3data = Lame.encode_buffer_ieee_float(mp3codec, inputBuffer[0], inputBuffer[1]);
    var length = mp3Data.length;

    for(var i=0;i<length;i++) {
        data.push(mp3Data[i]);
    }
}

function exportMp3() {
    var mp3data = Lame.encode_flush(mp3codec);
    var length = mp3Data.length;

    for(var i=0;i<length;i++) {
        data.push(mp3Data[i]);
    }

    this.postMessage(new Blob([new Uint8Array(data)], { type: 'audio/mp3' }));

    Lame.close(mp3codec);
    mp3codec = null;
}

J'espère que vous pourrez m'aider :/ . Merci d'avance.

[edit] ça ne plante que sous firefox linux et browsers android, sous windows ça fonctionne.

Édité par Coyote

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte