computeVideoLayers static method

  1. @internal
List<VideoLayer> computeVideoLayers(
  1. VideoDimensions dimensions,
  2. List<RTCRtpEncoding>? encodings
)

Implementation

@internal
static List<lk_models.VideoLayer> computeVideoLayers(
  VideoDimensions dimensions,
  List<rtc.RTCRtpEncoding>? encodings,
) {
  // default to a single layer, HQ
  if (encodings == null) {
    return [
      lk_models.VideoLayer(
        quality: lk_models.VideoQuality.HIGH,
        width: dimensions.width,
        height: dimensions.height,
        bitrate: 0,
      )
    ];
  }

  return encodings.map((e) {
    final scale = e.scaleResolutionDownBy ?? 1;
    var quality = videoQualityForRid(e.rid);
    if (quality == null && encodings.length == 1) {
      quality = lk_models.VideoQuality.HIGH;
    }
    return lk_models.VideoLayer(
      quality: quality,
      width: (dimensions.width.toDouble() / scale).floor(),
      height: (dimensions.height.toDouble() / scale).floor(),
      bitrate: e.maxBitrate ?? 0,
    );
  }).toList();
}