ParticipantSFU constructor

ParticipantSFU({
  1. required String ownerId,
  2. bool isVideoEnabled = true,
  3. bool isAudioEnabled = true,
  4. bool isSharingScreen = false,
  5. bool isE2eeEnabled = false,
  6. bool isSpeakerPhoneEnabled = true,
  7. CameraType cameraType = CameraType.front,
  8. AudioLevel audioLevel = AudioLevel.kSilence,
  9. required RTCPeerConnection peerConnection,
  10. required dynamic onFirstFrameRendered()?,
  11. required WebRTCCodec videoCodec,
  12. WebRTCVideoStats? stats,
  13. WebRTCAudioStats? audioStats,
  14. bool isMe = false,
  15. MediaSource? cameraSource,
  16. MediaSource? screenSource,
})

Implementation

ParticipantSFU({
  required this.ownerId,
  this.isVideoEnabled = true,
  this.isAudioEnabled = true,
  this.isSharingScreen = false,
  this.isE2eeEnabled = false,
  this.isSpeakerPhoneEnabled = true,
  this.cameraType = CameraType.front,
  this.audioLevel = AudioLevel.kSilence,
  required this.peerConnection,
  required this.onFirstFrameRendered,
  required this.videoCodec,
  // use only one time
  WebRTCVideoStats? stats,
  WebRTCAudioStats? audioStats,
  bool isMe = false,
  this.cameraSource,
  this.screenSource,
}) {
  if (cameraSource != null || screenSource != null) return;

  cameraSource = MediaSource(onFirstFrameRendered: onFirstFrameRendered);
  screenSource = MediaSource(onFirstFrameRendered: onFirstFrameRendered);

  if (stats != null && audioStats != null) {
    peerConnection.monitorStats(
      stats,
      isMe: isMe,
      id: peerConnection.peerConnectionId,
      audioStats: audioStats,
      onLevelChanged: (level) {
        if (level == audioLevel) return;

        audioLevel = level;
        onFirstFrameRendered?.call();
      },
    );
  }
}