From 91fefc52a5480eecda4642c2263fc9ae078ff7d4 Mon Sep 17 00:00:00 2001 From: Yohan Totting Date: Mon, 22 Apr 2024 01:01:19 +0700 Subject: [PATCH] fix setcodec issue #110 (#111) Co-authored-by: Yohan Totting --- packages/room/peer/peer.js | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/packages/room/peer/peer.js b/packages/room/peer/peer.js index 65c31dec..0f5dc0f9 100644 --- a/packages/room/peer/peer.js +++ b/packages/room/peer/peer.js @@ -467,7 +467,7 @@ export const createPeer = ({ api, createStream, event, streams, config }) => { ) const systemAudioCodecs = - RTCRtpSender.getCapabilities('audio')?.codecs || [] + RTCRtpReceiver.getCapabilities('audio')?.codecs || [] const preferredAudioCodecs = [] if (stream.source === 'media' && systemAudioCodecs.length > 0) { @@ -479,10 +479,6 @@ export const createPeer = ({ api, createStream, event, streams, config }) => { audioCodec.toLowerCase() ) { preferredAudioCodecs.push(systemAudioCodec) - systemAudioCodecs.splice( - systemAudioCodecs.indexOf(systemAudioCodec), - 1 - ) } } } @@ -490,19 +486,11 @@ export const createPeer = ({ api, createStream, event, streams, config }) => { for (const systemAudioCodec of systemAudioCodecs) { if (systemAudioCodec.mimeType === 'audio/red') { preferredAudioCodecs.push(systemAudioCodec) - systemAudioCodecs.splice( - systemAudioCodecs.indexOf(systemAudioCodec), - 1 - ) } } for (const systemAudioCodec of systemAudioCodecs) { if (systemAudioCodec.mimeType === 'audio/opus') { preferredAudioCodecs.push(systemAudioCodec) - systemAudioCodecs.splice( - systemAudioCodecs.indexOf(systemAudioCodec), - 1 - ) } } } @@ -510,7 +498,9 @@ export const createPeer = ({ api, createStream, event, streams, config }) => { // Add all remaining codecs for (const audioCodec of systemAudioCodecs) { - preferredAudioCodecs.push(audioCodec) + if (!['audio/red', 'audio/opus'].includes(audioCodec.mimeType)) { + preferredAudioCodecs.push(audioCodec) + } } if (supportsSetCodecPreferences) { @@ -555,7 +545,9 @@ export const createPeer = ({ api, createStream, event, streams, config }) => { if (videoTrack) { const systemVideoCodecs = - RTCRtpSender.getCapabilities('video')?.codecs || [] + RTCRtpReceiver.getCapabilities('video')?.codecs || [] + + console.log('systemVideoCodecs', systemVideoCodecs) for (const videoCodec of config.media[type].videoCodecs) { for (const systemVideoCodec of systemVideoCodecs) { @@ -564,17 +556,18 @@ export const createPeer = ({ api, createStream, event, streams, config }) => { videoCodec.toLowerCase() ) { preferredCodecs.push(systemVideoCodec) - systemVideoCodecs.splice( - systemVideoCodecs.indexOf(systemVideoCodec), - 1 - ) } } } + console.log('preferredCodecs', preferredCodecs) + // Add all remaining codecs for (const videoCodec of systemVideoCodecs) { - preferredCodecs.push(videoCodec) + if (!config.media[type].videoCodecs.includes(videoCodec.mimeType)) { + console.log('videoCodec', videoCodec) + preferredCodecs.push(videoCodec) + } } /** @type {RTCRtpTransceiverInit} */