init method

void init({
  1. bool videoOutput = false,
})

Implementation

void init({bool videoOutput = false}) {
  int error = Library.libmpv.mpv_initialize(ctx);
  if (error != mpv_error.MPV_ERROR_SUCCESS.value) {
    throw Exception(
      Library.libmpv.mpv_error_string(error).cast<Utf8>().toDartString(),
    );
  }

  <String, mpv_format>{
    'pause': mpv_format.MPV_FORMAT_FLAG,
    'time-pos': mpv_format.MPV_FORMAT_DOUBLE,
    'duration': mpv_format.MPV_FORMAT_DOUBLE,
    'volume': mpv_format.MPV_FORMAT_DOUBLE,
    'speed': mpv_format.MPV_FORMAT_DOUBLE,
    'video-out-params': mpv_format.MPV_FORMAT_NODE,
    'audio-params': mpv_format.MPV_FORMAT_NODE,
  }.forEach(
    (property, format) {
      final name = property.toNativeUtf8();
      Library.libmpv.mpv_observe_property(
        ctx,
        0,
        name.cast(),
        format,
      );
      calloc.free(name);
    },
  );

  // TODO: dispose
  final nativeCallable = WakeUpNativeCallable.listener(_mpvCallback);
  final nativeFunction = nativeCallable.nativeFunction;
  Library.libmpv
      .mpv_set_wakeup_callback(ctx, nativeFunction.cast(), ctx.cast());

  _videoOutput = videoOutput;
  if (videoOutput) {
    initVO();
  }
}