changeCam method

Future<void> changeCam(
  1. String deviceId, [
  2. CustomTrack? customTrack
])

Implementation

Future<void> changeCam(String deviceId, [CustomTrack? customTrack]) async {
  if (_selectedVideoInput?.deviceId == deviceId) {
    return;
  }

  Span? changeCamSpan;
  try {
    if (videoSDKTelemetery != null) {
      changeCamSpan =
          videoSDKTelemetery!.trace(spanName: 'Changing Webcam', attributes: [
        Attribute.fromString(
            'customTrack',
            customTrack != null
                ? customTrack.toString()
                : 'Not using customTrack'),
        Attribute.fromString('deviceId', deviceId),
      ]);
    }
  } catch (error) {}

  try {
    //
    _cameraInProgress = true;
    //
    MediaDeviceInfo device =
        VideoSDK.mediaDevices[MediaDeviceType.videoInput]!.firstWhere(
      (device) => device.deviceId == deviceId,
    );

    //
    _selectedVideoInput = device;

    //
    await _disableCamImpl(parentSpan: changeCamSpan);

    //
    _enableCamImpl(customTrack: customTrack, parentSpan: changeCamSpan);

    //
    _cameraInProgress = false;

    if (changeCamSpan != null) {
      videoSDKTelemetery!.completeSpan(
          span: changeCamSpan,
          status: StatusCode.ok,
          message: 'Change Webcam Successful');
    }
  } catch (err) {
    //
    VideoSDKLog.createLog(
        message: "Error in changeCam() \n ${err.toString()}",
        logLevel: "ERROR");

    //
    if (changeCamSpan != null) {
      videoSDKTelemetery!.completeSpan(
          span: changeCamSpan,
          status: StatusCode.error,
          message: 'Change Webcam Failed \n ${err.toString()}');
    }

    //
    log("handle camera error $err");
  }
}