helper.js (1009B)
1 "use strict"; 2 3 async function setupLoopbackWithCodecAndGetReader(t, codec) { 4 const caller = new RTCPeerConnection({encodedInsertableStreams:true}); 5 t.add_cleanup(() => caller.close()); 6 const callee = new RTCPeerConnection(); 7 t.add_cleanup(() => callee.close()); 8 9 await setMediaPermission("granted", ["camera"]); 10 const stream = await navigator.mediaDevices.getUserMedia({video:true}); 11 const videoTrack = stream.getVideoTracks()[0]; 12 t.add_cleanup(() => videoTrack.stop()); 13 14 const transceiver = caller.addTransceiver(videoTrack); 15 const codecCapability = 16 RTCRtpSender.getCapabilities('video').codecs.find(capability => { 17 return capability.mimeType.includes(codec); 18 }); 19 assert_not_equals(codecCapability, undefined); 20 transceiver.setCodecPreferences([codecCapability]); 21 22 const senderStreams = transceiver.sender.createEncodedStreams(); 23 exchangeIceCandidates(caller, callee); 24 await exchangeOfferAnswer(caller, callee); 25 return senderStreams.readable.getReader(); 26 }