@@ -758,23 +758,29 @@ extension PublisherRtcManager on RtcManager {
758758 /// this layer will have the additional spatial and temporal layers
759759 /// defined via the scalabilityMode property.
760760 List <rtc.RTCRtpEncoding > toSvcEncodings (List <rtc.RTCRtpEncoding > layers) {
761- // We take the `f` layer, and we rename it to `q`.
762- return layers
763- .where ((layer) => layer.rid == 'f' )
764- .map (
765- (layer) => rtc.RTCRtpEncoding (
766- rid: 'q' ,
767- active: layer.active,
768- maxBitrate: layer.maxBitrate,
769- maxFramerate: layer.maxFramerate,
770- minBitrate: layer.minBitrate,
771- numTemporalLayers: layer.numTemporalLayers,
772- scaleResolutionDownBy: layer.scaleResolutionDownBy,
773- ssrc: layer.ssrc,
774- scalabilityMode: layer.scalabilityMode,
775- ),
776- )
777- .toList ();
761+ rtc.RTCRtpEncoding ? findByRid (String rid) {
762+ for (final layer in layers) {
763+ if (layer.rid == rid) return layer;
764+ }
765+ return null ;
766+ }
767+
768+ final highestLayer = findByRid ('f' ) ?? findByRid ('h' ) ?? findByRid ('q' );
769+ if (highestLayer == null ) return [];
770+
771+ return [
772+ rtc.RTCRtpEncoding (
773+ rid: 'q' ,
774+ active: highestLayer.active,
775+ maxBitrate: highestLayer.maxBitrate,
776+ maxFramerate: highestLayer.maxFramerate,
777+ minBitrate: highestLayer.minBitrate,
778+ numTemporalLayers: highestLayer.numTemporalLayers,
779+ scaleResolutionDownBy: highestLayer.scaleResolutionDownBy,
780+ ssrc: highestLayer.ssrc,
781+ scalabilityMode: highestLayer.scalabilityMode,
782+ )
783+ ];
778784 }
779785
780786 Future <
0 commit comments