diff --git a/assets/sounds_online.wav b/assets/sounds_online.wav
new file mode 100644
index 00000000..9b95dfc2
Binary files /dev/null and b/assets/sounds_online.wav differ
diff --git a/lib/models/appstate.dart b/lib/models/appstate.dart
index 9d8f54b9..cc8b2d2a 100644
--- a/lib/models/appstate.dart
+++ b/lib/models/appstate.dart
@@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:io';
import 'package:cwtch/config.dart';
+import 'package:cwtch/third_party/miniaudio/lib/miniaudio.dart';
import 'package:flutter/widgets.dart';
enum ModalState { none, storageMigration, shutdown }
@@ -28,6 +29,10 @@ class AppState extends ChangeNotifier {
void SetCwtchInit() {
cwtchInit = true;
+ var audio = MiniAudio();
+ audio.initAudio().then((value) {
+ audio.playAudio("assets/sounds_online.wav");
+ });
notifyListeners();
}
diff --git a/lib/third_party/camera_linux/pubspec.yaml b/lib/third_party/camera_linux/pubspec.yaml
index 4965274e..9b48d91a 100644
--- a/lib/third_party/camera_linux/pubspec.yaml
+++ b/lib/third_party/camera_linux/pubspec.yaml
@@ -14,8 +14,7 @@ dependencies:
ffi: ^2.0.1
dev_dependencies:
- ffigen: ^6.1.2
- image: ^3.0.1
+ ffigen: 11.0.0
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
diff --git a/lib/third_party/camera_linux/src/opencv_wrapper.cpp b/lib/third_party/camera_linux/src/opencv_wrapper.cpp
index a9edb346..4fec44dd 100644
--- a/lib/third_party/camera_linux/src/opencv_wrapper.cpp
+++ b/lib/third_party/camera_linux/src/opencv_wrapper.cpp
@@ -30,6 +30,7 @@ extern "C" {
if (latestFrame.empty()) {
break;
}
+
}
cap.release();
}
diff --git a/lib/third_party/miniaudio/.gitignore b/lib/third_party/miniaudio/.gitignore
deleted file mode 100644
index ac5aa989..00000000
--- a/lib/third_party/miniaudio/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-migrate_working_dir/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
-/pubspec.lock
-**/doc/api/
-.dart_tool/
-build/
diff --git a/lib/third_party/miniaudio/.metadata b/lib/third_party/miniaudio/.metadata
deleted file mode 100644
index c1e890eb..00000000
--- a/lib/third_party/miniaudio/.metadata
+++ /dev/null
@@ -1,42 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
- revision: "41456452f29d64e8deb623a3c927524bcf9f111b"
- channel: "stable"
-
-project_type: plugin
-
-# Tracks metadata for the flutter migrate command
-migration:
- platforms:
- - platform: root
- create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- - platform: android
- create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- - platform: ios
- create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- - platform: linux
- create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- - platform: macos
- create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- - platform: windows
- create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
- base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b
-
- # User provided section
-
- # List of Local paths (relative to this file) that should be
- # ignored by the migrate tool.
- #
- # Files that are not part of the templates will be ignored by default.
- unmanaged_files:
- - 'lib/main.dart'
- - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/lib/third_party/miniaudio/CHANGELOG.md b/lib/third_party/miniaudio/CHANGELOG.md
deleted file mode 100644
index 41cc7d81..00000000
--- a/lib/third_party/miniaudio/CHANGELOG.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## 0.0.1
-
-* TODO: Describe initial release.
diff --git a/lib/third_party/miniaudio/LICENSE b/lib/third_party/miniaudio/LICENSE
deleted file mode 100644
index ba75c69f..00000000
--- a/lib/third_party/miniaudio/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-TODO: Add your license here.
diff --git a/lib/third_party/miniaudio/README.md b/lib/third_party/miniaudio/README.md
deleted file mode 100644
index d63ab694..00000000
--- a/lib/third_party/miniaudio/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# miniaudio
-
-A new Flutter plugin project.
-
-## Getting Started
-
-This project is a starting point for a Flutter
-[plug-in package](https://flutter.dev/developing-packages/),
-a specialized package that includes platform-specific implementation code for
-Android and/or iOS.
-
-For help getting started with Flutter development, view the
-[online documentation](https://flutter.dev/docs), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
-
diff --git a/lib/third_party/miniaudio/android/.gitignore b/lib/third_party/miniaudio/android/.gitignore
deleted file mode 100644
index 161bdcda..00000000
--- a/lib/third_party/miniaudio/android/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/workspace.xml
-/.idea/libraries
-.DS_Store
-/build
-/captures
-.cxx
diff --git a/lib/third_party/miniaudio/android/build.gradle b/lib/third_party/miniaudio/android/build.gradle
deleted file mode 100644
index a615a449..00000000
--- a/lib/third_party/miniaudio/android/build.gradle
+++ /dev/null
@@ -1,68 +0,0 @@
-group 'com.example.miniaudio'
-version '1.0-SNAPSHOT'
-
-buildscript {
- ext.kotlin_version = '1.7.10'
- repositories {
- google()
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:7.3.0'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-apply plugin: 'com.android.library'
-apply plugin: 'kotlin-android'
-
-android {
- if (project.android.hasProperty("namespace")) {
- namespace 'com.example.miniaudio'
- }
-
- compileSdkVersion 33
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
- test.java.srcDirs += 'src/test/kotlin'
- }
-
- defaultConfig {
- minSdkVersion 19
- }
-
- dependencies {
- testImplementation 'org.jetbrains.kotlin:kotlin-test'
- testImplementation 'org.mockito:mockito-core:5.0.0'
- }
-
- testOptions {
- unitTests.all {
- useJUnitPlatform()
-
- testLogging {
- events "passed", "skipped", "failed", "standardOut", "standardError"
- outputs.upToDateWhen {false}
- showStandardStreams = true
- }
- }
- }
-}
diff --git a/lib/third_party/miniaudio/android/settings.gradle b/lib/third_party/miniaudio/android/settings.gradle
deleted file mode 100644
index 818ccf8d..00000000
--- a/lib/third_party/miniaudio/android/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-rootProject.name = 'miniaudio'
diff --git a/lib/third_party/miniaudio/android/src/main/AndroidManifest.xml b/lib/third_party/miniaudio/android/src/main/AndroidManifest.xml
deleted file mode 100644
index 545c5e88..00000000
--- a/lib/third_party/miniaudio/android/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
diff --git a/lib/third_party/miniaudio/android/src/main/kotlin/com/example/miniaudio/MiniaudioPlugin.kt b/lib/third_party/miniaudio/android/src/main/kotlin/com/example/miniaudio/MiniaudioPlugin.kt
deleted file mode 100644
index 372bb297..00000000
--- a/lib/third_party/miniaudio/android/src/main/kotlin/com/example/miniaudio/MiniaudioPlugin.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.example.miniaudio
-
-import androidx.annotation.NonNull
-
-import io.flutter.embedding.engine.plugins.FlutterPlugin
-import io.flutter.plugin.common.MethodCall
-import io.flutter.plugin.common.MethodChannel
-import io.flutter.plugin.common.MethodChannel.MethodCallHandler
-import io.flutter.plugin.common.MethodChannel.Result
-
-/** MiniaudioPlugin */
-class MiniaudioPlugin: FlutterPlugin, MethodCallHandler {
- /// The MethodChannel that will the communication between Flutter and native Android
- ///
- /// This local reference serves to register the plugin with the Flutter Engine and unregister it
- /// when the Flutter Engine is detached from the Activity
- private lateinit var channel : MethodChannel
-
- override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
- channel = MethodChannel(flutterPluginBinding.binaryMessenger, "miniaudio")
- channel.setMethodCallHandler(this)
- }
-
- override fun onMethodCall(call: MethodCall, result: Result) {
- if (call.method == "getPlatformVersion") {
- result.success("Android ${android.os.Build.VERSION.RELEASE}")
- } else {
- result.notImplemented()
- }
- }
-
- override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
- channel.setMethodCallHandler(null)
- }
-}
diff --git a/lib/third_party/miniaudio/android/src/test/kotlin/com/example/miniaudio/MiniaudioPluginTest.kt b/lib/third_party/miniaudio/android/src/test/kotlin/com/example/miniaudio/MiniaudioPluginTest.kt
deleted file mode 100644
index 9e41dd6a..00000000
--- a/lib/third_party/miniaudio/android/src/test/kotlin/com/example/miniaudio/MiniaudioPluginTest.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.example.miniaudio
-
-import io.flutter.plugin.common.MethodCall
-import io.flutter.plugin.common.MethodChannel
-import kotlin.test.Test
-import org.mockito.Mockito
-
-/*
- * This demonstrates a simple unit test of the Kotlin portion of this plugin's implementation.
- *
- * Once you have built the plugin's example app, you can run these tests from the command
- * line by running `./gradlew testDebugUnitTest` in the `example/android/` directory, or
- * you can run them directly from IDEs that support JUnit such as Android Studio.
- */
-
-internal class MiniaudioPluginTest {
- @Test
- fun onMethodCall_getPlatformVersion_returnsExpectedValue() {
- val plugin = MiniaudioPlugin()
-
- val call = MethodCall("getPlatformVersion", null)
- val mockResult: MethodChannel.Result = Mockito.mock(MethodChannel.Result::class.java)
- plugin.onMethodCall(call, mockResult)
-
- Mockito.verify(mockResult).success("Android " + android.os.Build.VERSION.RELEASE)
- }
-}
diff --git a/lib/third_party/miniaudio/ffigen.yaml b/lib/third_party/miniaudio/ffigen.yaml
new file mode 100644
index 00000000..ae536e8b
--- /dev/null
+++ b/lib/third_party/miniaudio/ffigen.yaml
@@ -0,0 +1,19 @@
+# Run with `flutter pub run ffigen --config ffigen.yaml`.
+name: MiniAudioBindings
+description: |
+ Bindings for `src/audio.h`.
+
+ Regenerate bindings with `flutter pub run ffigen --config ffigen.yaml`.
+output: 'lib/miniaudio_bindings_generated.dart'
+headers:
+ entry-points:
+ - 'src/audio.h'
+ include-directives:
+ - 'src/audio.h'
+preamble: |
+ // ignore_for_file: always_specify_types
+ // ignore_for_file: camel_case_types
+ // ignore_for_file: non_constant_identifier_names
+comments:
+ style: any
+ length: full
diff --git a/lib/third_party/miniaudio/lib/miniaudio.dart b/lib/third_party/miniaudio/lib/miniaudio.dart
index ffb33be1..72e006a6 100644
--- a/lib/third_party/miniaudio/lib/miniaudio.dart
+++ b/lib/third_party/miniaudio/lib/miniaudio.dart
@@ -1,8 +1,27 @@
+import 'dart:async';
+import 'dart:ffi';
+import 'dart:typed_data';
+import 'package:miniaudio/miniaudio_bindings_generated.dart';
-import 'miniaudio_platform_interface.dart';
+import 'package:ffi/ffi.dart';
-class Miniaudio {
- Future getPlatformVersion() {
- return MiniaudioPlatform.instance.getPlatformVersion();
+class MiniAudio {
+ late MiniAudioBindings _bindings;
+
+ MiniAudio() {
+ final dylib = DynamicLibrary.open('libminiaudio.so');
+ _bindings = MiniAudioBindings(dylib);
}
+
+ Future initAudio() async {
+ _bindings.initAudio();
+ }
+
+ // Open Default Camera
+ Future playAudio(String file) async {
+ var filePtr = file.toNativeUtf8();
+ _bindings.playAudio(filePtr.cast());
+ malloc.free(filePtr);
+ }
+
}
diff --git a/lib/third_party/miniaudio/lib/miniaudio_bindings_generated.dart b/lib/third_party/miniaudio/lib/miniaudio_bindings_generated.dart
new file mode 100644
index 00000000..55597421
--- /dev/null
+++ b/lib/third_party/miniaudio/lib/miniaudio_bindings_generated.dart
@@ -0,0 +1,50 @@
+// ignore_for_file: always_specify_types
+// ignore_for_file: camel_case_types
+// ignore_for_file: non_constant_identifier_names
+
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+import 'dart:ffi' as ffi;
+
+/// Bindings for `src/audio.h`.
+///
+/// Regenerate bindings with `flutter pub run ffigen --config ffigen.yaml`.
+///
+class MiniAudioBindings {
+ /// Holds the symbol lookup function.
+ final ffi.Pointer Function(String symbolName)
+ _lookup;
+
+ /// The symbols are looked up in [dynamicLibrary].
+ MiniAudioBindings(ffi.DynamicLibrary dynamicLibrary)
+ : _lookup = dynamicLibrary.lookup;
+
+ /// The symbols are looked up with [lookup].
+ MiniAudioBindings.fromLookup(
+ ffi.Pointer Function(String symbolName)
+ lookup)
+ : _lookup = lookup;
+
+ void initAudio() {
+ return _initAudio();
+ }
+
+ late final _initAudioPtr =
+ _lookup>('initAudio');
+ late final _initAudio = _initAudioPtr.asFunction();
+
+ void playAudio(
+ ffi.Pointer file,
+ ) {
+ return _playAudio(
+ file,
+ );
+ }
+
+ late final _playAudioPtr =
+ _lookup)>>(
+ 'playAudio');
+ late final _playAudio =
+ _playAudioPtr.asFunction)>();
+}
diff --git a/lib/third_party/miniaudio/lib/miniaudio_method_channel.dart b/lib/third_party/miniaudio/lib/miniaudio_method_channel.dart
deleted file mode 100644
index 3011fa0f..00000000
--- a/lib/third_party/miniaudio/lib/miniaudio_method_channel.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-import 'package:flutter/foundation.dart';
-import 'package:flutter/services.dart';
-
-import 'miniaudio_platform_interface.dart';
-
-/// An implementation of [MiniaudioPlatform] that uses method channels.
-class MethodChannelMiniaudio extends MiniaudioPlatform {
- /// The method channel used to interact with the native platform.
- @visibleForTesting
- final methodChannel = const MethodChannel('miniaudio');
-
- @override
- Future getPlatformVersion() async {
- final version = await methodChannel.invokeMethod('getPlatformVersion');
- return version;
- }
-}
diff --git a/lib/third_party/miniaudio/lib/miniaudio_platform_interface.dart b/lib/third_party/miniaudio/lib/miniaudio_platform_interface.dart
deleted file mode 100644
index 249f7ba4..00000000
--- a/lib/third_party/miniaudio/lib/miniaudio_platform_interface.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-
-import 'miniaudio_method_channel.dart';
-
-abstract class MiniaudioPlatform extends PlatformInterface {
- /// Constructs a MiniaudioPlatform.
- MiniaudioPlatform() : super(token: _token);
-
- static final Object _token = Object();
-
- static MiniaudioPlatform _instance = MethodChannelMiniaudio();
-
- /// The default instance of [MiniaudioPlatform] to use.
- ///
- /// Defaults to [MethodChannelMiniaudio].
- static MiniaudioPlatform get instance => _instance;
-
- /// Platform-specific implementations should set this with their own
- /// platform-specific class that extends [MiniaudioPlatform] when
- /// they register themselves.
- static set instance(MiniaudioPlatform instance) {
- PlatformInterface.verifyToken(instance, _token);
- _instance = instance;
- }
-
- Future getPlatformVersion() {
- throw UnimplementedError('platformVersion() has not been implemented.');
- }
-}
diff --git a/lib/third_party/miniaudio/linux/CMakeLists.txt b/lib/third_party/miniaudio/linux/CMakeLists.txt
index 4f958a7b..f52e6ba6 100644
--- a/lib/third_party/miniaudio/linux/CMakeLists.txt
+++ b/lib/third_party/miniaudio/linux/CMakeLists.txt
@@ -7,88 +7,16 @@ cmake_minimum_required(VERSION 3.10)
set(PROJECT_NAME "miniaudio")
project(${PROJECT_NAME} LANGUAGES CXX)
-# This value is used when generating builds using this plugin, so it must
-# not be changed.
-set(PLUGIN_NAME "miniaudio_plugin")
-
-# Any new source files that you add to the plugin should be added here.
-list(APPEND PLUGIN_SOURCES
- "miniaudio_plugin.cc"
-)
-
-# Define the plugin library target. Its name must not be changed (see comment
-# on PLUGIN_NAME above).
-add_library(${PLUGIN_NAME} SHARED
- ${PLUGIN_SOURCES}
-)
-
-# Apply a standard set of build settings that are configured in the
-# application-level CMakeLists.txt. This can be removed for plugins that want
-# full control over build settings.
-apply_standard_settings(${PLUGIN_NAME})
-
-# Symbols are hidden by default to reduce the chance of accidental conflicts
-# between plugins. This should not be removed; any symbols that should be
-# exported should be explicitly exported with the FLUTTER_PLUGIN_EXPORT macro.
-set_target_properties(${PLUGIN_NAME} PROPERTIES
- CXX_VISIBILITY_PRESET hidden)
-target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
-
-# Source include directories and library dependencies. Add any plugin-specific
-# dependencies here.
-target_include_directories(${PLUGIN_NAME} INTERFACE
- "${CMAKE_CURRENT_SOURCE_DIR}/include")
-target_link_libraries(${PLUGIN_NAME} PRIVATE flutter)
-target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::GTK)
+# Invoke the build for native code shared with the other target platforms.
+# This can be changed to accommodate different builds.
+add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../src" "${CMAKE_CURRENT_BINARY_DIR}/shared")
# List of absolute paths to libraries that should be bundled with the plugin.
# This list could contain prebuilt libraries, or libraries created by an
# external build triggered from this build file.
set(miniaudio_bundled_libraries
- ""
+ # Defined in ../src/CMakeLists.txt.
+ # This can be changed to accommodate different builds.
+ $
PARENT_SCOPE
)
-
-# === Tests ===
-# These unit tests can be run from a terminal after building the example.
-
-# Only enable test builds when building the example (which sets this variable)
-# so that plugin clients aren't building the tests.
-if (${include_${PROJECT_NAME}_tests})
-if(${CMAKE_VERSION} VERSION_LESS "3.11.0")
-message("Unit tests require CMake 3.11.0 or later")
-else()
-set(TEST_RUNNER "${PROJECT_NAME}_test")
-enable_testing()
-
-# Add the Google Test dependency.
-include(FetchContent)
-FetchContent_Declare(
- googletest
- URL https://github.com/google/googletest/archive/release-1.11.0.zip
-)
-# Prevent overriding the parent project's compiler/linker settings
-set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
-# Disable install commands for gtest so it doesn't end up in the bundle.
-set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of googletest" FORCE)
-
-FetchContent_MakeAvailable(googletest)
-
-# The plugin's exported API is not very useful for unit testing, so build the
-# sources directly into the test binary rather than using the shared library.
-add_executable(${TEST_RUNNER}
- test/miniaudio_plugin_test.cc
- ${PLUGIN_SOURCES}
-)
-apply_standard_settings(${TEST_RUNNER})
-target_include_directories(${TEST_RUNNER} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
-target_link_libraries(${TEST_RUNNER} PRIVATE flutter)
-target_link_libraries(${TEST_RUNNER} PRIVATE PkgConfig::GTK)
-target_link_libraries(${TEST_RUNNER} PRIVATE gtest_main gmock)
-
-# Enable automatic test discovery.
-include(GoogleTest)
-gtest_discover_tests(${TEST_RUNNER})
-
-endif() # CMake version check
-endif() # include_${PROJECT_NAME}_tests
\ No newline at end of file
diff --git a/lib/third_party/miniaudio/linux/include/miniaudio/miniaudio_plugin.h b/lib/third_party/miniaudio/linux/include/miniaudio/miniaudio_plugin.h
deleted file mode 100644
index 5321ddd9..00000000
--- a/lib/third_party/miniaudio/linux/include/miniaudio/miniaudio_plugin.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_H_
-#define FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_H_
-
-#include
-
-G_BEGIN_DECLS
-
-#ifdef FLUTTER_PLUGIN_IMPL
-#define FLUTTER_PLUGIN_EXPORT __attribute__((visibility("default")))
-#else
-#define FLUTTER_PLUGIN_EXPORT
-#endif
-
-typedef struct _MiniaudioPlugin MiniaudioPlugin;
-typedef struct {
- GObjectClass parent_class;
-} MiniaudioPluginClass;
-
-FLUTTER_PLUGIN_EXPORT GType miniaudio_plugin_get_type();
-
-FLUTTER_PLUGIN_EXPORT void miniaudio_plugin_register_with_registrar(
- FlPluginRegistrar* registrar);
-
-G_END_DECLS
-
-#endif // FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_H_
diff --git a/lib/third_party/miniaudio/linux/miniaudio_plugin.cc b/lib/third_party/miniaudio/linux/miniaudio_plugin.cc
deleted file mode 100644
index 9782d8c4..00000000
--- a/lib/third_party/miniaudio/linux/miniaudio_plugin.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-#include "include/miniaudio/miniaudio_plugin.h"
-
-#include
-#include
-#include
-
-#include
-
-#include "miniaudio_plugin_private.h"
-#include "miniaudio.h"
-
-#define MINIAUDIO_PLUGIN(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), miniaudio_plugin_get_type(), \
- MiniaudioPlugin))
-
-struct _MiniaudioPlugin {
- GObject parent_instance;
-};
-
-G_DEFINE_TYPE(MiniaudioPlugin, miniaudio_plugin, g_object_get_type())
-
-// Called when a method call is received from Flutter.
-static void miniaudio_plugin_handle_method_call(
- MiniaudioPlugin* self,
- FlMethodCall* method_call) {
- g_autoptr(FlMethodResponse) response = nullptr;
-
- const gchar* method = fl_method_call_get_name(method_call);
- //const FlValue* args = fl_method_call_get_args(method_call);
-
- if (strcmp(method, "getPlatformVersion") == 0) {
- response = get_platform_version();
- }else if (strcmp(method, "playAudio") == 0) {
- // ma_decoder decoder;
- // ma_result result;
- // result = ma_decoder_init_file(fl_value_get_string(0), NULL, &decoder);
- // if (result != MA_SUCCESS) {
- /// printf("Could not load file: %s\n", fl_value_get_string(0));
- // }
-
- //response = nullptr;
- } else {
- response = FL_METHOD_RESPONSE(fl_method_not_implemented_response_new());
- }
-
- fl_method_call_respond(method_call, response, nullptr);
-}
-
-FlMethodResponse* get_platform_version() {
- struct utsname uname_data = {};
- uname(&uname_data);
- g_autofree gchar *version = g_strdup_printf("Linux %s", uname_data.version);
- g_autoptr(FlValue) result = fl_value_new_string(version);
- return FL_METHOD_RESPONSE(fl_method_success_response_new(result));
-}
-
-static void miniaudio_plugin_dispose(GObject* object) {
- G_OBJECT_CLASS(miniaudio_plugin_parent_class)->dispose(object);
-}
-
-static void miniaudio_plugin_class_init(MiniaudioPluginClass* klass) {
- G_OBJECT_CLASS(klass)->dispose = miniaudio_plugin_dispose;
-}
-
-static void miniaudio_plugin_init(MiniaudioPlugin* self) {}
-
-static void method_call_cb(FlMethodChannel* channel, FlMethodCall* method_call,
- gpointer user_data) {
- MiniaudioPlugin* plugin = MINIAUDIO_PLUGIN(user_data);
- miniaudio_plugin_handle_method_call(plugin, method_call);
-}
-
-void miniaudio_plugin_register_with_registrar(FlPluginRegistrar* registrar) {
- MiniaudioPlugin* plugin = MINIAUDIO_PLUGIN(
- g_object_new(miniaudio_plugin_get_type(), nullptr));
-
- g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
- g_autoptr(FlMethodChannel) channel =
- fl_method_channel_new(fl_plugin_registrar_get_messenger(registrar),
- "miniaudio",
- FL_METHOD_CODEC(codec));
- fl_method_channel_set_method_call_handler(channel, method_call_cb,
- g_object_ref(plugin),
- g_object_unref);
-
- g_object_unref(plugin);
-}
diff --git a/lib/third_party/miniaudio/linux/miniaudio_plugin_private.h b/lib/third_party/miniaudio/linux/miniaudio_plugin_private.h
deleted file mode 100644
index 96fa15f8..00000000
--- a/lib/third_party/miniaudio/linux/miniaudio_plugin_private.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#include
-
-#include "include/miniaudio/miniaudio_plugin.h"
-
-// This file exposes some plugin internals for unit testing. See
-// https://github.com/flutter/flutter/issues/88724 for current limitations
-// in the unit-testable API.
-
-// Handles the getPlatformVersion method call.
-FlMethodResponse *get_platform_version();
diff --git a/lib/third_party/miniaudio/linux/test/miniaudio_plugin_test.cc b/lib/third_party/miniaudio/linux/test/miniaudio_plugin_test.cc
deleted file mode 100644
index f3717364..00000000
--- a/lib/third_party/miniaudio/linux/test/miniaudio_plugin_test.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-#include
-#include
-#include
-
-#include "include/miniaudio/miniaudio_plugin.h"
-#include "miniaudio_plugin_private.h"
-
-// This demonstrates a simple unit test of the C portion of this plugin's
-// implementation.
-//
-// Once you have built the plugin's example app, you can run these tests
-// from the command line. For instance, for a plugin called my_plugin
-// built for x64 debug, run:
-// $ build/linux/x64/debug/plugins/my_plugin/my_plugin_test
-
-namespace miniaudio {
-namespace test {
-
-TEST(MiniaudioPlugin, GetPlatformVersion) {
- g_autoptr(FlMethodResponse) response = get_platform_version();
- ASSERT_NE(response, nullptr);
- ASSERT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
- FlValue* result = fl_method_success_response_get_result(
- FL_METHOD_SUCCESS_RESPONSE(response));
- ASSERT_EQ(fl_value_get_type(result), FL_VALUE_TYPE_STRING);
- // The full string varies, so just validate that it has the right format.
- EXPECT_THAT(fl_value_get_string(result), testing::StartsWith("Linux "));
-}
-
-} // namespace test
-} // namespace miniaudio
diff --git a/lib/third_party/miniaudio/macos/Classes/MiniaudioPlugin.swift b/lib/third_party/miniaudio/macos/Classes/MiniaudioPlugin.swift
deleted file mode 100644
index 47da2d08..00000000
--- a/lib/third_party/miniaudio/macos/Classes/MiniaudioPlugin.swift
+++ /dev/null
@@ -1,19 +0,0 @@
-import Cocoa
-import FlutterMacOS
-
-public class MiniaudioPlugin: NSObject, FlutterPlugin {
- public static func register(with registrar: FlutterPluginRegistrar) {
- let channel = FlutterMethodChannel(name: "miniaudio", binaryMessenger: registrar.messenger)
- let instance = MiniaudioPlugin()
- registrar.addMethodCallDelegate(instance, channel: channel)
- }
-
- public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- switch call.method {
- case "getPlatformVersion":
- result("macOS " + ProcessInfo.processInfo.operatingSystemVersionString)
- default:
- result(FlutterMethodNotImplemented)
- }
- }
-}
diff --git a/lib/third_party/miniaudio/macos/miniaudio.podspec b/lib/third_party/miniaudio/macos/miniaudio.podspec
deleted file mode 100644
index f6218c22..00000000
--- a/lib/third_party/miniaudio/macos/miniaudio.podspec
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
-# Run `pod lib lint miniaudio.podspec` to validate before publishing.
-#
-Pod::Spec.new do |s|
- s.name = 'miniaudio'
- s.version = '0.0.1'
- s.summary = 'A new Flutter plugin project.'
- s.description = <<-DESC
-A new Flutter plugin project.
- DESC
- s.homepage = 'http://example.com'
- s.license = { :file => '../LICENSE' }
- s.author = { 'Your Company' => 'email@example.com' }
-
- s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
- s.dependency 'FlutterMacOS'
-
- s.platform = :osx, '10.11'
- s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
- s.swift_version = '5.0'
-end
diff --git a/lib/third_party/miniaudio/pubspec.lock b/lib/third_party/miniaudio/pubspec.lock
new file mode 100644
index 00000000..18408557
--- /dev/null
+++ b/lib/third_party/miniaudio/pubspec.lock
@@ -0,0 +1,333 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.4.10"
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.11.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ characters:
+ dependency: transitive
+ description:
+ name: characters
+ sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ cli_util:
+ dependency: transitive
+ description:
+ name: cli_util
+ sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.5"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.18.0"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.1"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.3"
+ fake_async:
+ dependency: transitive
+ description:
+ name: fake_async
+ sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.1"
+ ffi:
+ dependency: "direct main"
+ description:
+ name: ffi
+ sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
+ ffigen:
+ dependency: "direct dev"
+ description:
+ name: ffigen
+ sha256: ec6a2439159d27c871d92862fb9f3012ef19d9ec4b0fa383c69c8553b2dd2ac5
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.2"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.4"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_lints:
+ dependency: "direct dev"
+ description:
+ name: flutter_lints
+ sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.3"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ image:
+ dependency: "direct dev"
+ description:
+ name: image
+ sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.3.0"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ sha256: "4186c61b32f99e60f011f7160e32c89a758ae9b1d0c6d28e2c02ef0382300e2b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.0"
+ lints:
+ dependency: transitive
+ description:
+ name: lints
+ sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ logging:
+ dependency: transitive
+ description:
+ name: logging
+ sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.16"
+ material_color_utilities:
+ dependency: transitive
+ description:
+ name: material_color_utilities
+ sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.0"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.8.3"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.2"
+ plugin_platform_interface:
+ dependency: "direct main"
+ description:
+ name: plugin_platform_interface
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.8"
+ pointycastle:
+ dependency: transitive
+ description:
+ name: pointycastle
+ sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.7.4"
+ quiver:
+ dependency: transitive
+ description:
+ name: quiver
+ sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.1"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.99"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.0"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.11.1"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.1"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.2"
+ vector_math:
+ dependency: transitive
+ description:
+ name: vector_math
+ sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.0"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+sdks:
+ dart: ">=3.2.0 <4.0.0"
+ flutter: ">=3.3.0"
diff --git a/lib/third_party/miniaudio/pubspec.yaml b/lib/third_party/miniaudio/pubspec.yaml
index efdec4ab..9786cdb3 100644
--- a/lib/third_party/miniaudio/pubspec.yaml
+++ b/lib/third_party/miniaudio/pubspec.yaml
@@ -1,18 +1,20 @@
name: miniaudio
-description: "A new Flutter plugin project."
+description: Play audio
version: 0.0.1
-homepage:
environment:
- sdk: '>=3.2.6 <4.0.0'
+ sdk: '>=3.1.0 <4.0.0'
flutter: '>=3.3.0'
dependencies:
flutter:
sdk: flutter
plugin_platform_interface: ^2.0.2
+ ffi: ^2.0.1
dev_dependencies:
+ ffigen: ^6.1.2
+ image: ^3.0.1
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
@@ -32,19 +34,12 @@ flutter:
# This is required for using `dart:ffi`.
# All these are used by the tooling to maintain consistency when
# adding or updating assets for this project.
+ #
+ # Please refer to README.md for a detailed explanation.
plugin:
platforms:
- android:
- package: com.example.miniaudio
- pluginClass: MiniaudioPlugin
- ios:
- pluginClass: MiniaudioPlugin
linux:
- pluginClass: MiniaudioPlugin
- macos:
- pluginClass: MiniaudioPlugin
- windows:
- pluginClass: MiniaudioPluginCApi
+ ffiPlugin: true
# To add assets to your plugin package, add an assets section, like this:
# assets:
diff --git a/lib/third_party/miniaudio/src/CMakeLists.txt b/lib/third_party/miniaudio/src/CMakeLists.txt
new file mode 100644
index 00000000..66a8c848
--- /dev/null
+++ b/lib/third_party/miniaudio/src/CMakeLists.txt
@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 3.10)
+project(audio_library VERSION 0.0.1 LANGUAGES C CXX)
+
+add_library(miniaudio SHARED "audio.c")
+target_link_libraries(miniaudio)
+
+set_target_properties(miniaudio PROPERTIES
+ PUBLIC_HEADER audio.h
+ PUBLIC_HEADER miniaudio.h
+ OUTPUT_NAME "miniaudio"
+)
+
+target_compile_definitions(miniaudio PUBLIC DART_SHARED_LIB)
diff --git a/lib/third_party/miniaudio/src/audio.c b/lib/third_party/miniaudio/src/audio.c
new file mode 100644
index 00000000..be5eda67
--- /dev/null
+++ b/lib/third_party/miniaudio/src/audio.c
@@ -0,0 +1,67 @@
+#define MINIAUDIO_IMPLEMENTATION
+#include "miniaudio.h"
+#include
+
+ ma_device recording_device;
+ ma_engine engine;
+void initAudio() {
+ ma_result result;
+ result = ma_engine_init(NULL, &engine);
+ if (result != MA_SUCCESS) {
+ printf("Could not init engine\n");
+
+ }
+}
+
+void playAudio(char * file) {
+ ma_engine_play_sound(&engine, file, NULL);
+}
+
+void data_callback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount)
+{
+ ma_encoder* pEncoder = (ma_encoder*)pDevice->pUserData;
+ MA_ASSERT(pEncoder != NULL);
+
+ ma_encoder_write_pcm_frames(pEncoder, pInput, frameCount, NULL);
+
+ (void)pOutput;
+}
+
+void startRecording() {
+ ma_result result;
+ ma_encoder_config encoderConfig;
+ ma_encoder encoder;
+ ma_device_config deviceConfig;
+
+ encoderConfig = ma_encoder_config_init(ma_encoding_format_wav, ma_format_f32, 2, 44100);
+ deviceConfig = ma_device_config_init(ma_device_type_capture);
+ deviceConfig.capture.format = encoder.config.format;
+ deviceConfig.capture.channels = encoder.config.channels;
+ deviceConfig.sampleRate = encoder.config.sampleRate;
+ deviceConfig.dataCallback = data_callback;
+ deviceConfig.pUserData = &encoder;
+
+ if (ma_encoder_init_file("test.wav", &encoderConfig, &encoder) != MA_SUCCESS) {
+ printf("Failed to initialize output file.\n");
+ return ;
+ }
+
+ result = ma_device_init(NULL, &deviceConfig, &recording_device);
+ if (result != MA_SUCCESS) {
+ printf("Failed to initialize capture device.\n");
+ return ;
+ }
+
+ result = ma_device_start(&recording_device);
+ if (result != MA_SUCCESS) {
+ printf("Failed to start device.\n");
+ return;
+ }
+}
+
+void stopRecording() {
+ ma_result result;
+ result = ma_device_stop(&recording_device);
+}
+
+
\ No newline at end of file
diff --git a/lib/third_party/miniaudio/src/audio.h b/lib/third_party/miniaudio/src/audio.h
new file mode 100644
index 00000000..7a32e174
--- /dev/null
+++ b/lib/third_party/miniaudio/src/audio.h
@@ -0,0 +1,14 @@
+#include
+#include "miniaudio.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void initAudio();
+void playAudio(char * file);
+
+#ifdef __cplusplus
+}
+#endif
+
+
diff --git a/lib/third_party/miniaudio/linux/miniaudio.h b/lib/third_party/miniaudio/src/miniaudio.h
similarity index 100%
rename from lib/third_party/miniaudio/linux/miniaudio.h
rename to lib/third_party/miniaudio/src/miniaudio.h
diff --git a/lib/third_party/miniaudio/test/miniaudio_method_channel_test.dart b/lib/third_party/miniaudio/test/miniaudio_method_channel_test.dart
deleted file mode 100644
index 3f82703e..00000000
--- a/lib/third_party/miniaudio/test/miniaudio_method_channel_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-import 'package:flutter/services.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:miniaudio/miniaudio_method_channel.dart';
-
-void main() {
- TestWidgetsFlutterBinding.ensureInitialized();
-
- MethodChannelMiniaudio platform = MethodChannelMiniaudio();
- const MethodChannel channel = MethodChannel('miniaudio');
-
- setUp(() {
- TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(
- channel,
- (MethodCall methodCall) async {
- return '42';
- },
- );
- });
-
- tearDown(() {
- TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(channel, null);
- });
-
- test('getPlatformVersion', () async {
- expect(await platform.getPlatformVersion(), '42');
- });
-}
diff --git a/lib/third_party/miniaudio/test/miniaudio_test.dart b/lib/third_party/miniaudio/test/miniaudio_test.dart
deleted file mode 100644
index 6156d8cb..00000000
--- a/lib/third_party/miniaudio/test/miniaudio_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-import 'package:flutter_test/flutter_test.dart';
-import 'package:miniaudio/miniaudio.dart';
-import 'package:miniaudio/miniaudio_platform_interface.dart';
-import 'package:miniaudio/miniaudio_method_channel.dart';
-import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-
-class MockMiniaudioPlatform
- with MockPlatformInterfaceMixin
- implements MiniaudioPlatform {
-
- @override
- Future getPlatformVersion() => Future.value('42');
-}
-
-void main() {
- final MiniaudioPlatform initialPlatform = MiniaudioPlatform.instance;
-
- test('$MethodChannelMiniaudio is the default instance', () {
- expect(initialPlatform, isInstanceOf());
- });
-
- test('getPlatformVersion', () async {
- Miniaudio miniaudioPlugin = Miniaudio();
- MockMiniaudioPlatform fakePlatform = MockMiniaudioPlatform();
- MiniaudioPlatform.instance = fakePlatform;
-
- expect(await miniaudioPlugin.getPlatformVersion(), '42');
- });
-}
diff --git a/lib/third_party/miniaudio/windows/.gitignore b/lib/third_party/miniaudio/windows/.gitignore
deleted file mode 100644
index b3eb2be1..00000000
--- a/lib/third_party/miniaudio/windows/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-flutter/
-
-# Visual Studio user-specific files.
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# Visual Studio build-related files.
-x64/
-x86/
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!*.[Cc]ache/
diff --git a/lib/third_party/miniaudio/windows/CMakeLists.txt b/lib/third_party/miniaudio/windows/CMakeLists.txt
deleted file mode 100644
index d7ee6148..00000000
--- a/lib/third_party/miniaudio/windows/CMakeLists.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-# The Flutter tooling requires that developers have a version of Visual Studio
-# installed that includes CMake 3.14 or later. You should not increase this
-# version, as doing so will cause the plugin to fail to compile for some
-# customers of the plugin.
-cmake_minimum_required(VERSION 3.14)
-
-# Project-level configuration.
-set(PROJECT_NAME "miniaudio")
-project(${PROJECT_NAME} LANGUAGES CXX)
-
-# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
-# versions of CMake.
-cmake_policy(VERSION 3.14...3.25)
-
-# This value is used when generating builds using this plugin, so it must
-# not be changed
-set(PLUGIN_NAME "miniaudio_plugin")
-
-# Any new source files that you add to the plugin should be added here.
-list(APPEND PLUGIN_SOURCES
- "miniaudio_plugin.cpp"
- "miniaudio_plugin.h"
-)
-
-# Define the plugin library target. Its name must not be changed (see comment
-# on PLUGIN_NAME above).
-add_library(${PLUGIN_NAME} SHARED
- "include/miniaudio/miniaudio_plugin_c_api.h"
- "miniaudio_plugin_c_api.cpp"
- ${PLUGIN_SOURCES}
-)
-
-# Apply a standard set of build settings that are configured in the
-# application-level CMakeLists.txt. This can be removed for plugins that want
-# full control over build settings.
-apply_standard_settings(${PLUGIN_NAME})
-
-# Symbols are hidden by default to reduce the chance of accidental conflicts
-# between plugins. This should not be removed; any symbols that should be
-# exported should be explicitly exported with the FLUTTER_PLUGIN_EXPORT macro.
-set_target_properties(${PLUGIN_NAME} PROPERTIES
- CXX_VISIBILITY_PRESET hidden)
-target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
-
-# Source include directories and library dependencies. Add any plugin-specific
-# dependencies here.
-target_include_directories(${PLUGIN_NAME} INTERFACE
- "${CMAKE_CURRENT_SOURCE_DIR}/include")
-target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)
-
-# List of absolute paths to libraries that should be bundled with the plugin.
-# This list could contain prebuilt libraries, or libraries created by an
-# external build triggered from this build file.
-set(miniaudio_bundled_libraries
- ""
- PARENT_SCOPE
-)
-
-# === Tests ===
-# These unit tests can be run from a terminal after building the example, or
-# from Visual Studio after opening the generated solution file.
-
-# Only enable test builds when building the example (which sets this variable)
-# so that plugin clients aren't building the tests.
-if (${include_${PROJECT_NAME}_tests})
-set(TEST_RUNNER "${PROJECT_NAME}_test")
-enable_testing()
-
-# Add the Google Test dependency.
-include(FetchContent)
-FetchContent_Declare(
- googletest
- URL https://github.com/google/googletest/archive/release-1.11.0.zip
-)
-# Prevent overriding the parent project's compiler/linker settings
-set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
-# Disable install commands for gtest so it doesn't end up in the bundle.
-set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of googletest" FORCE)
-FetchContent_MakeAvailable(googletest)
-
-# The plugin's C API is not very useful for unit testing, so build the sources
-# directly into the test binary rather than using the DLL.
-add_executable(${TEST_RUNNER}
- test/miniaudio_plugin_test.cpp
- ${PLUGIN_SOURCES}
-)
-apply_standard_settings(${TEST_RUNNER})
-target_include_directories(${TEST_RUNNER} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
-target_link_libraries(${TEST_RUNNER} PRIVATE flutter_wrapper_plugin)
-target_link_libraries(${TEST_RUNNER} PRIVATE gtest_main gmock)
-# flutter_wrapper_plugin has link dependencies on the Flutter DLL.
-add_custom_command(TARGET ${TEST_RUNNER} POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
- "${FLUTTER_LIBRARY}" $
-)
-
-# Enable automatic test discovery.
-include(GoogleTest)
-gtest_discover_tests(${TEST_RUNNER})
-endif()
diff --git a/lib/third_party/miniaudio/windows/include/miniaudio/miniaudio_plugin_c_api.h b/lib/third_party/miniaudio/windows/include/miniaudio/miniaudio_plugin_c_api.h
deleted file mode 100644
index 8d05b35e..00000000
--- a/lib/third_party/miniaudio/windows/include/miniaudio/miniaudio_plugin_c_api.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_C_API_H_
-#define FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_C_API_H_
-
-#include
-
-#ifdef FLUTTER_PLUGIN_IMPL
-#define FLUTTER_PLUGIN_EXPORT __declspec(dllexport)
-#else
-#define FLUTTER_PLUGIN_EXPORT __declspec(dllimport)
-#endif
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-FLUTTER_PLUGIN_EXPORT void MiniaudioPluginCApiRegisterWithRegistrar(
- FlutterDesktopPluginRegistrarRef registrar);
-
-#if defined(__cplusplus)
-} // extern "C"
-#endif
-
-#endif // FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_C_API_H_
diff --git a/lib/third_party/miniaudio/windows/miniaudio_plugin.cpp b/lib/third_party/miniaudio/windows/miniaudio_plugin.cpp
deleted file mode 100644
index 505491b8..00000000
--- a/lib/third_party/miniaudio/windows/miniaudio_plugin.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "miniaudio_plugin.h"
-
-// This must be included before many other Windows headers.
-#include
-
-// For getPlatformVersion; remove unless needed for your plugin implementation.
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-
-namespace miniaudio {
-
-// static
-void MiniaudioPlugin::RegisterWithRegistrar(
- flutter::PluginRegistrarWindows *registrar) {
- auto channel =
- std::make_unique>(
- registrar->messenger(), "miniaudio",
- &flutter::StandardMethodCodec::GetInstance());
-
- auto plugin = std::make_unique();
-
- channel->SetMethodCallHandler(
- [plugin_pointer = plugin.get()](const auto &call, auto result) {
- plugin_pointer->HandleMethodCall(call, std::move(result));
- });
-
- registrar->AddPlugin(std::move(plugin));
-}
-
-MiniaudioPlugin::MiniaudioPlugin() {}
-
-MiniaudioPlugin::~MiniaudioPlugin() {}
-
-void MiniaudioPlugin::HandleMethodCall(
- const flutter::MethodCall &method_call,
- std::unique_ptr> result) {
- if (method_call.method_name().compare("getPlatformVersion") == 0) {
- std::ostringstream version_stream;
- version_stream << "Windows ";
- if (IsWindows10OrGreater()) {
- version_stream << "10+";
- } else if (IsWindows8OrGreater()) {
- version_stream << "8";
- } else if (IsWindows7OrGreater()) {
- version_stream << "7";
- }
- result->Success(flutter::EncodableValue(version_stream.str()));
- } else {
- result->NotImplemented();
- }
-}
-
-} // namespace miniaudio
diff --git a/lib/third_party/miniaudio/windows/miniaudio_plugin.h b/lib/third_party/miniaudio/windows/miniaudio_plugin.h
deleted file mode 100644
index 9b70f8c3..00000000
--- a/lib/third_party/miniaudio/windows/miniaudio_plugin.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_H_
-#define FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_H_
-
-#include
-#include
-
-#include
-
-namespace miniaudio {
-
-class MiniaudioPlugin : public flutter::Plugin {
- public:
- static void RegisterWithRegistrar(flutter::PluginRegistrarWindows *registrar);
-
- MiniaudioPlugin();
-
- virtual ~MiniaudioPlugin();
-
- // Disallow copy and assign.
- MiniaudioPlugin(const MiniaudioPlugin&) = delete;
- MiniaudioPlugin& operator=(const MiniaudioPlugin&) = delete;
-
- // Called when a method is called on this plugin's channel from Dart.
- void HandleMethodCall(
- const flutter::MethodCall &method_call,
- std::unique_ptr> result);
-};
-
-} // namespace miniaudio
-
-#endif // FLUTTER_PLUGIN_MINIAUDIO_PLUGIN_H_
diff --git a/lib/third_party/miniaudio/windows/miniaudio_plugin_c_api.cpp b/lib/third_party/miniaudio/windows/miniaudio_plugin_c_api.cpp
deleted file mode 100644
index e9e92a5e..00000000
--- a/lib/third_party/miniaudio/windows/miniaudio_plugin_c_api.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "include/miniaudio/miniaudio_plugin_c_api.h"
-
-#include
-
-#include "miniaudio_plugin.h"
-
-void MiniaudioPluginCApiRegisterWithRegistrar(
- FlutterDesktopPluginRegistrarRef registrar) {
- miniaudio::MiniaudioPlugin::RegisterWithRegistrar(
- flutter::PluginRegistrarManager::GetInstance()
- ->GetRegistrar(registrar));
-}
diff --git a/lib/third_party/miniaudio/windows/test/miniaudio_plugin_test.cpp b/lib/third_party/miniaudio/windows/test/miniaudio_plugin_test.cpp
deleted file mode 100644
index c37c0e34..00000000
--- a/lib/third_party/miniaudio/windows/test/miniaudio_plugin_test.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include "miniaudio_plugin.h"
-
-namespace miniaudio {
-namespace test {
-
-namespace {
-
-using flutter::EncodableMap;
-using flutter::EncodableValue;
-using flutter::MethodCall;
-using flutter::MethodResultFunctions;
-
-} // namespace
-
-TEST(MiniaudioPlugin, GetPlatformVersion) {
- MiniaudioPlugin plugin;
- // Save the reply value from the success callback.
- std::string result_string;
- plugin.HandleMethodCall(
- MethodCall("getPlatformVersion", std::make_unique()),
- std::make_unique>(
- [&result_string](const EncodableValue* result) {
- result_string = std::get(*result);
- },
- nullptr, nullptr));
-
- // Since the exact string varies by host, just ensure that it's a string
- // with the expected format.
- EXPECT_TRUE(result_string.rfind("Windows ", 0) == 0);
-}
-
-} // namespace test
-} // namespace miniaudio
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index f7e7ca6a..0cacc750 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -6,15 +6,11 @@
#include "generated_plugin_registrant.h"
-#include
#include
#include
#include
void fl_register_plugins(FlPluginRegistry* registry) {
- g_autoptr(FlPluginRegistrar) miniaudio_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "MiniaudioPlugin");
- miniaudio_plugin_register_with_registrar(miniaudio_registrar);
g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index 2131e77d..775650f7 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -3,7 +3,6 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
- miniaudio
screen_retriever
url_launcher_linux
window_manager
@@ -11,6 +10,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
list(APPEND FLUTTER_FFI_PLUGIN_LIST
camera_linux
+ miniaudio
)
set(PLUGIN_BUNDLED_LIBRARIES)
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index e3ec8045..656d31e1 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -7,7 +7,6 @@ import Foundation
import connectivity_plus
import flutter_local_notifications
-import miniaudio
import package_info_plus
import path_provider_foundation
import screen_retriever
@@ -17,7 +16,6 @@ import window_manager
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
- MiniaudioPlugin.register(with: registry.registrar(forPlugin: "MiniaudioPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
diff --git a/pubspec.lock b/pubspec.lock
index 7c4ffec0..58d9f097 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -983,5 +983,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
- dart: ">=3.2.6 <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.7.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 29452ff9..b17fc1d2 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -57,7 +57,7 @@ dependencies:
camera_linux:
path: lib/third_party/camera_linux
miniaudio:
- path: lib/third_party/miniaudio
+ path: lib/third_party/miniaudio
# misc plugins
qr_flutter: ^4.0.0
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 61b92b00..b4b9a696 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -7,7 +7,6 @@
#include "generated_plugin_registrant.h"
#include
-#include
#include
#include
#include
@@ -16,8 +15,6 @@
void RegisterPlugins(flutter::PluginRegistry* registry) {
ConnectivityPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
- MiniaudioPluginCApiRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("MiniaudioPluginCApi"));
ScreenRetrieverPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
UrlLauncherWindowsRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index e92634c0..427d1281 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -4,7 +4,6 @@
list(APPEND FLUTTER_PLUGIN_LIST
connectivity_plus
- miniaudio
screen_retriever
url_launcher_windows
win_toast