Procházet zdrojové kódy

e2ee: generate silence in case of audio decryption errors

This handles decryption errors for audio differently than the
current version. Instead of forwarding horrible noise to the decoder,
replace the bytes with magic opus bytes for silence:
  0xd8fffe

Those bytes were captured on a modified version of
  https://webrtc.github.io/samples/src/content/peerconnection/endtoend-encryption/
with more dumping and after disabling the track.
master
Philipp Hancke před 5 roky
rodič
revize
6502bc6782
1 změnil soubory, kde provedl 7 přidání a 0 odebrání
  1. 7
    0
      modules/e2ee/E2EEContext.js

+ 7
- 0
modules/e2ee/E2EEContext.js Zobrazit soubor

@@ -314,6 +314,13 @@ export default class E2EEcontext {
314 314
                 return controller.enqueue(encodedFrame);
315 315
             }, e => {
316 316
                 logger.error(e);
317
+                if (encodedFrameType === undefined) { // audio, replace with silence.
318
+                    const newData = new ArrayBuffer(3);
319
+                    const newUint8 = new Uint8Array(newData);
320
+
321
+                    newUint8.set([ 0xd8, 0xff, 0xfe ]); // opus silence frame.
322
+                    encodedFrame.data = newData;
323
+                }
317 324
 
318 325
                 // Just feed the (potentially encrypted) frame in case of error.
319 326
                 // Worst case it is garbage.

Načítá se…
Zrušit
Uložit