convert static method

Implementation

static Pointer<V2TXLiveTranscodingConfigStruct> convert(
    V2TXLiveTranscodingConfig config) {
  final configPointer = calloc<V2TXLiveTranscodingConfigStruct>();

  configPointer.ref
    ..video_width = config.videoWidth
    ..video_height = config.videoHeight
    ..video_bitrate = config.videoBitrate
    ..video_framerate = config.videoFramerate
    ..video_gop = config.videoGOP
    ..background_color = config.backgroundColor
    ..audio_sample_rate = config.audioSampleRate
    ..audio_bitrate = config.audioBitrate
    ..audio_channels = config.audioChannels
    ..mix_stream_size = config.mixStreams.length;

  configPointer.ref
    ..background_image =
        config.backgroundImage?.toNativeUtf8().cast<Char>() ?? nullptr
    ..output_stream_id =
        config.outputStreamId?.toNativeUtf8().cast<Char>() ?? nullptr;

  if (config.mixStreams.isNotEmpty) {
    final mixStreamsPointer =
        calloc<V2TXLiveMixStreamStruct>(config.mixStreams.length);
    for (var i = 0; i < config.mixStreams.length; i++) {
      final mixStream = config.mixStreams[i];
      mixStreamsPointer[i]
        ..user_id = mixStream.userId.toNativeUtf8().cast<Char>()
        ..stream_id =
            mixStream.streamId?.toNativeUtf8().cast<Char>() ?? nullptr
        ..x = mixStream.x
        ..y = mixStream.y
        ..width = mixStream.width
        ..height = mixStream.height
        ..z_order = mixStream.zOrder
        ..input_type = mixStream.inputType.index;
    }
    configPointer.ref.mix_streams_array = mixStreamsPointer;
  }

  return configPointer;
}