configure method

  1. @override
Future<void> configure(
  1. String deviceId,
  2. MiniAVAudioInfo format
)
override

Configure the loopback context with a device and format.

Implementation

@override
Future<void> configure(String deviceId, MiniAVAudioInfo format) async {
  _ensureNotDestroyed();

  final deviceIdPtr = deviceId.toNativeUtf8();
  final formatCPtr = calloc<bindings.MiniAVAudioInfo>();

  try {
    AudioInfoFFIToPlatform.copyToNative(format, formatCPtr.ref);

    final res = bindings.MiniAV_Loopback_Configure(
      _contextHandle!,
      deviceIdPtr.cast<ffi.Char>(),
      formatCPtr,
    );

    if (res != bindings.MiniAVResultCode.MINIAV_SUCCESS) {
      throw Exception(
        'Failed to configure loopback for $deviceId: ${res.name}',
      );
    }
  } finally {
    calloc.free(deviceIdPtr);
    calloc.free(formatCPtr);
  }
}