Module.loadFromBuffer constructor

Module.loadFromBuffer(
  1. Uint8List buffer, {
  2. List<String>? inputs,
  3. List<String>? outputs,
  4. RuntimeManager? runtimeManager,
  5. ModuleConfig? config,
})

Implementation

factory Module.loadFromBuffer(
  Uint8List buffer, {
  List<String>? inputs,
  List<String>? outputs,
  RuntimeManager? runtimeManager,
  ModuleConfig? config,
}) {
  final cBuffer = calloc<ffi.Uint8>(buffer.length)..asTypedList(buffer.length).setAll(0, buffer);
  final cInputs = inputs == null ? ffi.nullptr : _toCStringList(inputs);
  final cOutputs = outputs == null ? ffi.nullptr : _toCStringList(outputs);
  try {
    final ptr = C.mnn_module_load_from_bytes(
      cBuffer,
      buffer.length,
      cInputs,
      inputs?.length ?? 0,
      cOutputs,
      outputs?.length ?? 0,
      runtimeManager?.ptr ?? ffi.nullptr,
      config?.ptr.cast<C.mnn_module_config_t>() ?? ffi.nullptr,
    );
    return Module.fromPointer(ptr);
  } finally {
    calloc.free(cBuffer);
    _freeCStringList(cInputs, inputs?.length ?? 0);
    _freeCStringList(cOutputs, outputs?.length ?? 0);
  }
}