create static method

Future<DiveMediaSource?> create({
  1. String name = 'my media',
  2. required DiveMediaSourceSettings settings,
  3. bool requiresVideoMonitor = true,
})
override

Implementation

static Future<DiveMediaSource?> create({
  String name = 'my media',
  required DiveMediaSourceSettings settings,
  bool requiresVideoMonitor = true,
}) async {
  final source = DiveMediaSource(name, settings: settings);
  if (requiresVideoMonitor) await source.setupTexture(source.trackingUUID);

  final data = settings.toData();
  source.pointer = obslib.createMediaSource(
    sourceUuid: source.trackingUUID,
    name: name,
    settings: data,
  );

  data.dispose();
  await source.syncState();

  // TODO: try adding frame callback
  // await obslib.addSourceFrameCallback(source.trackingUUID, source.pointer.address);

  // Turn on the default audio monitoring device so we can hear the audio.
  // TODO: is this really needed here?
  if (source.pointer != null) {
    obslib.sourceSetMonitoringType(source.pointer!);
  }

  return source.pointer == null ? null : source;
}