├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── build.md
│ ├── chore.md
│ ├── ci.md
│ ├── config.yml
│ ├── documentation.md
│ ├── feature_request.md
│ ├── performance.md
│ ├── refactor.md
│ ├── revert.md
│ ├── style.md
│ └── test.md
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ └── analyze.yaml
├── .gitignore
├── .metadata
├── .vscode
├── c_cpp_properties.json
├── launch.json
├── settings.json
└── tasks.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── build.gradle
├── settings.gradle
└── src
│ └── main
│ └── AndroidManifest.xml
├── example
├── .gitignore
├── .metadata
├── README.md
├── analysis_options copy.yaml
├── analysis_options.yaml
├── android
│ ├── .gitignore
│ ├── app
│ │ ├── .cxx
│ │ │ └── Debug
│ │ │ │ └── 5i1255y6
│ │ │ │ ├── arm64-v8a
│ │ │ │ ├── .cmake
│ │ │ │ │ └── api
│ │ │ │ │ │ └── v1
│ │ │ │ │ │ ├── query
│ │ │ │ │ │ └── client-agp
│ │ │ │ │ │ │ ├── cache-v2
│ │ │ │ │ │ │ ├── cmakeFiles-v1
│ │ │ │ │ │ │ └── codemodel-v2
│ │ │ │ │ │ └── reply
│ │ │ │ │ │ ├── cache-v2-32d46ad4048c5aaf990c.json
│ │ │ │ │ │ ├── cmakeFiles-v1-241ada182bdec281307a.json
│ │ │ │ │ │ ├── codemodel-v2-a03655a577fd570ad80f.json
│ │ │ │ │ │ ├── directory-.-Debug-f5ebdc15457944623624.json
│ │ │ │ │ │ └── index-2025-03-31T09-43-03-0666.json
│ │ │ │ ├── CMakeCache.txt
│ │ │ │ ├── CMakeFiles
│ │ │ │ │ ├── 3.22.1-g37088a8
│ │ │ │ │ │ ├── CMakeCCompiler.cmake
│ │ │ │ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ │ │ ├── CompilerIdC
│ │ │ │ │ │ │ ├── CMakeCCompilerId.c
│ │ │ │ │ │ │ └── CMakeCCompilerId.o
│ │ │ │ │ │ └── CompilerIdCXX
│ │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ │ │ │ │ └── CMakeCXXCompilerId.o
│ │ │ │ │ ├── TargetDirectories.txt
│ │ │ │ │ ├── cmake.check_cache
│ │ │ │ │ └── rules.ninja
│ │ │ │ ├── additional_project_files.txt
│ │ │ │ ├── android_gradle_build.json
│ │ │ │ ├── android_gradle_build_mini.json
│ │ │ │ ├── build.ninja
│ │ │ │ ├── build_file_index.txt
│ │ │ │ ├── cmake_install.cmake
│ │ │ │ ├── configure_fingerprint.bin
│ │ │ │ ├── metadata_generation_command.txt
│ │ │ │ ├── prefab_config.json
│ │ │ │ └── symbol_folder_index.txt
│ │ │ │ ├── armeabi-v7a
│ │ │ │ ├── .cmake
│ │ │ │ │ └── api
│ │ │ │ │ │ └── v1
│ │ │ │ │ │ ├── query
│ │ │ │ │ │ └── client-agp
│ │ │ │ │ │ │ ├── cache-v2
│ │ │ │ │ │ │ ├── cmakeFiles-v1
│ │ │ │ │ │ │ └── codemodel-v2
│ │ │ │ │ │ └── reply
│ │ │ │ │ │ ├── cache-v2-152b882f7da94495ab15.json
│ │ │ │ │ │ ├── cmakeFiles-v1-bb8a1d74b5fb57c5e33d.json
│ │ │ │ │ │ ├── codemodel-v2-59b5e505704537ad8c93.json
│ │ │ │ │ │ ├── directory-.-Debug-f5ebdc15457944623624.json
│ │ │ │ │ │ └── index-2025-03-31T09-43-09-0753.json
│ │ │ │ ├── CMakeCache.txt
│ │ │ │ ├── CMakeFiles
│ │ │ │ │ ├── 3.22.1-g37088a8
│ │ │ │ │ │ ├── CMakeCCompiler.cmake
│ │ │ │ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ │ │ ├── CompilerIdC
│ │ │ │ │ │ │ ├── CMakeCCompilerId.c
│ │ │ │ │ │ │ └── CMakeCCompilerId.o
│ │ │ │ │ │ └── CompilerIdCXX
│ │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ │ │ │ │ └── CMakeCXXCompilerId.o
│ │ │ │ │ ├── TargetDirectories.txt
│ │ │ │ │ ├── cmake.check_cache
│ │ │ │ │ └── rules.ninja
│ │ │ │ ├── additional_project_files.txt
│ │ │ │ ├── android_gradle_build.json
│ │ │ │ ├── android_gradle_build_mini.json
│ │ │ │ ├── build.ninja
│ │ │ │ ├── build_file_index.txt
│ │ │ │ ├── cmake_install.cmake
│ │ │ │ ├── configure_fingerprint.bin
│ │ │ │ ├── metadata_generation_command.txt
│ │ │ │ ├── prefab_config.json
│ │ │ │ └── symbol_folder_index.txt
│ │ │ │ ├── hash_key.txt
│ │ │ │ ├── x86
│ │ │ │ ├── .cmake
│ │ │ │ │ └── api
│ │ │ │ │ │ └── v1
│ │ │ │ │ │ ├── query
│ │ │ │ │ │ └── client-agp
│ │ │ │ │ │ │ ├── cache-v2
│ │ │ │ │ │ │ ├── cmakeFiles-v1
│ │ │ │ │ │ │ └── codemodel-v2
│ │ │ │ │ │ └── reply
│ │ │ │ │ │ ├── cache-v2-8e86bcaafae3a7d8e3e4.json
│ │ │ │ │ │ ├── cmakeFiles-v1-003336abfe70de13df08.json
│ │ │ │ │ │ ├── codemodel-v2-0fbb297bac4b0dfeca1f.json
│ │ │ │ │ │ ├── directory-.-Debug-f5ebdc15457944623624.json
│ │ │ │ │ │ └── index-2025-03-31T09-43-09-0958.json
│ │ │ │ ├── CMakeCache.txt
│ │ │ │ ├── CMakeFiles
│ │ │ │ │ ├── 3.22.1-g37088a8
│ │ │ │ │ │ ├── CMakeCCompiler.cmake
│ │ │ │ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ │ │ ├── CompilerIdC
│ │ │ │ │ │ │ ├── CMakeCCompilerId.c
│ │ │ │ │ │ │ └── CMakeCCompilerId.o
│ │ │ │ │ │ └── CompilerIdCXX
│ │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ │ │ │ │ └── CMakeCXXCompilerId.o
│ │ │ │ │ ├── TargetDirectories.txt
│ │ │ │ │ ├── cmake.check_cache
│ │ │ │ │ └── rules.ninja
│ │ │ │ ├── additional_project_files.txt
│ │ │ │ ├── android_gradle_build.json
│ │ │ │ ├── android_gradle_build_mini.json
│ │ │ │ ├── build.ninja
│ │ │ │ ├── build_file_index.txt
│ │ │ │ ├── cmake_install.cmake
│ │ │ │ ├── configure_fingerprint.bin
│ │ │ │ ├── metadata_generation_command.txt
│ │ │ │ ├── prefab_config.json
│ │ │ │ └── symbol_folder_index.txt
│ │ │ │ └── x86_64
│ │ │ │ ├── .cmake
│ │ │ │ └── api
│ │ │ │ │ └── v1
│ │ │ │ │ ├── query
│ │ │ │ │ └── client-agp
│ │ │ │ │ │ ├── cache-v2
│ │ │ │ │ │ ├── cmakeFiles-v1
│ │ │ │ │ │ └── codemodel-v2
│ │ │ │ │ └── reply
│ │ │ │ │ ├── cache-v2-c3548645ed54a48523a7.json
│ │ │ │ │ ├── cmakeFiles-v1-432ff342d6b674b7d823.json
│ │ │ │ │ ├── codemodel-v2-727aaac1f2f871b2fb46.json
│ │ │ │ │ ├── directory-.-Debug-f5ebdc15457944623624.json
│ │ │ │ │ └── index-2025-03-31T09-43-10-0134.json
│ │ │ │ ├── CMakeCache.txt
│ │ │ │ ├── CMakeFiles
│ │ │ │ ├── 3.22.1-g37088a8
│ │ │ │ │ ├── CMakeCCompiler.cmake
│ │ │ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ │ ├── CompilerIdC
│ │ │ │ │ │ ├── CMakeCCompilerId.c
│ │ │ │ │ │ └── CMakeCCompilerId.o
│ │ │ │ │ └── CompilerIdCXX
│ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ │ │ │ └── CMakeCXXCompilerId.o
│ │ │ │ ├── TargetDirectories.txt
│ │ │ │ ├── cmake.check_cache
│ │ │ │ └── rules.ninja
│ │ │ │ ├── additional_project_files.txt
│ │ │ │ ├── android_gradle_build.json
│ │ │ │ ├── android_gradle_build_mini.json
│ │ │ │ ├── build.ninja
│ │ │ │ ├── build_file_index.txt
│ │ │ │ ├── cmake_install.cmake
│ │ │ │ ├── configure_fingerprint.bin
│ │ │ │ ├── metadata_generation_command.txt
│ │ │ │ ├── prefab_config.json
│ │ │ │ └── symbol_folder_index.txt
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── flutter_recorder_example
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── ios
│ ├── .gitignore
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ └── LaunchImage.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ └── README.md
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ └── RunnerTests
│ │ └── RunnerTests.swift
├── lib
│ ├── loopback.dart
│ ├── main.dart
│ └── ui
│ │ ├── bars.dart
│ │ ├── fft_painter.dart
│ │ ├── vu_meter.dart
│ │ └── wave_painter.dart
├── linux
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ └── runner
│ │ ├── CMakeLists.txt
│ │ ├── main.cc
│ │ ├── my_application.cc
│ │ └── my_application.h
├── macos
│ ├── .gitignore
│ ├── Flutter
│ │ ├── Flutter-Debug.xcconfig
│ │ ├── Flutter-Release.xcconfig
│ │ └── GeneratedPluginRegistrant.swift
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ └── app_icon_64.png
│ │ ├── Base.lproj
│ │ │ └── MainMenu.xib
│ │ ├── Configs
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ └── RunnerTests
│ │ └── RunnerTests.swift
├── pubspec.lock
├── pubspec.yaml
├── test
│ └── test_recording.dart
├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ ├── Icon-512.png
│ │ ├── Icon-maskable-192.png
│ │ └── Icon-maskable-512.png
│ ├── index.html
│ └── manifest.json
└── windows
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
│ └── runner
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── resources
│ └── app_icon.ico
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── ffigen.yaml
├── images
├── audio_data.png
└── recorder.png
├── init_recorder_module.sh
├── ios
├── Classes
│ ├── flutter_recorder.c
│ └── flutter_recorder.mm
└── flutter_recorder.podspec
├── lib
├── flutter_recorder.dart
└── src
│ ├── audio_data_container.dart
│ ├── bindings
│ ├── flutter_recorder_bindings_generated.dart
│ ├── js_extension.dart
│ ├── recorder.dart
│ ├── recorder_io.dart
│ └── recorder_web.dart
│ ├── enums.dart
│ ├── exceptions
│ ├── exceptions.dart
│ └── exceptions_from_cpp.dart
│ ├── filters
│ ├── autogain.dart
│ ├── echo_cancellation.dart
│ └── filters.dart
│ ├── flutter_recorder.dart
│ └── worker
│ └── worker.dart
├── linux
└── CMakeLists.txt
├── macos
├── Classes
│ ├── flutter_recorder.c
│ └── flutter_recorder.mm
└── flutter_recorder.podspec
├── pubspec.yaml
├── src
├── CMakeLists.txt
├── analyzer.cpp
├── analyzer.h
├── capture.cpp
├── capture.h
├── circular_buffer.h
├── common.h
├── enums.h
├── fft
│ ├── soloud_fft.cpp
│ └── soloud_fft.h
├── filters
│ ├── autogain.cpp
│ ├── autogain.h
│ ├── echo_cancellation.cpp
│ ├── echo_cancellation.h
│ ├── filters.cpp
│ ├── filters.h
│ └── generic_filter.h
├── flutter_recorder.c
├── flutter_recorder.cpp
├── flutter_recorder.h
├── miniaudio.h
└── wav.h
├── wasm.sh
├── web.sh
├── web
├── compile_init_recorder_module.sh
├── compile_wasm.sh
├── compile_worker.sh
├── init_recorder_module.dart
├── init_recorder_module.dart.js
├── init_recorder_module.dart.js.deps
├── init_recorder_module.dart.js.map
├── libflutter_recorder_plugin.js
├── libflutter_recorder_plugin.wasm
├── worker.dart
├── worker.dart.js
├── worker.dart.js.deps
└── worker.dart.js.map
└── windows
├── .gitignore
└── CMakeLists.txt
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [alnitak]
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Create a report to help us improve
4 | title: "fix: "
5 | ---
6 |
7 | **Description**
8 |
9 | A clear and concise description of what the bug is.
10 |
11 | **Steps To Reproduce**
12 |
13 | 1. Go to '...'
14 | 2. Click on '....'
15 | 3. Scroll down to '....'
16 | 4. See error
17 |
18 | **Expected Behavior**
19 |
20 | A clear and concise description of what you expected to happen.
21 |
22 | **Screenshots**
23 |
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Additional Context**
27 |
28 | Add any other context about the problem here.
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/build.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Build System
3 | about: Changes that affect the build system or external dependencies
4 | title: "build: "
5 | labels: build
6 | ---
7 |
8 | **Description**
9 |
10 | Describe what changes need to be done to the build system and why.
11 |
12 | **Requirements**
13 |
14 | - [ ] The build system is passing
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/chore.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Chore
3 | about: Other changes that don't modify src or test files
4 | title: "chore: "
5 | labels: chore
6 | ---
7 |
8 | **Description**
9 |
10 | Clearly describe what change is needed and why. If this changes code then please use another issue type.
11 |
12 | **Requirements**
13 |
14 | - [ ] No functional changes to the code
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/ci.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Continuous Integration
3 | about: Changes to the CI configuration files and scripts
4 | title: "ci: "
5 | labels: ci
6 | ---
7 |
8 | **Description**
9 |
10 | Describe what changes need to be done to the ci/cd system and why.
11 |
12 | **Requirements**
13 |
14 | - [ ] The ci system is passing
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Documentation
3 | about: Improve the documentation so all collaborators have a common understanding
4 | title: "docs: "
5 | labels: documentation
6 | ---
7 |
8 | **Description**
9 |
10 | Clearly describe what documentation you are looking to add or improve.
11 |
12 | **Requirements**
13 |
14 | - [ ] Requirements go here
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request
3 | about: A new feature to be added to the project
4 | title: "feat: "
5 | labels: feature
6 | ---
7 |
8 | **Description**
9 |
10 | Clearly describe what you are looking to add. The more context the better.
11 |
12 | **Requirements**
13 |
14 | - [ ] Checklist of requirements to be fulfilled
15 |
16 | **Additional Context**
17 |
18 | Add any other context or screenshots about the feature request go here.
19 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/performance.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Performance Update
3 | about: A code change that improves performance
4 | title: "perf: "
5 | labels: performance
6 | ---
7 |
8 | **Description**
9 |
10 | Clearly describe what code needs to be changed and what the performance impact is going to be. Bonus point's if you can tie this directly to user experience.
11 |
12 | **Requirements**
13 |
14 | - [ ] There is no drop in test coverage.
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/refactor.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Refactor
3 | about: A code change that neither fixes a bug nor adds a feature
4 | title: "refactor: "
5 | labels: refactor
6 | ---
7 |
8 | **Description**
9 |
10 | Clearly describe what needs to be refactored and why. Please provide links to related issues (bugs or upcoming features) in order to help prioritize.
11 |
12 | **Requirements**
13 |
14 | - [ ] There is no drop in test coverage.
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/revert.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Revert Commit
3 | about: Reverts a previous commit
4 | title: "revert: "
5 | labels: revert
6 | ---
7 |
8 | **Description**
9 |
10 | Provide a link to a PR/Commit that you are looking to revert and why.
11 |
12 | **Requirements**
13 |
14 | - [ ] Change has been reverted
15 | - [ ] No change in test coverage has happened
16 | - [ ] A new ticket is created for any follow on work that needs to happen
17 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/style.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Style Changes
3 | about: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc)
4 | title: "style: "
5 | labels: style
6 | ---
7 |
8 | **Description**
9 |
10 | Clearly describe what you are looking to change and why.
11 |
12 | **Requirements**
13 |
14 | - [ ] There is no drop in test coverage.
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/test.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Test
3 | about: Adding missing tests or correcting existing tests
4 | title: "test: "
5 | labels: test
6 | ---
7 |
8 | **Description**
9 |
10 | List out the tests that need to be added or changed. Please also include any information as to why this was not covered in the past.
11 |
12 | **Requirements**
13 |
14 | - [ ] There is no drop in test coverage.
15 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
8 |
9 | ## Description
10 |
11 |
12 |
13 | ## Type of Change
14 |
15 |
16 |
17 | - [ ] ✨ New feature (non-breaking change which adds functionality)
18 | - [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
19 | - [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
20 | - [ ] 🧹 Code refactor
21 | - [ ] ✅ Build configuration change
22 | - [ ] 📝 Documentation
23 | - [ ] 🗑️ Chore
24 |
--------------------------------------------------------------------------------
/.github/workflows/analyze.yaml:
--------------------------------------------------------------------------------
1 | name: Flutter Analyze
2 |
3 | on:
4 | pull_request:
5 | branches:
6 | - main
7 | push:
8 | branches:
9 | - main
10 |
11 | jobs:
12 | build:
13 | name: Analyze code and requirements
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: Checkout code
18 | uses: actions/checkout@v4
19 |
20 | - name: Setup Flutter
21 | uses: subosito/flutter-action@v2
22 | with:
23 | channel: 'stable'
24 |
25 | - name: Verify Flutter installation
26 | run: flutter doctor
27 |
28 | - name: Check pub dependencies
29 | run: flutter pub get
30 |
31 | - name: "Run Dart Analyze"
32 | uses: invertase/github-action-dart-analyzer@v3
33 | with:
34 | fatal-infos: true
35 | fatal-warnings: true
36 | annotate: true
37 | working-directory: lib/
38 |
39 | - name: Check Code formatting
40 | run: dart format -o none --set-exit-if-changed .
41 |
42 | - name: Check pub.dev requirements
43 | run: flutter pub publish --dry-run
44 |
45 | - name: Block merge if checks fail
46 | if: ${{ failure() }}
47 | run: echo "Checks failed, cannot merge." && exit 1
48 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
26 | /pubspec.lock
27 | **/doc/api/
28 | .dart_tool/
29 | build/
30 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3"
8 | channel: "stable"
9 |
10 | project_type: plugin_ffi
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
17 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
18 | - platform: android
19 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
20 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
21 | - platform: ios
22 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
23 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
24 | - platform: linux
25 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
26 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
27 | - platform: macos
28 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
29 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
30 | - platform: web
31 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
32 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
33 | - platform: windows
34 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
35 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/.vscode/c_cpp_properties.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations": [
3 | {
4 | "name": "Linux",
5 | "includePath": [
6 | "${workspaceFolder}/**",
7 | "${workspaceFolder}/src/**",
8 | "${workspaceFolder}/src/fft/**"
9 | ],
10 | "defines": [],
11 | "compilerPath": "/usr/bin/clang",
12 | "cStandard": "c17",
13 | "cppStandard": "c++17",
14 | "intelliSenseMode": "linux-clang-x64"
15 | },
16 | {
17 | "name": "Chrome",
18 | "includePath": [
19 | "${workspaceFolder}/**",
20 | "${workspaceFolder}/src",
21 | "/usr/lib/emscripten/system/include"
22 | ],
23 | "defines": ["__EMSCRIPTEN__"], // to see the code in between "#if defined"
24 | "compilerPath": "/usr/bin/clang",
25 | "cStandard": "c17",
26 | "cppStandard": "c++17",
27 | "intelliSenseMode": "${default}",
28 | "configurationProvider": "ms-vscode.cmake-tools"
29 | },
30 | {
31 | "name": "Win32",
32 | "includePath": [
33 | "${workspaceFolder}/**",
34 | "${workspaceFolder}/src",
35 | "/usr/lib/emscripten/system/include"
36 | ],
37 | "defines": [
38 | "_DEBUG",
39 | "UNICODE",
40 | "_UNICODE"
41 | ],
42 | "windowsSdkVersion": "10.0.19041.0",
43 | "compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe",
44 | "cStandard": "c17",
45 | "cppStandard": "c++17",
46 | "intelliSenseMode": "windows-msvc-x64",
47 | "configurationProvider": "ms-vscode.cmake-tools"
48 | }
49 | ],
50 | "version": 4
51 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "compile linux debug verbose",
6 | "command": "cd ${workspaceFolder}/example; flutter build linux -t lib/main.dart --debug --verbose",
7 | // "args": ["build", "linux", "--verbose"],
8 | "type": "shell"
9 | },
10 | {
11 | "label": "compile linux debug",
12 | "command": "cd ${workspaceFolder}/example; flutter build linux -t lib/main.dart --debug",
13 | "type": "shell"
14 | },
15 | {
16 | "label": "compile linux test debug",
17 | "command": "cd ${workspaceFolder}/example; flutter build linux -t tests/tests.dart --debug",
18 | "type": "shell"
19 | },
20 | {
21 | "label": "compile windows debug verbose",
22 | "command": "cd ${workspaceFolder}/example; flutter build windows -t lib/main.dart --debug --verbose",
23 | "type": "shell"
24 | },
25 | {
26 | "label": "compile windows debug",
27 | "command": "cd ${workspaceFolder}/example; flutter build windows -t lib/main.dart --debug",
28 | "type": "shell"
29 | },
30 | {
31 | "label": "compile web release",
32 | "command": "cd ${workspaceFolder}/example; flutter run -d chrome --web-renderer canvaskit --web-browser-flag '--disable-web-security' -t lib/loopback.dart --release",
33 | "type": "shell"
34 | },
35 | {
36 | "label": "compile WASM",
37 | "command": "sh ${workspaceFolder}/wasm.sh",
38 | "type": "shell"
39 | }
40 | ]
41 | }
42 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 1.1.1
2 | - fix building issue with XCode 16.3 #32
3 | - fix: `listPlaybackDevices` fails to retrieve devices when the device prefix contains Chinese characters #35 by @WHYBBE
4 | - fix: some legitimate paths are unavailable on Windows #38 by @WHYBBE
5 |
6 | ## 1.1.0
7 | - when calling AudioData.getAudioData is now possible to check if the audio data is the same as before. Useful to visualize waveforms. This is because AudioData.getAudioData returns the current data in the buffer and if it is called before the buffer has been updated, it will return the previous data.
8 | - better FFT data for a better visualization.
9 |
10 | ## 1.0.4
11 | - added getTexture and a check for all get* methods to know if the current data is the same audio data computed previously.
12 | - better FFT data
13 |
14 | ## 1.0.3
15 | - update WASM lib
16 |
17 | ## 1.0.2
18 | - resolved conflicts with flutter_soloud #25
19 |
20 | ## 1.0.1
21 | - detailed exception when passing an invalind file name to `startRecording` #23
22 | - removed deprecated `dart:js_util`
23 |
24 | ## 1.0.0
25 | - fixed choppy PCM playback on macOS #18.
26 | - fix `startRecording` empty path on the web
27 |
28 | ## 0.9.4
29 | - fixed mic permission iOS example
30 | - fixed `listCaptureDevices` when there are not input devices
31 | - update doc
32 |
33 | ## 0.9.3
34 | - added `autoGain` filter
35 | - breaking changes:
36 | - the `init` method is now async
37 | - `FilterType` renamed to `RecorderFilterType`
38 | - an [additional script](https://github.com/alnitak/flutter_recorder#web) must be added for the web platform. Now it looks like:
39 | ```
40 |
41 |
42 | ```
43 |
44 | ## 0.9.2
45 | - fix: the stop was instead einit the device
46 | - fix: removed dialog when stopping stream in the example
47 |
48 | ## 0.9.1
49 | - breaking changes:
50 | - renamed `startListen` to `start`
51 | - renamed `stopListen` to `stop`
52 | - renamed `isDeviceStartedListen` to `isDeviceStarted`
53 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.yaml
2 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .cxx
10 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | // The Android Gradle Plugin builds the native code with the Android NDK.
2 |
3 | group = "com.example.flutter_recorder"
4 | version = "1.0"
5 |
6 | buildscript {
7 | repositories {
8 | google()
9 | mavenCentral()
10 | }
11 |
12 | dependencies {
13 | // The Android Gradle Plugin knows how to build native code with the NDK.
14 | classpath("com.android.tools.build:gradle:7.3.0")
15 | }
16 | }
17 |
18 | rootProject.allprojects {
19 | repositories {
20 | google()
21 | mavenCentral()
22 | }
23 | }
24 |
25 | apply plugin: "com.android.library"
26 |
27 | android {
28 | if (project.android.hasProperty("namespace")) {
29 | namespace = "com.example.flutter_recorder"
30 | }
31 |
32 | // Bumping the plugin compileSdk version requires all clients of this plugin
33 | // to bump the version in their app.
34 | compileSdk = 34
35 |
36 | // Use the NDK version
37 | // declared in /android/app/build.gradle file of the Flutter project.
38 | // Replace it with a version number if this plugin requires a specific NDK version.
39 | // (e.g. ndkVersion "23.1.7779620")
40 | ndkVersion = android.ndkVersion
41 |
42 | // Invoke the shared CMake build with the Android Gradle Plugin.
43 | externalNativeBuild {
44 | cmake {
45 | path = "../src/CMakeLists.txt"
46 |
47 | // The default CMake version for the Android Gradle Plugin is 3.10.2.
48 | // https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
49 | //
50 | // The Flutter tooling requires that developers have CMake 3.10 or later
51 | // installed. You should not increase this version, as doing so will cause
52 | // the plugin to fail to compile for some customers of the plugin.
53 | // version "3.10.2"
54 | }
55 | }
56 |
57 | compileOptions {
58 | sourceCompatibility = JavaVersion.VERSION_1_8
59 | targetCompatibility = JavaVersion.VERSION_1_8
60 | }
61 |
62 | defaultConfig {
63 | minSdk = 21
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'flutter_recorder'
2 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .build/
9 | .buildlog/
10 | .history
11 | .svn/
12 | .swiftpm/
13 | migrate_working_dir/
14 |
15 | # IntelliJ related
16 | *.iml
17 | *.ipr
18 | *.iws
19 | .idea/
20 |
21 | # The .vscode folder contains launch configuration and tasks you configure in
22 | # VS Code which you may wish to be included in version control, so this line
23 | # is commented out by default.
24 | #.vscode/
25 |
26 | # Flutter/Dart/Pub related
27 | **/doc/api/
28 | **/ios/Flutter/.last_build_id
29 | .dart_tool/
30 | .flutter-plugins
31 | .flutter-plugins-dependencies
32 | .pub-cache/
33 | .pub/
34 | /build/
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Android Studio will place build artifacts here
43 | /android/app/debug
44 | /android/app/profile
45 | /android/app/release
46 |
--------------------------------------------------------------------------------
/example/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3"
8 | channel: "stable"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
17 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
18 | - platform: android
19 | create_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
20 | base_revision: 68415ad1d920f6fe5ec284f5c2febf7c4dd5b0b3
21 |
22 | # User provided section
23 |
24 | # List of Local paths (relative to this file) that should be
25 | # ignored by the migrate tool.
26 | #
27 | # Files that are not part of the templates will be ignored by default.
28 | unmanaged_files:
29 | - 'lib/main.dart'
30 | - 'ios/Runner.xcodeproj/project.pbxproj'
31 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # flutter_recorder_example
2 |
3 | Demonstrates how to use the flutter_recorder plugin.
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
13 |
14 | For help getting started with Flutter development, view the
15 | [online documentation](https://docs.flutter.dev/), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/example/analysis_options copy.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.yaml
2 |
--------------------------------------------------------------------------------
/example/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at https://dart.dev/lints.
17 | #
18 | # Instead of disabling a lint rule for the entire project in the
19 | # section below, it can also be suppressed for a single line of code
20 | # or a specific dart file by using the `// ignore: name_of_lint` and
21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
22 | # producing the lint.
23 | rules:
24 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
25 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
26 |
27 | # Additional information about this file can be found at
28 | # https://dart.dev/guides/language/analysis-options
29 |
--------------------------------------------------------------------------------
/example/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/to/reference-keystore
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-a03655a577fd570ad80f.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations" :
3 | [
4 | {
5 | "directories" :
6 | [
7 | {
8 | "build" : ".",
9 | "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json",
10 | "minimumCMakeVersion" :
11 | {
12 | "string" : "3.6.0"
13 | },
14 | "projectIndex" : 0,
15 | "source" : "."
16 | }
17 | ],
18 | "name" : "Debug",
19 | "projects" :
20 | [
21 | {
22 | "directoryIndexes" :
23 | [
24 | 0
25 | ],
26 | "name" : "Project"
27 | }
28 | ],
29 | "targets" : []
30 | }
31 | ],
32 | "kind" : "codemodel",
33 | "paths" :
34 | {
35 | "build" : "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a",
36 | "source" : "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy"
37 | },
38 | "version" :
39 | {
40 | "major" : 2,
41 | "minor" : 3
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json:
--------------------------------------------------------------------------------
1 | {
2 | "backtraceGraph" :
3 | {
4 | "commands" : [],
5 | "files" : [],
6 | "nodes" : []
7 | },
8 | "installers" : [],
9 | "paths" :
10 | {
11 | "build" : ".",
12 | "source" : "."
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/.cmake/api/v1/reply/index-2025-03-31T09-43-03-0666.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake" :
3 | {
4 | "generator" :
5 | {
6 | "multiConfig" : false,
7 | "name" : "Ninja"
8 | },
9 | "paths" :
10 | {
11 | "cmake" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake",
12 | "cpack" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cpack",
13 | "ctest" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ctest",
14 | "root" : "/home/deimos/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
15 | },
16 | "version" :
17 | {
18 | "isDirty" : false,
19 | "major" : 3,
20 | "minor" : 22,
21 | "patch" : 1,
22 | "string" : "3.22.1-g37088a8",
23 | "suffix" : "g37088a8"
24 | }
25 | },
26 | "objects" :
27 | [
28 | {
29 | "jsonFile" : "codemodel-v2-a03655a577fd570ad80f.json",
30 | "kind" : "codemodel",
31 | "version" :
32 | {
33 | "major" : 2,
34 | "minor" : 3
35 | }
36 | },
37 | {
38 | "jsonFile" : "cache-v2-32d46ad4048c5aaf990c.json",
39 | "kind" : "cache",
40 | "version" :
41 | {
42 | "major" : 2,
43 | "minor" : 0
44 | }
45 | },
46 | {
47 | "jsonFile" : "cmakeFiles-v1-241ada182bdec281307a.json",
48 | "kind" : "cmakeFiles",
49 | "version" :
50 | {
51 | "major" : 1,
52 | "minor" : 0
53 | }
54 | }
55 | ],
56 | "reply" :
57 | {
58 | "client-agp" :
59 | {
60 | "cache-v2" :
61 | {
62 | "jsonFile" : "cache-v2-32d46ad4048c5aaf990c.json",
63 | "kind" : "cache",
64 | "version" :
65 | {
66 | "major" : 2,
67 | "minor" : 0
68 | }
69 | },
70 | "cmakeFiles-v1" :
71 | {
72 | "jsonFile" : "cmakeFiles-v1-241ada182bdec281307a.json",
73 | "kind" : "cmakeFiles",
74 | "version" :
75 | {
76 | "major" : 1,
77 | "minor" : 0
78 | }
79 | },
80 | "codemodel-v2" :
81 | {
82 | "jsonFile" : "codemodel-v2-a03655a577fd570ad80f.json",
83 | "kind" : "codemodel",
84 | "version" :
85 | {
86 | "major" : 2,
87 | "minor" : 3
88 | }
89 | }
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_HOST_SYSTEM "Linux-6.12.20-2-MANJARO")
2 | set(CMAKE_HOST_SYSTEM_NAME "Linux")
3 | set(CMAKE_HOST_SYSTEM_VERSION "6.12.20-2-MANJARO")
4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
5 |
6 | include("/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake")
7 |
8 | set(CMAKE_SYSTEM "Android-1")
9 | set(CMAKE_SYSTEM_NAME "Android")
10 | set(CMAKE_SYSTEM_VERSION "1")
11 | set(CMAKE_SYSTEM_PROCESSOR "aarch64")
12 |
13 | set(CMAKE_CROSSCOMPILING "TRUE")
14 |
15 | set(CMAKE_SYSTEM_LOADED 1)
16 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/TargetDirectories.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/edit_cache.dir
2 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/rebuild_cache.dir
3 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/cmake.check_cache:
--------------------------------------------------------------------------------
1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file
2 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/CMakeFiles/rules.ninja:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Ninja" Generator, CMake Version 3.22
3 |
4 | # This file contains all the rules used to get the outputs files
5 | # built from the input files.
6 | # It is included in the main 'build.ninja'.
7 |
8 | # =============================================================================
9 | # Project: Project
10 | # Configurations: Debug
11 | # =============================================================================
12 | # =============================================================================
13 |
14 | #############################################
15 | # Rule for running custom commands.
16 |
17 | rule CUSTOM_COMMAND
18 | command = $COMMAND
19 | description = $DESC
20 |
21 |
22 | #############################################
23 | # Rule for re-running cmake.
24 |
25 | rule RERUN_CMAKE
26 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake --regenerate-during-build -S/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a
27 | description = Re-running CMake...
28 | generator = 1
29 |
30 |
31 | #############################################
32 | # Rule for cleaning all built files.
33 |
34 | rule CLEAN
35 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja $FILE_ARG -t clean $TARGETS
36 | description = Cleaning all built files...
37 |
38 |
39 | #############################################
40 | # Rule for printing all primary targets available.
41 |
42 | rule HELP
43 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja -t targets
44 | description = All primary targets available:
45 |
46 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/additional_project_files.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/additional_project_files.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/android_gradle_build.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {},
20 | "toolchains": {
21 | "toolchain": {
22 | "cCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang.lld",
23 | "cppCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++.lld"
24 | }
25 | },
26 | "cFileExtensions": [],
27 | "cppFileExtensions": []
28 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/android_gradle_build_mini.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {}
20 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/build_file_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/cmake_install.cmake:
--------------------------------------------------------------------------------
1 | # Install script for directory: /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 |
3 | # Set the install prefix
4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX)
5 | set(CMAKE_INSTALL_PREFIX "/usr/local")
6 | endif()
7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
8 |
9 | # Set the install configuration name.
10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
11 | if(BUILD_TYPE)
12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
14 | else()
15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug")
16 | endif()
17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
18 | endif()
19 |
20 | # Set the component getting installed.
21 | if(NOT CMAKE_INSTALL_COMPONENT)
22 | if(COMPONENT)
23 | message(STATUS "Install component: \"${COMPONENT}\"")
24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
25 | else()
26 | set(CMAKE_INSTALL_COMPONENT)
27 | endif()
28 | endif()
29 |
30 | # Install shared libraries without execute permission?
31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
32 | set(CMAKE_INSTALL_SO_NO_EXE "0")
33 | endif()
34 |
35 | # Is this installation the result of a crosscompile?
36 | if(NOT DEFINED CMAKE_CROSSCOMPILING)
37 | set(CMAKE_CROSSCOMPILING "TRUE")
38 | endif()
39 |
40 | # Set default install directory permissions.
41 | if(NOT DEFINED CMAKE_OBJDUMP)
42 | set(CMAKE_OBJDUMP "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump")
43 | endif()
44 |
45 | if(CMAKE_INSTALL_COMPONENT)
46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
47 | else()
48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
49 | endif()
50 |
51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
52 | "${CMAKE_INSTALL_MANIFEST_FILES}")
53 | file(WRITE "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}")
55 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/configure_fingerprint.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/configure_fingerprint.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/metadata_generation_command.txt:
--------------------------------------------------------------------------------
1 | -H/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 | -DCMAKE_SYSTEM_NAME=Android
3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
4 | -DCMAKE_SYSTEM_VERSION=21
5 | -DANDROID_PLATFORM=android-21
6 | -DANDROID_ABI=arm64-v8a
7 | -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
8 | -DANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
9 | -DCMAKE_ANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
10 | -DCMAKE_TOOLCHAIN_FILE=/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake
11 | -DCMAKE_MAKE_PROGRAM=/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja
12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/arm64-v8a
13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/arm64-v8a
14 | -DCMAKE_BUILD_TYPE=Debug
15 | -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a
16 | -GNinja
17 | -Wno-dev
18 | --no-warn-unused-cli
19 | Build command args: []
20 | Version: 2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/prefab_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "enabled": false,
3 | "packages": []
4 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/arm64-v8a/symbol_folder_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/arm64-v8a
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-59b5e505704537ad8c93.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations" :
3 | [
4 | {
5 | "directories" :
6 | [
7 | {
8 | "build" : ".",
9 | "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json",
10 | "minimumCMakeVersion" :
11 | {
12 | "string" : "3.6.0"
13 | },
14 | "projectIndex" : 0,
15 | "source" : "."
16 | }
17 | ],
18 | "name" : "Debug",
19 | "projects" :
20 | [
21 | {
22 | "directoryIndexes" :
23 | [
24 | 0
25 | ],
26 | "name" : "Project"
27 | }
28 | ],
29 | "targets" : []
30 | }
31 | ],
32 | "kind" : "codemodel",
33 | "paths" :
34 | {
35 | "build" : "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a",
36 | "source" : "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy"
37 | },
38 | "version" :
39 | {
40 | "major" : 2,
41 | "minor" : 3
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json:
--------------------------------------------------------------------------------
1 | {
2 | "backtraceGraph" :
3 | {
4 | "commands" : [],
5 | "files" : [],
6 | "nodes" : []
7 | },
8 | "installers" : [],
9 | "paths" :
10 | {
11 | "build" : ".",
12 | "source" : "."
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/.cmake/api/v1/reply/index-2025-03-31T09-43-09-0753.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake" :
3 | {
4 | "generator" :
5 | {
6 | "multiConfig" : false,
7 | "name" : "Ninja"
8 | },
9 | "paths" :
10 | {
11 | "cmake" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake",
12 | "cpack" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cpack",
13 | "ctest" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ctest",
14 | "root" : "/home/deimos/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
15 | },
16 | "version" :
17 | {
18 | "isDirty" : false,
19 | "major" : 3,
20 | "minor" : 22,
21 | "patch" : 1,
22 | "string" : "3.22.1-g37088a8",
23 | "suffix" : "g37088a8"
24 | }
25 | },
26 | "objects" :
27 | [
28 | {
29 | "jsonFile" : "codemodel-v2-59b5e505704537ad8c93.json",
30 | "kind" : "codemodel",
31 | "version" :
32 | {
33 | "major" : 2,
34 | "minor" : 3
35 | }
36 | },
37 | {
38 | "jsonFile" : "cache-v2-152b882f7da94495ab15.json",
39 | "kind" : "cache",
40 | "version" :
41 | {
42 | "major" : 2,
43 | "minor" : 0
44 | }
45 | },
46 | {
47 | "jsonFile" : "cmakeFiles-v1-bb8a1d74b5fb57c5e33d.json",
48 | "kind" : "cmakeFiles",
49 | "version" :
50 | {
51 | "major" : 1,
52 | "minor" : 0
53 | }
54 | }
55 | ],
56 | "reply" :
57 | {
58 | "client-agp" :
59 | {
60 | "cache-v2" :
61 | {
62 | "jsonFile" : "cache-v2-152b882f7da94495ab15.json",
63 | "kind" : "cache",
64 | "version" :
65 | {
66 | "major" : 2,
67 | "minor" : 0
68 | }
69 | },
70 | "cmakeFiles-v1" :
71 | {
72 | "jsonFile" : "cmakeFiles-v1-bb8a1d74b5fb57c5e33d.json",
73 | "kind" : "cmakeFiles",
74 | "version" :
75 | {
76 | "major" : 1,
77 | "minor" : 0
78 | }
79 | },
80 | "codemodel-v2" :
81 | {
82 | "jsonFile" : "codemodel-v2-59b5e505704537ad8c93.json",
83 | "kind" : "codemodel",
84 | "version" :
85 | {
86 | "major" : 2,
87 | "minor" : 3
88 | }
89 | }
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_HOST_SYSTEM "Linux-6.12.20-2-MANJARO")
2 | set(CMAKE_HOST_SYSTEM_NAME "Linux")
3 | set(CMAKE_HOST_SYSTEM_VERSION "6.12.20-2-MANJARO")
4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
5 |
6 | include("/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake")
7 |
8 | set(CMAKE_SYSTEM "Android-1")
9 | set(CMAKE_SYSTEM_NAME "Android")
10 | set(CMAKE_SYSTEM_VERSION "1")
11 | set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
12 |
13 | set(CMAKE_CROSSCOMPILING "TRUE")
14 |
15 | set(CMAKE_SYSTEM_LOADED 1)
16 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/TargetDirectories.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/edit_cache.dir
2 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/rebuild_cache.dir
3 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/cmake.check_cache:
--------------------------------------------------------------------------------
1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file
2 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/CMakeFiles/rules.ninja:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Ninja" Generator, CMake Version 3.22
3 |
4 | # This file contains all the rules used to get the outputs files
5 | # built from the input files.
6 | # It is included in the main 'build.ninja'.
7 |
8 | # =============================================================================
9 | # Project: Project
10 | # Configurations: Debug
11 | # =============================================================================
12 | # =============================================================================
13 |
14 | #############################################
15 | # Rule for running custom commands.
16 |
17 | rule CUSTOM_COMMAND
18 | command = $COMMAND
19 | description = $DESC
20 |
21 |
22 | #############################################
23 | # Rule for re-running cmake.
24 |
25 | rule RERUN_CMAKE
26 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake --regenerate-during-build -S/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a
27 | description = Re-running CMake...
28 | generator = 1
29 |
30 |
31 | #############################################
32 | # Rule for cleaning all built files.
33 |
34 | rule CLEAN
35 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja $FILE_ARG -t clean $TARGETS
36 | description = Cleaning all built files...
37 |
38 |
39 | #############################################
40 | # Rule for printing all primary targets available.
41 |
42 | rule HELP
43 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja -t targets
44 | description = All primary targets available:
45 |
46 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/additional_project_files.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/additional_project_files.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/android_gradle_build.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {},
20 | "toolchains": {
21 | "toolchain": {
22 | "cCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang.lld",
23 | "cppCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++.lld"
24 | }
25 | },
26 | "cFileExtensions": [],
27 | "cppFileExtensions": []
28 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/android_gradle_build_mini.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {}
20 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/build_file_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/cmake_install.cmake:
--------------------------------------------------------------------------------
1 | # Install script for directory: /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 |
3 | # Set the install prefix
4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX)
5 | set(CMAKE_INSTALL_PREFIX "/usr/local")
6 | endif()
7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
8 |
9 | # Set the install configuration name.
10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
11 | if(BUILD_TYPE)
12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
14 | else()
15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug")
16 | endif()
17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
18 | endif()
19 |
20 | # Set the component getting installed.
21 | if(NOT CMAKE_INSTALL_COMPONENT)
22 | if(COMPONENT)
23 | message(STATUS "Install component: \"${COMPONENT}\"")
24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
25 | else()
26 | set(CMAKE_INSTALL_COMPONENT)
27 | endif()
28 | endif()
29 |
30 | # Install shared libraries without execute permission?
31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
32 | set(CMAKE_INSTALL_SO_NO_EXE "0")
33 | endif()
34 |
35 | # Is this installation the result of a crosscompile?
36 | if(NOT DEFINED CMAKE_CROSSCOMPILING)
37 | set(CMAKE_CROSSCOMPILING "TRUE")
38 | endif()
39 |
40 | # Set default install directory permissions.
41 | if(NOT DEFINED CMAKE_OBJDUMP)
42 | set(CMAKE_OBJDUMP "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump")
43 | endif()
44 |
45 | if(CMAKE_INSTALL_COMPONENT)
46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
47 | else()
48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
49 | endif()
50 |
51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
52 | "${CMAKE_INSTALL_MANIFEST_FILES}")
53 | file(WRITE "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}"
54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}")
55 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/configure_fingerprint.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/configure_fingerprint.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/metadata_generation_command.txt:
--------------------------------------------------------------------------------
1 | -H/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 | -DCMAKE_SYSTEM_NAME=Android
3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
4 | -DCMAKE_SYSTEM_VERSION=21
5 | -DANDROID_PLATFORM=android-21
6 | -DANDROID_ABI=armeabi-v7a
7 | -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
8 | -DANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
9 | -DCMAKE_ANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
10 | -DCMAKE_TOOLCHAIN_FILE=/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake
11 | -DCMAKE_MAKE_PROGRAM=/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja
12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/armeabi-v7a
13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/armeabi-v7a
14 | -DCMAKE_BUILD_TYPE=Debug
15 | -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a
16 | -GNinja
17 | -Wno-dev
18 | --no-warn-unused-cli
19 | Build command args: []
20 | Version: 2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/prefab_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "enabled": false,
3 | "packages": []
4 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/armeabi-v7a/symbol_folder_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/armeabi-v7a
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/hash_key.txt:
--------------------------------------------------------------------------------
1 | # Values used to calculate the hash in this folder name.
2 | # Should not depend on the absolute path of the project itself.
3 | # - AGP: 8.2.1.
4 | # - $NDK is the path to NDK 26.3.11579264.
5 | # - $PROJECT is the path to the parent folder of the root Gradle build file.
6 | # - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash.
7 | # - $HASH is the hash value computed from this text.
8 | # - $CMAKE is the path to CMake 3.22.1.
9 | # - $NINJA is the path to Ninja.
10 | -H/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
11 | -DCMAKE_SYSTEM_NAME=Android
12 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
13 | -DCMAKE_SYSTEM_VERSION=21
14 | -DANDROID_PLATFORM=android-21
15 | -DANDROID_ABI=$ABI
16 | -DCMAKE_ANDROID_ARCH_ABI=$ABI
17 | -DANDROID_NDK=$NDK
18 | -DCMAKE_ANDROID_NDK=$NDK
19 | -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake
20 | -DCMAKE_MAKE_PROGRAM=$NINJA
21 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/$HASH/obj/$ABI
22 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/$HASH/obj/$ABI
23 | -DCMAKE_BUILD_TYPE=Debug
24 | -B$PROJECT/app/.cxx/Debug/$HASH/$ABI
25 | -GNinja
26 | -Wno-dev
27 | --no-warn-unused-cli
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/query/client-agp/cache-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/query/client-agp/cache-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/query/client-agp/codemodel-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/query/client-agp/codemodel-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/reply/codemodel-v2-0fbb297bac4b0dfeca1f.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations" :
3 | [
4 | {
5 | "directories" :
6 | [
7 | {
8 | "build" : ".",
9 | "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json",
10 | "minimumCMakeVersion" :
11 | {
12 | "string" : "3.6.0"
13 | },
14 | "projectIndex" : 0,
15 | "source" : "."
16 | }
17 | ],
18 | "name" : "Debug",
19 | "projects" :
20 | [
21 | {
22 | "directoryIndexes" :
23 | [
24 | 0
25 | ],
26 | "name" : "Project"
27 | }
28 | ],
29 | "targets" : []
30 | }
31 | ],
32 | "kind" : "codemodel",
33 | "paths" :
34 | {
35 | "build" : "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86",
36 | "source" : "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy"
37 | },
38 | "version" :
39 | {
40 | "major" : 2,
41 | "minor" : 3
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json:
--------------------------------------------------------------------------------
1 | {
2 | "backtraceGraph" :
3 | {
4 | "commands" : [],
5 | "files" : [],
6 | "nodes" : []
7 | },
8 | "installers" : [],
9 | "paths" :
10 | {
11 | "build" : ".",
12 | "source" : "."
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/.cmake/api/v1/reply/index-2025-03-31T09-43-09-0958.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake" :
3 | {
4 | "generator" :
5 | {
6 | "multiConfig" : false,
7 | "name" : "Ninja"
8 | },
9 | "paths" :
10 | {
11 | "cmake" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake",
12 | "cpack" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cpack",
13 | "ctest" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ctest",
14 | "root" : "/home/deimos/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
15 | },
16 | "version" :
17 | {
18 | "isDirty" : false,
19 | "major" : 3,
20 | "minor" : 22,
21 | "patch" : 1,
22 | "string" : "3.22.1-g37088a8",
23 | "suffix" : "g37088a8"
24 | }
25 | },
26 | "objects" :
27 | [
28 | {
29 | "jsonFile" : "codemodel-v2-0fbb297bac4b0dfeca1f.json",
30 | "kind" : "codemodel",
31 | "version" :
32 | {
33 | "major" : 2,
34 | "minor" : 3
35 | }
36 | },
37 | {
38 | "jsonFile" : "cache-v2-8e86bcaafae3a7d8e3e4.json",
39 | "kind" : "cache",
40 | "version" :
41 | {
42 | "major" : 2,
43 | "minor" : 0
44 | }
45 | },
46 | {
47 | "jsonFile" : "cmakeFiles-v1-003336abfe70de13df08.json",
48 | "kind" : "cmakeFiles",
49 | "version" :
50 | {
51 | "major" : 1,
52 | "minor" : 0
53 | }
54 | }
55 | ],
56 | "reply" :
57 | {
58 | "client-agp" :
59 | {
60 | "cache-v2" :
61 | {
62 | "jsonFile" : "cache-v2-8e86bcaafae3a7d8e3e4.json",
63 | "kind" : "cache",
64 | "version" :
65 | {
66 | "major" : 2,
67 | "minor" : 0
68 | }
69 | },
70 | "cmakeFiles-v1" :
71 | {
72 | "jsonFile" : "cmakeFiles-v1-003336abfe70de13df08.json",
73 | "kind" : "cmakeFiles",
74 | "version" :
75 | {
76 | "major" : 1,
77 | "minor" : 0
78 | }
79 | },
80 | "codemodel-v2" :
81 | {
82 | "jsonFile" : "codemodel-v2-0fbb297bac4b0dfeca1f.json",
83 | "kind" : "codemodel",
84 | "version" :
85 | {
86 | "major" : 2,
87 | "minor" : 3
88 | }
89 | }
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_HOST_SYSTEM "Linux-6.12.20-2-MANJARO")
2 | set(CMAKE_HOST_SYSTEM_NAME "Linux")
3 | set(CMAKE_HOST_SYSTEM_VERSION "6.12.20-2-MANJARO")
4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
5 |
6 | include("/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake")
7 |
8 | set(CMAKE_SYSTEM "Android-1")
9 | set(CMAKE_SYSTEM_NAME "Android")
10 | set(CMAKE_SYSTEM_VERSION "1")
11 | set(CMAKE_SYSTEM_PROCESSOR "i686")
12 |
13 | set(CMAKE_CROSSCOMPILING "TRUE")
14 |
15 | set(CMAKE_SYSTEM_LOADED 1)
16 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/TargetDirectories.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/edit_cache.dir
2 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/rebuild_cache.dir
3 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/cmake.check_cache:
--------------------------------------------------------------------------------
1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file
2 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/CMakeFiles/rules.ninja:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Ninja" Generator, CMake Version 3.22
3 |
4 | # This file contains all the rules used to get the outputs files
5 | # built from the input files.
6 | # It is included in the main 'build.ninja'.
7 |
8 | # =============================================================================
9 | # Project: Project
10 | # Configurations: Debug
11 | # =============================================================================
12 | # =============================================================================
13 |
14 | #############################################
15 | # Rule for running custom commands.
16 |
17 | rule CUSTOM_COMMAND
18 | command = $COMMAND
19 | description = $DESC
20 |
21 |
22 | #############################################
23 | # Rule for re-running cmake.
24 |
25 | rule RERUN_CMAKE
26 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake --regenerate-during-build -S/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86
27 | description = Re-running CMake...
28 | generator = 1
29 |
30 |
31 | #############################################
32 | # Rule for cleaning all built files.
33 |
34 | rule CLEAN
35 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja $FILE_ARG -t clean $TARGETS
36 | description = Cleaning all built files...
37 |
38 |
39 | #############################################
40 | # Rule for printing all primary targets available.
41 |
42 | rule HELP
43 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja -t targets
44 | description = All primary targets available:
45 |
46 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/additional_project_files.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/additional_project_files.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/android_gradle_build.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {},
20 | "toolchains": {
21 | "toolchain": {
22 | "cCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang.lld",
23 | "cppCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++.lld"
24 | }
25 | },
26 | "cFileExtensions": [],
27 | "cppFileExtensions": []
28 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/android_gradle_build_mini.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {}
20 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/build_file_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/cmake_install.cmake:
--------------------------------------------------------------------------------
1 | # Install script for directory: /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 |
3 | # Set the install prefix
4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX)
5 | set(CMAKE_INSTALL_PREFIX "/usr/local")
6 | endif()
7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
8 |
9 | # Set the install configuration name.
10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
11 | if(BUILD_TYPE)
12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
14 | else()
15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug")
16 | endif()
17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
18 | endif()
19 |
20 | # Set the component getting installed.
21 | if(NOT CMAKE_INSTALL_COMPONENT)
22 | if(COMPONENT)
23 | message(STATUS "Install component: \"${COMPONENT}\"")
24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
25 | else()
26 | set(CMAKE_INSTALL_COMPONENT)
27 | endif()
28 | endif()
29 |
30 | # Install shared libraries without execute permission?
31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
32 | set(CMAKE_INSTALL_SO_NO_EXE "0")
33 | endif()
34 |
35 | # Is this installation the result of a crosscompile?
36 | if(NOT DEFINED CMAKE_CROSSCOMPILING)
37 | set(CMAKE_CROSSCOMPILING "TRUE")
38 | endif()
39 |
40 | # Set default install directory permissions.
41 | if(NOT DEFINED CMAKE_OBJDUMP)
42 | set(CMAKE_OBJDUMP "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump")
43 | endif()
44 |
45 | if(CMAKE_INSTALL_COMPONENT)
46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
47 | else()
48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
49 | endif()
50 |
51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
52 | "${CMAKE_INSTALL_MANIFEST_FILES}")
53 | file(WRITE "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86/${CMAKE_INSTALL_MANIFEST}"
54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}")
55 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/configure_fingerprint.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86/configure_fingerprint.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/metadata_generation_command.txt:
--------------------------------------------------------------------------------
1 | -H/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 | -DCMAKE_SYSTEM_NAME=Android
3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
4 | -DCMAKE_SYSTEM_VERSION=21
5 | -DANDROID_PLATFORM=android-21
6 | -DANDROID_ABI=x86
7 | -DCMAKE_ANDROID_ARCH_ABI=x86
8 | -DANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
9 | -DCMAKE_ANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
10 | -DCMAKE_TOOLCHAIN_FILE=/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake
11 | -DCMAKE_MAKE_PROGRAM=/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja
12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/x86
13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/x86
14 | -DCMAKE_BUILD_TYPE=Debug
15 | -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86
16 | -GNinja
17 | -Wno-dev
18 | --no-warn-unused-cli
19 | Build command args: []
20 | Version: 2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/prefab_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "enabled": false,
3 | "packages": []
4 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86/symbol_folder_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/x86
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/query/client-agp/cache-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/query/client-agp/cache-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/reply/codemodel-v2-727aaac1f2f871b2fb46.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations" :
3 | [
4 | {
5 | "directories" :
6 | [
7 | {
8 | "build" : ".",
9 | "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json",
10 | "minimumCMakeVersion" :
11 | {
12 | "string" : "3.6.0"
13 | },
14 | "projectIndex" : 0,
15 | "source" : "."
16 | }
17 | ],
18 | "name" : "Debug",
19 | "projects" :
20 | [
21 | {
22 | "directoryIndexes" :
23 | [
24 | 0
25 | ],
26 | "name" : "Project"
27 | }
28 | ],
29 | "targets" : []
30 | }
31 | ],
32 | "kind" : "codemodel",
33 | "paths" :
34 | {
35 | "build" : "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64",
36 | "source" : "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy"
37 | },
38 | "version" :
39 | {
40 | "major" : 2,
41 | "minor" : 3
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json:
--------------------------------------------------------------------------------
1 | {
2 | "backtraceGraph" :
3 | {
4 | "commands" : [],
5 | "files" : [],
6 | "nodes" : []
7 | },
8 | "installers" : [],
9 | "paths" :
10 | {
11 | "build" : ".",
12 | "source" : "."
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/.cmake/api/v1/reply/index-2025-03-31T09-43-10-0134.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake" :
3 | {
4 | "generator" :
5 | {
6 | "multiConfig" : false,
7 | "name" : "Ninja"
8 | },
9 | "paths" :
10 | {
11 | "cmake" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake",
12 | "cpack" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/cpack",
13 | "ctest" : "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ctest",
14 | "root" : "/home/deimos/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
15 | },
16 | "version" :
17 | {
18 | "isDirty" : false,
19 | "major" : 3,
20 | "minor" : 22,
21 | "patch" : 1,
22 | "string" : "3.22.1-g37088a8",
23 | "suffix" : "g37088a8"
24 | }
25 | },
26 | "objects" :
27 | [
28 | {
29 | "jsonFile" : "codemodel-v2-727aaac1f2f871b2fb46.json",
30 | "kind" : "codemodel",
31 | "version" :
32 | {
33 | "major" : 2,
34 | "minor" : 3
35 | }
36 | },
37 | {
38 | "jsonFile" : "cache-v2-c3548645ed54a48523a7.json",
39 | "kind" : "cache",
40 | "version" :
41 | {
42 | "major" : 2,
43 | "minor" : 0
44 | }
45 | },
46 | {
47 | "jsonFile" : "cmakeFiles-v1-432ff342d6b674b7d823.json",
48 | "kind" : "cmakeFiles",
49 | "version" :
50 | {
51 | "major" : 1,
52 | "minor" : 0
53 | }
54 | }
55 | ],
56 | "reply" :
57 | {
58 | "client-agp" :
59 | {
60 | "cache-v2" :
61 | {
62 | "jsonFile" : "cache-v2-c3548645ed54a48523a7.json",
63 | "kind" : "cache",
64 | "version" :
65 | {
66 | "major" : 2,
67 | "minor" : 0
68 | }
69 | },
70 | "cmakeFiles-v1" :
71 | {
72 | "jsonFile" : "cmakeFiles-v1-432ff342d6b674b7d823.json",
73 | "kind" : "cmakeFiles",
74 | "version" :
75 | {
76 | "major" : 1,
77 | "minor" : 0
78 | }
79 | },
80 | "codemodel-v2" :
81 | {
82 | "jsonFile" : "codemodel-v2-727aaac1f2f871b2fb46.json",
83 | "kind" : "codemodel",
84 | "version" :
85 | {
86 | "major" : 2,
87 | "minor" : 3
88 | }
89 | }
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_HOST_SYSTEM "Linux-6.12.20-2-MANJARO")
2 | set(CMAKE_HOST_SYSTEM_NAME "Linux")
3 | set(CMAKE_HOST_SYSTEM_VERSION "6.12.20-2-MANJARO")
4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
5 |
6 | include("/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake")
7 |
8 | set(CMAKE_SYSTEM "Android-1")
9 | set(CMAKE_SYSTEM_NAME "Android")
10 | set(CMAKE_SYSTEM_VERSION "1")
11 | set(CMAKE_SYSTEM_PROCESSOR "x86_64")
12 |
13 | set(CMAKE_CROSSCOMPILING "TRUE")
14 |
15 | set(CMAKE_SYSTEM_LOADED 1)
16 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/TargetDirectories.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/edit_cache.dir
2 | /home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/rebuild_cache.dir
3 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/cmake.check_cache:
--------------------------------------------------------------------------------
1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file
2 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/CMakeFiles/rules.ninja:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Ninja" Generator, CMake Version 3.22
3 |
4 | # This file contains all the rules used to get the outputs files
5 | # built from the input files.
6 | # It is included in the main 'build.ninja'.
7 |
8 | # =============================================================================
9 | # Project: Project
10 | # Configurations: Debug
11 | # =============================================================================
12 | # =============================================================================
13 |
14 | #############################################
15 | # Rule for running custom commands.
16 |
17 | rule CUSTOM_COMMAND
18 | command = $COMMAND
19 | description = $DESC
20 |
21 |
22 | #############################################
23 | # Rule for re-running cmake.
24 |
25 | rule RERUN_CMAKE
26 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/cmake --regenerate-during-build -S/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64
27 | description = Re-running CMake...
28 | generator = 1
29 |
30 |
31 | #############################################
32 | # Rule for cleaning all built files.
33 |
34 | rule CLEAN
35 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja $FILE_ARG -t clean $TARGETS
36 | description = Cleaning all built files...
37 |
38 |
39 | #############################################
40 | # Rule for printing all primary targets available.
41 |
42 | rule HELP
43 | command = /home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja -t targets
44 | description = All primary targets available:
45 |
46 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/additional_project_files.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/additional_project_files.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/android_gradle_build.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {},
20 | "toolchains": {
21 | "toolchain": {
22 | "cCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang.lld",
23 | "cppCompilerExecutable": "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++.lld"
24 | }
25 | },
26 | "cFileExtensions": [],
27 | "cppFileExtensions": []
28 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/android_gradle_build_mini.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildFiles": [
3 | "/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt"
4 | ],
5 | "cleanCommandsComponents": [
6 | [
7 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
8 | "-C",
9 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64",
10 | "clean"
11 | ]
12 | ],
13 | "buildTargetsCommandComponents": [
14 | "/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja",
15 | "-C",
16 | "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64",
17 | "{LIST_OF_TARGETS_TO_BUILD}"
18 | ],
19 | "libraries": {}
20 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/build_file_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/cmake_install.cmake:
--------------------------------------------------------------------------------
1 | # Install script for directory: /home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 |
3 | # Set the install prefix
4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX)
5 | set(CMAKE_INSTALL_PREFIX "/usr/local")
6 | endif()
7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
8 |
9 | # Set the install configuration name.
10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
11 | if(BUILD_TYPE)
12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
14 | else()
15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug")
16 | endif()
17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
18 | endif()
19 |
20 | # Set the component getting installed.
21 | if(NOT CMAKE_INSTALL_COMPONENT)
22 | if(COMPONENT)
23 | message(STATUS "Install component: \"${COMPONENT}\"")
24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
25 | else()
26 | set(CMAKE_INSTALL_COMPONENT)
27 | endif()
28 | endif()
29 |
30 | # Install shared libraries without execute permission?
31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
32 | set(CMAKE_INSTALL_SO_NO_EXE "0")
33 | endif()
34 |
35 | # Is this installation the result of a crosscompile?
36 | if(NOT DEFINED CMAKE_CROSSCOMPILING)
37 | set(CMAKE_CROSSCOMPILING "TRUE")
38 | endif()
39 |
40 | # Set default install directory permissions.
41 | if(NOT DEFINED CMAKE_OBJDUMP)
42 | set(CMAKE_OBJDUMP "/home/deimos/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump")
43 | endif()
44 |
45 | if(CMAKE_INSTALL_COMPONENT)
46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
47 | else()
48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
49 | endif()
50 |
51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
52 | "${CMAKE_INSTALL_MANIFEST_FILES}")
53 | file(WRITE "/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64/${CMAKE_INSTALL_MANIFEST}"
54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}")
55 |
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/configure_fingerprint.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/.cxx/Debug/5i1255y6/x86_64/configure_fingerprint.bin
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/metadata_generation_command.txt:
--------------------------------------------------------------------------------
1 | -H/home/deimos/dev/flutter/packages/flutter_tools/gradle/src/main/groovy
2 | -DCMAKE_SYSTEM_NAME=Android
3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
4 | -DCMAKE_SYSTEM_VERSION=21
5 | -DANDROID_PLATFORM=android-21
6 | -DANDROID_ABI=x86_64
7 | -DCMAKE_ANDROID_ARCH_ABI=x86_64
8 | -DANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
9 | -DCMAKE_ANDROID_NDK=/home/deimos/Android/Sdk/ndk/26.3.11579264
10 | -DCMAKE_TOOLCHAIN_FILE=/home/deimos/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake
11 | -DCMAKE_MAKE_PROGRAM=/home/deimos/Android/Sdk/cmake/3.22.1/bin/ninja
12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/x86_64
13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/x86_64
14 | -DCMAKE_BUILD_TYPE=Debug
15 | -B/home/deimos/FLUTTER/libs/flutter_recorder/example/android/app/.cxx/Debug/5i1255y6/x86_64
16 | -GNinja
17 | -Wno-dev
18 | --no-warn-unused-cli
19 | Build command args: []
20 | Version: 2
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/prefab_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "enabled": false,
3 | "packages": []
4 | }
--------------------------------------------------------------------------------
/example/android/app/.cxx/Debug/5i1255y6/x86_64/symbol_folder_index.txt:
--------------------------------------------------------------------------------
1 | /home/deimos/FLUTTER/libs/flutter_recorder/example/build/app/intermediates/cxx/Debug/5i1255y6/obj/x86_64
--------------------------------------------------------------------------------
/example/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "kotlin-android"
4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
5 | id "dev.flutter.flutter-gradle-plugin"
6 | }
7 |
8 | android {
9 | namespace = "com.example.flutter_recorder_example"
10 | compileSdk = flutter.compileSdkVersion
11 | ndkVersion = flutter.ndkVersion
12 |
13 | compileOptions {
14 | sourceCompatibility = JavaVersion.VERSION_1_8
15 | targetCompatibility = JavaVersion.VERSION_1_8
16 | }
17 |
18 | kotlinOptions {
19 | jvmTarget = JavaVersion.VERSION_1_8
20 | }
21 |
22 | defaultConfig {
23 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
24 | applicationId = "com.example.flutter_recorder_example"
25 | // You can update the following values to match your application needs.
26 | // For more information, see: https://flutter.dev/to/review-gradle-config.
27 | minSdk = flutter.minSdkVersion
28 | targetSdk = flutter.targetSdkVersion
29 | versionCode = flutter.versionCode
30 | versionName = flutter.versionName
31 | }
32 |
33 | buildTypes {
34 | release {
35 | // TODO: Add your own signing config for the release build.
36 | // Signing with the debug keys for now, so `flutter run --release` works.
37 | signingConfig = signingConfigs.debug
38 | }
39 | }
40 | }
41 |
42 | flutter {
43 | source = "../.."
44 | }
45 |
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
16 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
31 |
34 |
35 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/example/android/app/src/main/kotlin/com/example/flutter_recorder_example/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.flutter_recorder_example
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity()
6 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = "../build"
9 | subprojects {
10 | project.buildDir = "${rootProject.buildDir}/${project.name}"
11 | }
12 | subprojects {
13 | project.evaluationDependsOn(":app")
14 | }
15 |
16 | tasks.register("clean", Delete) {
17 | delete rootProject.buildDir
18 | }
19 |
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
6 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }()
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21 | id "com.android.application" version "8.2.1" apply false
22 | id "org.jetbrains.kotlin.android" version "1.8.22" apply false
23 | }
24 |
25 | include ":app"
26 |
--------------------------------------------------------------------------------
/example/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/example/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '13.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | target 'RunnerTests' do
36 | inherit! :search_paths
37 | end
38 | end
39 |
40 | post_install do |installer|
41 | installer.pods_project.targets.each do |target|
42 | flutter_additional_ios_build_settings(target)
43 | end
44 | end
45 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 |
4 | @main
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/example/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Flutter Recorder
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | flutter_recorder_example
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(FLUTTER_BUILD_NUMBER)
25 | LSRequiresIPhoneOS
26 |
27 | UILaunchStoryboardName
28 | LaunchScreen
29 | UIMainStoryboardFile
30 | Main
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 | CADisableMinimumFrameDurationOnPhone
45 |
46 | UIApplicationSupportsIndirectInputEvents
47 |
48 | NSMicrophoneUsageDescription
49 | flutter_recorder needs your permission to use the mic
50 |
51 |
52 |
--------------------------------------------------------------------------------
/example/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/example/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/example/lib/ui/fft_painter.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: public_member_api_docs
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_recorder/flutter_recorder.dart';
4 |
5 | /// Custom painter to draw the FFT data.
6 | class FftPainter extends CustomPainter {
7 | const FftPainter();
8 |
9 | @override
10 | void paint(Canvas canvas, Size size) {
11 | if (!Recorder.instance.isDeviceStarted()) return;
12 |
13 | final fftData = Recorder.instance.getFft(alwaysReturnData: true);
14 | // Using `alwaysReturnData: true` this will always return a non-empty list
15 | // even if the audio data is the same as the previous one.
16 | if (fftData.isEmpty) return;
17 | final barWidth = size.width / 256;
18 |
19 | final paint = Paint()..color = Colors.yellow;
20 |
21 | for (var i = 0; i < 256; i++) {
22 | late final double barHeight;
23 | barHeight = size.height * fftData[i];
24 | canvas.drawRect(
25 | Rect.fromLTWH(
26 | barWidth * i,
27 | size.height - barHeight,
28 | barWidth,
29 | barHeight,
30 | ),
31 | paint,
32 | );
33 | }
34 | }
35 |
36 | @override
37 | bool shouldRepaint(FftPainter oldDelegate) {
38 | return true;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/example/lib/ui/vu_meter.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class VuMeter extends StatelessWidget {
4 | const VuMeter({
5 | super.key,
6 | required this.width,
7 | required this.height,
8 | required this.vuMeter,
9 | required this.db,
10 | });
11 |
12 | final double width;
13 | final double height;
14 | final double vuMeter;
15 | final double db;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | return SizedBox(
20 | width: width,
21 | height: height,
22 | child: Stack(
23 | children: [
24 | Container(
25 | decoration: const BoxDecoration(
26 | gradient: LinearGradient(
27 | colors: [
28 | Colors.green,
29 | Colors.red,
30 | ],
31 | begin: Alignment.bottomCenter,
32 | end: Alignment.topCenter,
33 | ),
34 | ),
35 | ),
36 | Container(
37 | width: width,
38 | height: height * vuMeter,
39 | color: const Color.fromARGB(255, 55, 55, 55),
40 | ),
41 | Align(
42 | alignment: Alignment.bottomLeft,
43 | child: Text(
44 | db.toStringAsFixed(1),
45 | style: const TextStyle(
46 | fontSize: 12,
47 | fontWeight: FontWeight.bold,
48 | ),
49 | ),
50 | ),
51 | ],
52 | ),
53 | );
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/example/lib/ui/wave_painter.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_recorder/flutter_recorder.dart';
3 |
4 | /// Custom painter to draw the wave data.
5 | class WavePainter extends CustomPainter {
6 | const WavePainter();
7 |
8 | @override
9 | void paint(Canvas canvas, Size size) {
10 | if (!Recorder.instance.isDeviceStarted()) return;
11 |
12 | final waveData = Recorder.instance.getWave(alwaysReturnData: true);
13 | // Using `alwaysReturnData: true` this will always return a non-empty list
14 | // even if the audio data is the same as the previous one.
15 | if (waveData.isEmpty) return;
16 |
17 | final barWidth = size.width / 256;
18 | final paint = Paint()..color = Colors.yellow;
19 |
20 | for (var i = 0; i < 256; i++) {
21 | late final double barHeight;
22 | barHeight = size.height * waveData[i];
23 | canvas.drawRect(
24 | Rect.fromLTWH(
25 | barWidth * i,
26 | (size.height - barHeight) / 2,
27 | barWidth,
28 | barHeight,
29 | ),
30 | paint,
31 | );
32 | }
33 | }
34 |
35 | @override
36 | bool shouldRepaint(WavePainter oldDelegate) {
37 | return true;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/example/linux/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral
2 |
--------------------------------------------------------------------------------
/example/linux/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 |
10 | void fl_register_plugins(FlPluginRegistry* registry) {
11 | }
12 |
--------------------------------------------------------------------------------
/example/linux/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void fl_register_plugins(FlPluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/example/linux/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | )
7 |
8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
9 | flutter_recorder
10 | flutter_soloud
11 | )
12 |
13 | set(PLUGIN_BUNDLED_LIBRARIES)
14 |
15 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
16 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
17 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
18 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
19 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
20 | endforeach(plugin)
21 |
22 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
23 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
24 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
25 | endforeach(ffi_plugin)
26 |
--------------------------------------------------------------------------------
/example/linux/runner/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.13)
2 | project(runner LANGUAGES CXX)
3 |
4 | # Define the application target. To change its name, change BINARY_NAME in the
5 | # top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
6 | # work.
7 | #
8 | # Any new source files that you add to the application should be added here.
9 | add_executable(${BINARY_NAME}
10 | "main.cc"
11 | "my_application.cc"
12 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
13 | )
14 |
15 | # Apply the standard set of build settings. This can be removed for applications
16 | # that need different build settings.
17 | apply_standard_settings(${BINARY_NAME})
18 |
19 | # Add preprocessor definitions for the application ID.
20 | add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
21 |
22 | # Add dependency libraries. Add any application-specific dependencies here.
23 | target_link_libraries(${BINARY_NAME} PRIVATE flutter)
24 | target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
25 |
26 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
27 |
--------------------------------------------------------------------------------
/example/linux/runner/main.cc:
--------------------------------------------------------------------------------
1 | #include "my_application.h"
2 |
3 | int main(int argc, char** argv) {
4 | g_autoptr(MyApplication) app = my_application_new();
5 | return g_application_run(G_APPLICATION(app), argc, argv);
6 | }
7 |
--------------------------------------------------------------------------------
/example/linux/runner/my_application.h:
--------------------------------------------------------------------------------
1 | #ifndef FLUTTER_MY_APPLICATION_H_
2 | #define FLUTTER_MY_APPLICATION_H_
3 |
4 | #include
5 |
6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
7 | GtkApplication)
8 |
9 | /**
10 | * my_application_new:
11 | *
12 | * Creates a new Flutter-based application.
13 | *
14 | * Returns: a new #MyApplication.
15 | */
16 | MyApplication* my_application_new();
17 |
18 | #endif // FLUTTER_MY_APPLICATION_H_
19 |
--------------------------------------------------------------------------------
/example/macos/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter-related
2 | **/Flutter/ephemeral/
3 | **/Pods/
4 |
5 | # Xcode-related
6 | **/dgph
7 | **/xcuserdata/
8 |
--------------------------------------------------------------------------------
/example/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/macos/Flutter/GeneratedPluginRegistrant.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | import FlutterMacOS
6 | import Foundation
7 |
8 | import path_provider_foundation
9 |
10 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
11 | PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
12 | }
13 |
--------------------------------------------------------------------------------
/example/macos/Podfile:
--------------------------------------------------------------------------------
1 | platform :osx, '10.15'
2 |
3 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
4 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
5 |
6 | project 'Runner', {
7 | 'Debug' => :debug,
8 | 'Profile' => :release,
9 | 'Release' => :release,
10 | }
11 |
12 | def flutter_root
13 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
14 | unless File.exist?(generated_xcode_build_settings_path)
15 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
16 | end
17 |
18 | File.foreach(generated_xcode_build_settings_path) do |line|
19 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
20 | return matches[1].strip if matches
21 | end
22 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
23 | end
24 |
25 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
26 |
27 | flutter_macos_podfile_setup
28 |
29 | target 'Runner' do
30 | use_frameworks!
31 | use_modular_headers!
32 |
33 | flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
34 | target 'RunnerTests' do
35 | inherit! :search_paths
36 | end
37 | end
38 |
39 | post_install do |installer|
40 | installer.pods_project.targets.each do |target|
41 | flutter_additional_macos_build_settings(target)
42 | end
43 | end
44 |
--------------------------------------------------------------------------------
/example/macos/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - flutter_recorder (0.0.1):
3 | - FlutterMacOS
4 | - flutter_soloud (0.0.1):
5 | - FlutterMacOS
6 | - FlutterMacOS (1.0.0)
7 | - path_provider_foundation (0.0.1):
8 | - Flutter
9 | - FlutterMacOS
10 |
11 | DEPENDENCIES:
12 | - flutter_recorder (from `Flutter/ephemeral/.symlinks/plugins/flutter_recorder/macos`)
13 | - flutter_soloud (from `Flutter/ephemeral/.symlinks/plugins/flutter_soloud/macos`)
14 | - FlutterMacOS (from `Flutter/ephemeral`)
15 | - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
16 |
17 | EXTERNAL SOURCES:
18 | flutter_recorder:
19 | :path: Flutter/ephemeral/.symlinks/plugins/flutter_recorder/macos
20 | flutter_soloud:
21 | :path: Flutter/ephemeral/.symlinks/plugins/flutter_soloud/macos
22 | FlutterMacOS:
23 | :path: Flutter/ephemeral
24 | path_provider_foundation:
25 | :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
26 |
27 | SPEC CHECKSUMS:
28 | flutter_recorder: c93092a2b731a51bf81e2e0bcfc3021870c5a628
29 | flutter_soloud: 5fd8e08d9e9258da2993ef11bb0996cfe187da02
30 | FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
31 | path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
32 |
33 | PODFILE CHECKSUM: 9ebaf0ce3d369aaa26a9ea0e159195ed94724cf3
34 |
35 | COCOAPODS: 1.16.2
36 |
--------------------------------------------------------------------------------
/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/macos/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @main
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 |
10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
11 | return true
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "16x16",
5 | "idiom" : "mac",
6 | "filename" : "app_icon_16.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "16x16",
11 | "idiom" : "mac",
12 | "filename" : "app_icon_32.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "32x32",
17 | "idiom" : "mac",
18 | "filename" : "app_icon_32.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "32x32",
23 | "idiom" : "mac",
24 | "filename" : "app_icon_64.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "128x128",
29 | "idiom" : "mac",
30 | "filename" : "app_icon_128.png",
31 | "scale" : "1x"
32 | },
33 | {
34 | "size" : "128x128",
35 | "idiom" : "mac",
36 | "filename" : "app_icon_256.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "256x256",
41 | "idiom" : "mac",
42 | "filename" : "app_icon_256.png",
43 | "scale" : "1x"
44 | },
45 | {
46 | "size" : "256x256",
47 | "idiom" : "mac",
48 | "filename" : "app_icon_512.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "512x512",
53 | "idiom" : "mac",
54 | "filename" : "app_icon_512.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "512x512",
59 | "idiom" : "mac",
60 | "filename" : "app_icon_1024.png",
61 | "scale" : "2x"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/AppInfo.xcconfig:
--------------------------------------------------------------------------------
1 | // Application-level settings for the Runner target.
2 | //
3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
4 | // future. If not, the values below would default to using the project name when this becomes a
5 | // 'flutter create' template.
6 |
7 | // The application's name. By default this is also the title of the Flutter window.
8 | PRODUCT_NAME = flutter_recorder_example
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRecorderExample
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved.
15 |
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
2 | GCC_WARN_UNDECLARED_SELECTOR = YES
3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
6 | CLANG_WARN_PRAGMA_PACK = YES
7 | CLANG_WARN_STRICT_PROTOTYPES = YES
8 | CLANG_WARN_COMMA = YES
9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES
10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
12 | GCC_WARN_SHADOW = YES
13 | CLANG_WARN_UNREACHABLE_CODE = YES
14 |
--------------------------------------------------------------------------------
/example/macos/Runner/DebugProfile.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.network.server
10 |
11 | com.apple.security.device.audio-input
12 |
13 | com.apple.security.app-sandbox
14 |
15 | com.apple.security.files.downloads.read-write
16 |
17 | com.apple.security.files.user-selected.read-write
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/macos/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSHumanReadableCopyright
26 | $(PRODUCT_COPYRIGHT)
27 | NSMainNibFile
28 | MainMenu
29 | NSPrincipalClass
30 | NSApplication
31 | NSMicrophoneUsageDescription
32 | flutter_recorder needs your permission to use the mic
33 | NSDownloadsFolderUsageDescription
34 | This app needs access to Downloads folder to save recorded audio files
35 |
36 |
37 |
--------------------------------------------------------------------------------
/example/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController()
7 | let windowFrame = self.frame
8 | self.contentViewController = flutterViewController
9 | self.setFrame(windowFrame, display: true)
10 |
11 | RegisterGeneratedPlugins(registry: flutterViewController)
12 |
13 | super.awakeFromNib()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/example/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.device.audio-input
8 |
9 | com.apple.security.app-sandbox
10 |
11 | com.apple.security.files.downloads.read-write
12 |
13 | com.apple.security.files.user-selected.read-write
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/example/macos/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/example/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_recorder_example
2 | description: "Demonstrates how to use the flutter_recorder plugin."
3 | publish_to: 'none'
4 | version: 1.0.0+1
5 |
6 | environment:
7 | sdk: ^3.5.1
8 |
9 | dependencies:
10 | flutter:
11 | sdk: flutter
12 |
13 | flutter_recorder:
14 | path: ../
15 |
16 | flutter_soloud: ^3.0.1
17 |
18 | cupertino_icons: ^1.0.8
19 | logging: ^1.3.0
20 | open_filex: ^4.6.0
21 | path_provider: ^2.1.5
22 | permission_handler: ^11.4.0
23 |
24 | dev_dependencies:
25 | flutter_test:
26 | sdk: flutter
27 | flutter_lints: ^5.0.0
28 | very_good_analysis: ^6.0.0
29 |
30 | flutter:
31 | uses-material-design: true
32 |
--------------------------------------------------------------------------------
/example/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/web/favicon.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/example/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | example
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/example/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "short_name": "example",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter project.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | },
22 | {
23 | "src": "icons/Icon-maskable-192.png",
24 | "sizes": "192x192",
25 | "type": "image/png",
26 | "purpose": "maskable"
27 | },
28 | {
29 | "src": "icons/Icon-maskable-512.png",
30 | "sizes": "512x512",
31 | "type": "image/png",
32 | "purpose": "maskable"
33 | }
34 | ]
35 | }
36 |
--------------------------------------------------------------------------------
/example/windows/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral/
2 |
3 | # Visual Studio user-specific files.
4 | *.suo
5 | *.user
6 | *.userosscache
7 | *.sln.docstates
8 |
9 | # Visual Studio build-related files.
10 | x64/
11 | x86/
12 |
13 | # Visual Studio cache files
14 | # files ending in .cache can be ignored
15 | *.[Cc]ache
16 | # but keep track of directories ending in .cache
17 | !*.[Cc]ache/
18 |
--------------------------------------------------------------------------------
/example/windows/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 | #include
10 |
11 | void RegisterPlugins(flutter::PluginRegistry* registry) {
12 | PermissionHandlerWindowsPluginRegisterWithRegistrar(
13 | registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
14 | }
15 |
--------------------------------------------------------------------------------
/example/windows/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void RegisterPlugins(flutter::PluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/example/windows/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | permission_handler_windows
7 | )
8 |
9 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
10 | flutter_recorder
11 | flutter_soloud
12 | )
13 |
14 | set(PLUGIN_BUNDLED_LIBRARIES)
15 |
16 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
17 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
18 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
19 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
20 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
21 | endforeach(plugin)
22 |
23 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
24 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
25 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
26 | endforeach(ffi_plugin)
27 |
--------------------------------------------------------------------------------
/example/windows/runner/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.14)
2 | project(runner LANGUAGES CXX)
3 |
4 | # Define the application target. To change its name, change BINARY_NAME in the
5 | # top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
6 | # work.
7 | #
8 | # Any new source files that you add to the application should be added here.
9 | add_executable(${BINARY_NAME} WIN32
10 | "flutter_window.cpp"
11 | "main.cpp"
12 | "utils.cpp"
13 | "win32_window.cpp"
14 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
15 | "Runner.rc"
16 | "runner.exe.manifest"
17 | )
18 |
19 | # Apply the standard set of build settings. This can be removed for applications
20 | # that need different build settings.
21 | apply_standard_settings(${BINARY_NAME})
22 |
23 | # Add preprocessor definitions for the build version.
24 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"")
25 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}")
26 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}")
27 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}")
28 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}")
29 |
30 | # Disable Windows macros that collide with C++ standard library functions.
31 | target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX")
32 |
33 | # Add dependency libraries and include directories. Add any application-specific
34 | # dependencies here.
35 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app)
36 | target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib")
37 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
38 |
39 | # Run the Flutter tool portions of the build. This must not be removed.
40 | add_dependencies(${BINARY_NAME} flutter_assemble)
41 |
--------------------------------------------------------------------------------
/example/windows/runner/flutter_window.cpp:
--------------------------------------------------------------------------------
1 | #include "flutter_window.h"
2 |
3 | #include
4 |
5 | #include "flutter/generated_plugin_registrant.h"
6 |
7 | FlutterWindow::FlutterWindow(const flutter::DartProject& project)
8 | : project_(project) {}
9 |
10 | FlutterWindow::~FlutterWindow() {}
11 |
12 | bool FlutterWindow::OnCreate() {
13 | if (!Win32Window::OnCreate()) {
14 | return false;
15 | }
16 |
17 | RECT frame = GetClientArea();
18 |
19 | // The size here must match the window dimensions to avoid unnecessary surface
20 | // creation / destruction in the startup path.
21 | flutter_controller_ = std::make_unique(
22 | frame.right - frame.left, frame.bottom - frame.top, project_);
23 | // Ensure that basic setup of the controller was successful.
24 | if (!flutter_controller_->engine() || !flutter_controller_->view()) {
25 | return false;
26 | }
27 | RegisterPlugins(flutter_controller_->engine());
28 | SetChildContent(flutter_controller_->view()->GetNativeWindow());
29 |
30 | flutter_controller_->engine()->SetNextFrameCallback([&]() {
31 | this->Show();
32 | });
33 |
34 | // Flutter can complete the first frame before the "show window" callback is
35 | // registered. The following call ensures a frame is pending to ensure the
36 | // window is shown. It is a no-op if the first frame hasn't completed yet.
37 | flutter_controller_->ForceRedraw();
38 |
39 | return true;
40 | }
41 |
42 | void FlutterWindow::OnDestroy() {
43 | if (flutter_controller_) {
44 | flutter_controller_ = nullptr;
45 | }
46 |
47 | Win32Window::OnDestroy();
48 | }
49 |
50 | LRESULT
51 | FlutterWindow::MessageHandler(HWND hwnd, UINT const message,
52 | WPARAM const wparam,
53 | LPARAM const lparam) noexcept {
54 | // Give Flutter, including plugins, an opportunity to handle window messages.
55 | if (flutter_controller_) {
56 | std::optional result =
57 | flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam,
58 | lparam);
59 | if (result) {
60 | return *result;
61 | }
62 | }
63 |
64 | switch (message) {
65 | case WM_FONTCHANGE:
66 | flutter_controller_->engine()->ReloadSystemFonts();
67 | break;
68 | }
69 |
70 | return Win32Window::MessageHandler(hwnd, message, wparam, lparam);
71 | }
72 |
--------------------------------------------------------------------------------
/example/windows/runner/flutter_window.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_FLUTTER_WINDOW_H_
2 | #define RUNNER_FLUTTER_WINDOW_H_
3 |
4 | #include
5 | #include
6 |
7 | #include
8 |
9 | #include "win32_window.h"
10 |
11 | // A window that does nothing but host a Flutter view.
12 | class FlutterWindow : public Win32Window {
13 | public:
14 | // Creates a new FlutterWindow hosting a Flutter view running |project|.
15 | explicit FlutterWindow(const flutter::DartProject& project);
16 | virtual ~FlutterWindow();
17 |
18 | protected:
19 | // Win32Window:
20 | bool OnCreate() override;
21 | void OnDestroy() override;
22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam,
23 | LPARAM const lparam) noexcept override;
24 |
25 | private:
26 | // The project to run.
27 | flutter::DartProject project_;
28 |
29 | // The Flutter instance hosted by this window.
30 | std::unique_ptr flutter_controller_;
31 | };
32 |
33 | #endif // RUNNER_FLUTTER_WINDOW_H_
34 |
--------------------------------------------------------------------------------
/example/windows/runner/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 |
5 | #include "flutter_window.h"
6 | #include "utils.h"
7 |
8 | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
9 | _In_ wchar_t *command_line, _In_ int show_command) {
10 | // Attach to console when present (e.g., 'flutter run') or create a
11 | // new console when running with a debugger.
12 | if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {
13 | CreateAndAttachConsole();
14 | }
15 |
16 | // Initialize COM, so that it is available for use in the library and/or
17 | // plugins.
18 | ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
19 |
20 | flutter::DartProject project(L"data");
21 |
22 | std::vector command_line_arguments =
23 | GetCommandLineArguments();
24 |
25 | project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
26 |
27 | FlutterWindow window(project);
28 | Win32Window::Point origin(10, 10);
29 | Win32Window::Size size(1280, 720);
30 | if (!window.Create(L"flutter_recorder_example", origin, size)) {
31 | return EXIT_FAILURE;
32 | }
33 | window.SetQuitOnClose(true);
34 |
35 | ::MSG msg;
36 | while (::GetMessage(&msg, nullptr, 0, 0)) {
37 | ::TranslateMessage(&msg);
38 | ::DispatchMessage(&msg);
39 | }
40 |
41 | ::CoUninitialize();
42 | return EXIT_SUCCESS;
43 | }
44 |
--------------------------------------------------------------------------------
/example/windows/runner/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by Runner.rc
4 | //
5 | #define IDI_APP_ICON 101
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 102
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1001
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/example/windows/runner/resources/app_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/example/windows/runner/resources/app_icon.ico
--------------------------------------------------------------------------------
/example/windows/runner/runner.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PerMonitorV2
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/example/windows/runner/utils.cpp:
--------------------------------------------------------------------------------
1 | #include "utils.h"
2 |
3 | #include
4 | #include
5 | #include
6 | #include
7 |
8 | #include
9 |
10 | void CreateAndAttachConsole() {
11 | if (::AllocConsole()) {
12 | FILE *unused;
13 | if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
14 | _dup2(_fileno(stdout), 1);
15 | }
16 | if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
17 | _dup2(_fileno(stdout), 2);
18 | }
19 | std::ios::sync_with_stdio();
20 | FlutterDesktopResyncOutputStreams();
21 | }
22 | }
23 |
24 | std::vector GetCommandLineArguments() {
25 | // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use.
26 | int argc;
27 | wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
28 | if (argv == nullptr) {
29 | return std::vector();
30 | }
31 |
32 | std::vector command_line_arguments;
33 |
34 | // Skip the first argument as it's the binary name.
35 | for (int i = 1; i < argc; i++) {
36 | command_line_arguments.push_back(Utf8FromUtf16(argv[i]));
37 | }
38 |
39 | ::LocalFree(argv);
40 |
41 | return command_line_arguments;
42 | }
43 |
44 | std::string Utf8FromUtf16(const wchar_t* utf16_string) {
45 | if (utf16_string == nullptr) {
46 | return std::string();
47 | }
48 | unsigned int target_length = ::WideCharToMultiByte(
49 | CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
50 | -1, nullptr, 0, nullptr, nullptr)
51 | -1; // remove the trailing null character
52 | int input_length = (int)wcslen(utf16_string);
53 | std::string utf8_string;
54 | if (target_length == 0 || target_length > utf8_string.max_size()) {
55 | return utf8_string;
56 | }
57 | utf8_string.resize(target_length);
58 | int converted_length = ::WideCharToMultiByte(
59 | CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
60 | input_length, utf8_string.data(), target_length, nullptr, nullptr);
61 | if (converted_length == 0) {
62 | return std::string();
63 | }
64 | return utf8_string;
65 | }
66 |
--------------------------------------------------------------------------------
/example/windows/runner/utils.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_UTILS_H_
2 | #define RUNNER_UTILS_H_
3 |
4 | #include
5 | #include
6 |
7 | // Creates a console for the process, and redirects stdout and stderr to
8 | // it for both the runner and the Flutter library.
9 | void CreateAndAttachConsole();
10 |
11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
12 | // encoded in UTF-8. Returns an empty std::string on failure.
13 | std::string Utf8FromUtf16(const wchar_t* utf16_string);
14 |
15 | // Gets the command line arguments passed in as a std::vector,
16 | // encoded in UTF-8. Returns an empty std::vector on failure.
17 | std::vector GetCommandLineArguments();
18 |
19 | #endif // RUNNER_UTILS_H_
20 |
--------------------------------------------------------------------------------
/ffigen.yaml:
--------------------------------------------------------------------------------
1 | # Run with `dart run ffigen --config ffigen.yaml`.
2 | name: FlutterRecorderBindings
3 | description: |
4 | Bindings for `src/flutter_recorder.h`.
5 |
6 | Regenerate bindings with
7 | `dart run ffigen --config ffigen.yaml`
8 | or
9 | `export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include"; dart run ffigen --config ffigen.yaml`
10 | output: 'lib/src/bindings/flutter_recorder_bindings_generated.dart'
11 | headers:
12 | entry-points:
13 | - 'src/flutter_recorder.h'
14 | include-directives:
15 | - 'src/flutter_recorder.h'
16 | preamble: |
17 | // ignore_for_file: always_specify_types
18 | // ignore_for_file: camel_case_types
19 | // ignore_for_file: non_constant_identifier_names
20 | silence-enum-warning: true
21 | comments:
22 | style: any
23 | length: full
24 |
--------------------------------------------------------------------------------
/images/audio_data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/images/audio_data.png
--------------------------------------------------------------------------------
/images/recorder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/images/recorder.png
--------------------------------------------------------------------------------
/init_recorder_module.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | cd web
5 | sh ./compile_init_recorder_module.sh
6 |
--------------------------------------------------------------------------------
/ios/Classes/flutter_recorder.c:
--------------------------------------------------------------------------------
1 | // Relative import to be able to reuse the C sources.
2 | // See the comment in ../flutter_recorder.podspec for more information.
3 | #include "../../src/flutter_recorder.c"
4 |
--------------------------------------------------------------------------------
/ios/Classes/flutter_recorder.mm:
--------------------------------------------------------------------------------
1 | // Relative import to be able to reuse the C sources.
2 | // See the comment in ../flutter_recorder.podspec for more information.
3 | #include "../../src/flutter_recorder.cpp"
4 |
5 | #include "../../src/analyzer.cpp"
6 | #include "../../src/capture.cpp"
7 | #include "../../src/fft/soloud_fft.cpp"
8 | #include "../../src/filters/filters.cpp"
9 | #include "../../src/filters/autogain.cpp"
10 | #include "../../src/filters/echo_cancellation.cpp"
11 |
--------------------------------------------------------------------------------
/ios/flutter_recorder.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
3 | # Run `pod lib lint flutter_recorder.podspec` to validate before publishing.
4 | #
5 | Pod::Spec.new do |s|
6 | s.name = 'flutter_recorder'
7 | s.version = '0.0.1'
8 | s.summary = 'A new Flutter FFI plugin project.'
9 | s.description = <<-DESC
10 | A new Flutter FFI plugin project.
11 | DESC
12 | s.homepage = 'http://example.com'
13 | s.license = { :file => '../LICENSE' }
14 | s.author = { 'Your Company' => 'email@example.com' }
15 |
16 | # This will ensure the source files in Classes/ are included in the native
17 | # builds of apps using this FFI plugin. Podspec does not support relative
18 | # paths, so Classes contains a forwarder C file that relatively imports
19 | # `../src/*` so that the C sources can be shared among all target platforms.
20 | s.source = { :path => '.' }
21 | s.source_files = 'Classes/**/*'
22 | s.dependency 'Flutter'
23 | s.platform = :ios, '12.0'
24 |
25 | s.pod_target_xcconfig = {
26 | 'DEFINES_MODULE' => 'YES',
27 | 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386',
28 | "CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
29 | 'OTHER_CFLAGS' => '-O3 -ffast-math -ffast-math -flto -funroll-loops -pthread',
30 | 'OTHER_CPLUSPLUSFLAGS' => '-O3 -ffast-math -ffast-math -flto -funroll-loops -pthread',
31 | 'GCC_OPTIMIZATION_LEVEL' => '3',
32 | # Add audio and threading optimization flags
33 | 'GCC_PREPROCESSOR_DEFINITIONS' => 'MA_NO_RUNTIME_LINKING=1 NDEBUG=1 _REENTRANT=1',
34 | 'HEADER_SEARCH_PATHS' => '$(inherited) $(PODS_TARGET_SRCROOT)/src'
35 | }
36 | s.swift_version = '5.0'
37 | s.ios.framework = ['CoreAudio', 'AudioToolbox', 'AVFoundation']
38 | end
39 |
--------------------------------------------------------------------------------
/lib/flutter_recorder.dart:
--------------------------------------------------------------------------------
1 | /// Flutter low level audio recorder plugin using miniaudio library and FFI
2 | library flutter_recorder;
3 |
4 | export 'src/audio_data_container.dart';
5 | export 'src/enums.dart' show PCMFormat, RecorderChannels;
6 | export 'src/filters/autogain.dart';
7 | export 'src/filters/echo_cancellation.dart';
8 | export 'src/filters/filters.dart' show RecorderFilterType;
9 | export 'src/flutter_recorder.dart';
10 |
--------------------------------------------------------------------------------
/lib/src/enums.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: sort_constructors_first, public_member_api_docs
2 |
3 | /// CaptureDevice exposed to Dart
4 | final class CaptureDevice {
5 | /// Constructs a new [CaptureDevice].
6 | // ignore: avoid_positional_boolean_parameters
7 | const CaptureDevice(this.name, this.isDefault, this.id);
8 |
9 | /// The name of the device.
10 | final String name;
11 |
12 | /// Whether this is the default capture device.
13 | final bool isDefault;
14 |
15 | /// The ID of the device.
16 | final int id;
17 | }
18 |
19 | /// Possible capture errors
20 | enum CaptureErrors {
21 | /// No error
22 | captureNoError(0),
23 |
24 | /// The capture device has failed to initialize.
25 | captureInitFailed(1),
26 |
27 | /// The capture device has not yet been initialized.
28 | captureNotInited(2),
29 |
30 | /// Failed to start the device.
31 | failedToStartDevice(3),
32 |
33 | /// Failed to initialize wav recording.
34 | failedToInitializeRecording(4),
35 |
36 | /// Invalid arguments while initializing wav recording.
37 | invalidArgs(5),
38 |
39 | /// Failed to write wav file.
40 | failedToWriteWav(6),
41 |
42 | /// Filter not found
43 | filterNotFound(7),
44 |
45 | /// The filter has already been added.
46 | filterAlreadyAdded(8),
47 |
48 | /// Error getting filter parameter.
49 | filterParameterGetError(9);
50 |
51 | /// Internal value
52 | final int value;
53 |
54 | /// Create a [CaptureErrors] from an internal value
55 | const CaptureErrors(this.value);
56 |
57 | static CaptureErrors fromValue(int value) => switch (value) {
58 | 0 => captureNoError,
59 | 1 => captureInitFailed,
60 | 2 => captureNotInited,
61 | 3 => failedToStartDevice,
62 | 4 => failedToInitializeRecording,
63 | 5 => invalidArgs,
64 | 6 => failedToWriteWav,
65 | 7 => filterNotFound,
66 | 8 => filterAlreadyAdded,
67 | 9 => filterParameterGetError,
68 | _ => throw ArgumentError('Unknown value for CaptureErrors: $value'),
69 | };
70 | }
71 |
72 | /// The channels to be used while initializing the player.
73 | enum RecorderChannels {
74 | /// One channel.
75 | mono(1),
76 |
77 | /// Two channels.
78 | stereo(2);
79 |
80 | const RecorderChannels(this.count);
81 |
82 | /// The channels count.
83 | final int count;
84 | }
85 |
86 | /// The PCM format
87 | enum PCMFormat {
88 | /// 8-bit unsigned.
89 | u8(0),
90 |
91 | /// 16-bit signed, little-endian.
92 | s16le(1),
93 |
94 | /// 24-bit signed, little-endian.
95 | s24le(2),
96 |
97 | /// 32-bit signed, little-endian.
98 | s32le(3),
99 |
100 | /// 32-bit float, little-endian.
101 | f32le(4);
102 |
103 | final int value;
104 |
105 | const PCMFormat(this.value);
106 |
107 | static PCMFormat fromValue(int value) => switch (value) {
108 | 0 => u8,
109 | 1 => s16le,
110 | 2 => s24le,
111 | 3 => s32le,
112 | 4 => f32le,
113 | _ => throw ArgumentError('Unknown value for PCMFormat: $value'),
114 | };
115 | }
116 |
--------------------------------------------------------------------------------
/lib/src/filters/autogain.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: public_member_api_docs
2 | import 'package:flutter_recorder/src/filters/filters.dart';
3 |
4 | enum AutoGainEnum {
5 | targetRms,
6 | attackTime,
7 | releaseTime,
8 | gainSmoothing,
9 | maxGain,
10 | minGain;
11 |
12 | final List _defs = const [0.1, 0.1, 0.2, 0.05, 6, 0.2];
13 | final List _mins = const [0.01, 0.01, 0.01, 0.001, 1, 0.1];
14 | final List _maxs = const [1, 0.5, 0.5, 1, 6, 1];
15 |
16 | double get min => _mins[index];
17 | double get max => _maxs[index];
18 | double get def => _defs[index];
19 |
20 | @override
21 | String toString() => switch (this) {
22 | AutoGainEnum.targetRms => 'Target RMS',
23 | AutoGainEnum.attackTime => 'Attack Time',
24 | AutoGainEnum.releaseTime => 'Release Time',
25 | AutoGainEnum.gainSmoothing => 'Gain Smoothing',
26 | AutoGainEnum.maxGain => 'Max Gain',
27 | AutoGainEnum.minGain => 'Min Gain',
28 | };
29 | }
30 |
31 | abstract class _AutoGainInternal extends FilterBase {
32 | const _AutoGainInternal() : super(RecorderFilterType.autogain);
33 |
34 | AutoGainEnum get queryTargetRms => AutoGainEnum.targetRms;
35 | AutoGainEnum get queryAttackTime => AutoGainEnum.attackTime;
36 | AutoGainEnum get queryReleaseTime => AutoGainEnum.releaseTime;
37 | AutoGainEnum get queryGainSmoothing => AutoGainEnum.gainSmoothing;
38 | AutoGainEnum get queryMaxGain => AutoGainEnum.maxGain;
39 | AutoGainEnum get queryMinGain => AutoGainEnum.minGain;
40 | }
41 |
42 | class AutoGain extends _AutoGainInternal {
43 | const AutoGain() : super();
44 |
45 | FilterParam get targetRms => FilterParam(
46 | filterType,
47 | AutoGainEnum.targetRms.index,
48 | AutoGainEnum.targetRms.min,
49 | AutoGainEnum.targetRms.max,
50 | );
51 |
52 | FilterParam get attackTime => FilterParam(
53 | filterType,
54 | AutoGainEnum.attackTime.index,
55 | AutoGainEnum.attackTime.min,
56 | AutoGainEnum.attackTime.max,
57 | );
58 |
59 | FilterParam get releaseTime => FilterParam(
60 | filterType,
61 | AutoGainEnum.releaseTime.index,
62 | AutoGainEnum.releaseTime.min,
63 | AutoGainEnum.releaseTime.max,
64 | );
65 |
66 | FilterParam get gainSmoothing => FilterParam(
67 | filterType,
68 | AutoGainEnum.gainSmoothing.index,
69 | AutoGainEnum.gainSmoothing.min,
70 | AutoGainEnum.gainSmoothing.max,
71 | );
72 |
73 | FilterParam get maxGain => FilterParam(
74 | filterType,
75 | AutoGainEnum.maxGain.index,
76 | AutoGainEnum.maxGain.min,
77 | AutoGainEnum.maxGain.max,
78 | );
79 |
80 | FilterParam get minGain => FilterParam(
81 | filterType,
82 | AutoGainEnum.minGain.index,
83 | AutoGainEnum.minGain.min,
84 | AutoGainEnum.minGain.max,
85 | );
86 | }
87 |
--------------------------------------------------------------------------------
/lib/src/filters/echo_cancellation.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: public_member_api_docs
2 | import 'package:flutter_recorder/src/filters/filters.dart';
3 |
4 | enum EchoCancellationEnum {
5 | echoDelayMs,
6 | echoAttenuation;
7 |
8 | final List _defs = const [50, 0.7];
9 | final List _mins = const [0, 0];
10 | final List _maxs = const [1000, 1];
11 |
12 | double get min => _mins[index];
13 | double get max => _maxs[index];
14 | double get def => _defs[index];
15 |
16 | @override
17 | String toString() => switch (this) {
18 | EchoCancellationEnum.echoDelayMs => 'Echo Delay (ms)',
19 | EchoCancellationEnum.echoAttenuation => 'Echo Attenuation',
20 | };
21 | }
22 |
23 | abstract class _EchoCancellationInternal extends FilterBase {
24 | const _EchoCancellationInternal()
25 | : super(RecorderFilterType.echoCancellation);
26 |
27 | EchoCancellationEnum get queryEchoDelayMs => EchoCancellationEnum.echoDelayMs;
28 | EchoCancellationEnum get queryEchoAttenuation =>
29 | EchoCancellationEnum.echoAttenuation;
30 | }
31 |
32 | class EchoCancellation extends _EchoCancellationInternal {
33 | const EchoCancellation() : super();
34 |
35 | FilterParam get echoDelayMs => FilterParam(
36 | filterType,
37 | EchoCancellationEnum.echoDelayMs.index,
38 | EchoCancellationEnum.echoDelayMs.min,
39 | EchoCancellationEnum.echoDelayMs.max,
40 | );
41 |
42 | FilterParam get echoAttenuation => FilterParam(
43 | filterType,
44 | EchoCancellationEnum.echoAttenuation.index,
45 | EchoCancellationEnum.echoAttenuation.min,
46 | EchoCancellationEnum.echoAttenuation.max,
47 | );
48 | }
49 |
--------------------------------------------------------------------------------
/lib/src/worker/worker.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: public_member_api_docs
2 |
3 | import 'dart:async';
4 | import 'dart:convert' show jsonEncode;
5 | import 'dart:js_interop';
6 |
7 | import 'package:meta/meta.dart';
8 | import 'package:web/web.dart' as web;
9 |
10 | @internal
11 | class WorkerController {
12 | web.Worker? _worker;
13 | StreamController? _outputController;
14 |
15 | /// Spawn a new web Worker with the given JS source (not used now).
16 | static Future spawn(String path) async {
17 | final JSAny newPath = (path.endsWith('.dart') ? '$path.js' : path).toJS;
18 | final controller = WorkerController()
19 | .._outputController = StreamController()
20 | .._worker = web.Worker(newPath);
21 |
22 | controller._worker?.onmessage = ((web.MessageEvent event) {
23 | controller._outputController?.add(event.data.dartify());
24 | }).toJS;
25 |
26 | return controller;
27 | }
28 |
29 | /// Set the worker created in WASM.
30 | /// This is used to get events sent from the native audio thread.
31 | void setWasmWorker(web.Worker wasmWorker) {
32 | _outputController = StreamController();
33 | _worker = wasmWorker;
34 | _worker!.onmessage = ((web.MessageEvent event) {
35 | _outputController?.add(event.data.dartify());
36 | }).toJS;
37 | }
38 |
39 | /// Not used with `RecorderModule.wasmWorker`.
40 | void sendMessage(dynamic message) {
41 | switch (message) {
42 | case Map():
43 | final mapEncoded = jsonEncode(message);
44 | _worker?.postMessage(mapEncoded.jsify());
45 | case num():
46 | _worker?.postMessage(message.toJS);
47 | case String():
48 | _worker?.postMessage(message.toJS);
49 | default:
50 | try {
51 | final messageJsifyed = (message as Object).jsify();
52 | _worker?.postMessage(messageJsifyed);
53 | } catch (e) {
54 | throw UnsupportedError(
55 | 'sendMessage(): Type ${message.runtimeType} unsupported',
56 | );
57 | }
58 | }
59 | }
60 |
61 | /// The receiver Stream.
62 | Stream onReceive() {
63 | return _outputController!.stream;
64 | }
65 |
66 | /// Kill the Worker.
67 | void kill() {
68 | _worker?.terminate();
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/linux/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # The Flutter tooling requires that developers have CMake 3.10 or later
2 | # installed. You should not increase this version, as doing so will cause
3 | # the plugin to fail to compile for some customers of the plugin.
4 | cmake_minimum_required(VERSION 3.10)
5 |
6 | # Project-level configuration.
7 | set(PROJECT_NAME "flutter_recorder")
8 | project(${PROJECT_NAME} LANGUAGES CXX)
9 | set(CMAKE_CXX_STANDARD 17)
10 | set(CMAKE_CXX_STANDARD_REQUIRED ON)
11 |
12 |
13 | if (UNIX AND NOT WIN32 AND NOT APPLE)
14 | if (CMAKE_SIZEOF_VOID_P MATCHES "8")
15 | set (LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement")
16 | mark_as_advanced (LIB_POSTFIX)
17 | endif ()
18 | endif ()
19 | if (MSVC)
20 | add_definitions (-D_CRT_SECURE_NO_WARNINGS)
21 | endif()
22 | if (NOT DEFINED LIB_POSTFIX)
23 | set (LIB_POSTFIX "")
24 | endif ()
25 |
26 | # list( APPEND CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wno-error -fPIC")
27 | # message("*************************************************1 ${CMAKE_CXX_FLAGS} *************************************************")
28 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wno-error -fPIC -msse2 -msse -mavx -mavx2 -mfma")
29 | # message("*************************************************2 ${CMAKE_CXX_FLAGS} *************************************************")
30 |
31 | # Invoke the build for native code shared with the other target platforms.
32 | # This can be changed to accommodate different builds.
33 | add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../src" "${CMAKE_CURRENT_BINARY_DIR}/shared")
34 |
35 | # List of absolute paths to libraries that should be bundled with the plugin.
36 | # This list could contain prebuilt libraries, or libraries created by an
37 | # external build triggered from this build file.
38 | set(flutter_recorder_bundled_libraries
39 | # Defined in ../src/CMakeLists.txt.
40 | # This can be changed to accommodate different builds.
41 | $
42 | PARENT_SCOPE
43 | )
44 |
--------------------------------------------------------------------------------
/macos/Classes/flutter_recorder.c:
--------------------------------------------------------------------------------
1 | // Relative import to be able to reuse the C sources.
2 | // See the comment in ../flutter_recorder.podspec for more information.
3 | #include "../../src/flutter_recorder.c"
4 |
--------------------------------------------------------------------------------
/macos/Classes/flutter_recorder.mm:
--------------------------------------------------------------------------------
1 | // Relative import to be able to reuse the C sources.
2 | // See the comment in ../flutter_recorder.podspec for more information.
3 | #include "../../src/flutter_recorder.cpp"
4 |
5 | #include "../../src/analyzer.cpp"
6 | #include "../../src/capture.cpp"
7 | #include "../../src/fft/soloud_fft.cpp"
8 | #include "../../src/filters/filters.cpp"
9 | #include "../../src/filters/autogain.cpp"
10 | #include "../../src/filters/echo_cancellation.cpp"
11 |
--------------------------------------------------------------------------------
/macos/flutter_recorder.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
3 | # Run `pod lib lint flutter_recorder.podspec` to validate before publishing.
4 | #
5 | Pod::Spec.new do |s|
6 | s.name = 'flutter_recorder'
7 | s.version = '0.0.1'
8 | s.summary = 'A new Flutter FFI plugin project.'
9 | s.description = <<-DESC
10 | A new Flutter FFI plugin project.
11 | DESC
12 | s.homepage = 'http://example.com'
13 | s.license = { :file => '../LICENSE' }
14 | s.author = { 'Your Company' => 'email@example.com' }
15 |
16 | # This will ensure the source files in Classes/ are included in the native
17 | # builds of apps using this FFI plugin. Podspec does not support relative
18 | # paths, so Classes contains a forwarder C file that relatively imports
19 | # `../src/*` so that the C sources can be shared among all target platforms.
20 | s.source = { :path => '.' }
21 | s.source_files = 'Classes/**/*'
22 | s.dependency 'FlutterMacOS'
23 |
24 | s.platform = :osx, '10.11'
25 | s.pod_target_xcconfig = {
26 | 'DEFINES_MODULE' => 'YES',
27 | "CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
28 | # Enhanced optimization flags
29 | 'OTHER_CFLAGS' => '-O3 -ffast-math -march=native -mtune=native -ffast-math -flto -funroll-loops -pthread -Wno-strict-prototypes',
30 | 'OTHER_CPLUSPLUSFLAGS' => '-O3 -ffast-math -march=native -mtune=native -ffast-math -flto -funroll-loops -pthread -Wno-strict-prototypes',
31 | 'GCC_OPTIMIZATION_LEVEL' => '3',
32 | # Add audio and threading optimization flags
33 | 'GCC_PREPROCESSOR_DEFINITIONS' => 'MA_NO_RUNTIME_LINKING=1 NDEBUG=1 _REENTRANT=1',
34 | 'HEADER_SEARCH_PATHS' => '$(inherited) $(PODS_TARGET_SRCROOT)/src'
35 | }
36 | s.swift_version = '5.0'
37 | s.framework = ['CoreAudio', 'AudioToolbox', 'AVFoundation']
38 | end
39 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_recorder
2 | description: >-
3 | A low-level audio recorder plugin which uses miniaudio as
4 | backend. Detect silence and save to WAV audio file. Audio
5 | wave, FFT and volume level can be get in real-time.
6 | version: 1.1.1
7 | issue_tracker: https://github.com/alnitak/flutter_recorder/issues
8 | homepage: https://github.com/alnitak/flutter_recorder
9 | maintainer: Marco Bavagnoli (@lildeimos)
10 | platforms:
11 | android:
12 | ios:
13 | linux:
14 | macos:
15 | windows:
16 | web:
17 | topics:
18 | - audio
19 | - recorder
20 | - visualizer
21 |
22 | screenshots:
23 | - description: "flutter_recording logo"
24 | path: images/recorder.png
25 |
26 | environment:
27 | sdk: ^3.5.1
28 | flutter: '>=3.3.0'
29 |
30 | dependencies:
31 | ffi: ^2.1.3
32 | flutter:
33 | sdk: flutter
34 | logging: ^1.3.0
35 | meta: ^1.12.0
36 | plugin_platform_interface: ^2.0.2
37 | web: ^1.1.0
38 |
39 | dev_dependencies:
40 | ffigen: ^13.0.0
41 | flutter_lints: ^4.0.0
42 | flutter_test:
43 | sdk: flutter
44 | very_good_analysis: ^6.0.0
45 |
46 | flutter:
47 | plugin:
48 | platforms:
49 | android:
50 | ffiPlugin: true
51 | ios:
52 | ffiPlugin: true
53 | linux:
54 | ffiPlugin: true
55 | macos:
56 | ffiPlugin: true
57 | windows:
58 | ffiPlugin: true
59 | web:
60 | default_package: true
61 |
62 | assets:
63 | # These assets are only needed for the web platform.
64 | # Waiting for https://github.com/flutter/flutter/issues/65065 and
65 | # https://github.com/flutter/flutter/issues/8230 to be addressed.
66 | # to make a conditional build.
67 | - web/worker.dart.js
68 | - web/init_recorder_module.dart.js
69 | - web/libflutter_recorder_plugin.js
70 | - web/libflutter_recorder_plugin.wasm
71 |
72 | funding:
73 | - https://github.com/sponsors/alnitak
74 |
--------------------------------------------------------------------------------
/src/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # The Flutter tooling requires that developers have CMake 3.10 or later
2 | # installed. You should not increase this version, as doing so will cause
3 | # the plugin to fail to compile for some customers of the plugin.
4 | cmake_minimum_required(VERSION 3.10)
5 |
6 | project(flutter_recorder_library VERSION 0.0.1 LANGUAGES CXX)
7 | set(CMAKE_CXX_STANDARD 17)
8 | set(CMAKE_CXX_STANDARD_REQUIRED ON)
9 |
10 | include_directories(${CMAKE_CURRENT_SOURCE_DIR})
11 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/fft)
12 |
13 | add_library(flutter_recorder SHARED
14 | "flutter_recorder.cpp"
15 | "analyzer.cpp"
16 | "capture.cpp"
17 | "fft/soloud_fft.cpp"
18 | "filters/filters.cpp"
19 | "filters/autogain.cpp"
20 | "filters/echo_cancellation.cpp"
21 | )
22 |
23 | set_target_properties(flutter_recorder PROPERTIES
24 | PUBLIC_HEADER flutter_recorder.h
25 | OUTPUT_NAME "flutter_recorder"
26 | )
27 |
28 | target_compile_definitions(flutter_recorder PUBLIC DART_SHARED_LIB)
29 |
30 | if (ANDROID)
31 | # Support Android 15 16k page size.
32 | target_link_options(flutter_recorder PRIVATE "-Wl,-z,max-page-size=16384")
33 | target_link_libraries(flutter_recorder log)
34 | endif()
35 |
--------------------------------------------------------------------------------
/src/analyzer.h:
--------------------------------------------------------------------------------
1 | #ifndef ANALYZER_H
2 | #define ANALYZER_H
3 |
4 | #include "common.h"
5 |
6 | class Analyzer {
7 | public:
8 | // Modified constructor to include sample rate
9 | Analyzer(int windowSize, float sampleRate = 44100.0f);
10 | ~Analyzer();
11 |
12 | // float *calcFFT(float *waveData);
13 | float *calcFFT(float *waveData, float minFrequency = 20.0f, float maxFrequency = 16000.0f);
14 | void setWindowsSize(int fftWindowSize);
15 | void setSmoothing(float smooth);
16 |
17 | private:
18 | /// @brief elaborate FFT data with the Blackman windowing algorithm
19 | void blackmanWindow(float *samples, const float *waveData) const;
20 |
21 | /// @brief elaborate FFT data with the hanning windowing algorithm
22 | void hanningWindow(float* samples, const float *waveData) const;
23 |
24 | /// @brief elaborate FFT data with the hamm windowing algorithm
25 | void hammingWindow(float* samples, const float *waveData) const;
26 |
27 | void gaussWindow(float *samples, const float *waveData) const;
28 |
29 | /// array used by filling it with audio samples and calculate FFT
30 | float temp[1024]; // Needs to be 1024 for fft1024
31 |
32 | /// contains latest calulated FFT
33 | float FFTData[256];
34 |
35 | /// window size used by windowing algorithms.
36 | /// The size is optained when the player has been initialized
37 | /// and is given by the backend buffer size
38 | /// over its number of channels (maybe@#`#@`#!!)
39 | int mWindowSize;
40 |
41 | /// parameters for the Blackman windowing algorithm
42 | float alpha;
43 | float a0;
44 | float a1;
45 | float a2;
46 | float fftSmoothing;
47 |
48 | float sampleRate;
49 | float getBinFrequency(int binIndex) const;
50 |
51 | float minFreq; // Minimum frequency to analyze
52 | float maxFreq; // Maximum frequency to analyze
53 | int minBin; // Minimum FFT bin corresponding to minFreq
54 | int maxBin; // Maximum FFT bin corresponding to maxFreq
55 |
56 | int freqToBin(float frequency) const;
57 | int mapFrequencyToFFTDataIndex(float freq) const;
58 | float mapFFTDataIndexToFrequency(int index) const;
59 | };
60 |
61 | #endif // ANALYZER_H
62 |
--------------------------------------------------------------------------------
/src/circular_buffer.h:
--------------------------------------------------------------------------------
1 | #ifndef CIRCULAR_BUFFER_H
2 | #define CIRCULAR_BUFFER_H
3 |
4 | #include "common.h"
5 | #include
6 | #include
7 | #ifndef _IS_WIN_
8 | #include
9 | #endif
10 |
11 | template
12 | class CircularBuffer
13 | {
14 | private:
15 | std::vector buffer;
16 | unsigned int maxSize;
17 | unsigned int currentSize;
18 | unsigned int head;
19 | unsigned int tail;
20 |
21 | public:
22 | CircularBuffer(unsigned int size) : buffer(size),
23 | maxSize(size),
24 | currentSize(0),
25 | head(0),
26 | tail(0) {}
27 |
28 | int size() { return currentSize; }
29 |
30 | void push(const std::vector &values)
31 | {
32 | unsigned int numValues = (unsigned int)values.size();
33 |
34 | // Check if the buffer is full
35 | if (currentSize + numValues > maxSize)
36 | {
37 | unsigned int numToRemove = currentSize + numValues - maxSize;
38 | head = (head + numToRemove) % maxSize;
39 | currentSize -= numToRemove;
40 | }
41 |
42 | unsigned int numTail = std::min(numValues, maxSize - tail);
43 |
44 | // Copy values to the tail of the buffer
45 | std::copy(values.begin(), values.begin() + numTail, buffer.begin() + tail);
46 |
47 | // If there are remaining values, copy them to the head of the buffer
48 | if (numValues > numTail)
49 | {
50 | std::copy(values.begin() + numTail, values.end(), buffer.begin());
51 | }
52 |
53 | tail = (tail + numValues) % maxSize;
54 | currentSize = std::min(currentSize + numValues, maxSize);
55 | }
56 |
57 | std::vector pop(unsigned int numValues)
58 | {
59 | numValues = std::min(numValues, currentSize);
60 | std::vector poppedValues(numValues);
61 |
62 | unsigned int numTail = std::min(numValues, maxSize - head);
63 |
64 | // Copy values from the head of the buffer
65 | std::copy(buffer.begin() + head, buffer.begin() + head + numTail, poppedValues.begin());
66 |
67 | // If there are remaining values, copy them from the tail of the buffer
68 | if (numValues > numTail)
69 | {
70 | std::copy(buffer.begin(), buffer.begin() + numValues - numTail, poppedValues.begin() + numTail);
71 | }
72 |
73 | head = (head + numValues) % maxSize;
74 | currentSize -= numValues;
75 |
76 | return poppedValues;
77 | }
78 |
79 | void print() const
80 | {
81 | std::cout << "N: " << currentSize << " - ";
82 | for (unsigned int i = 0; i < currentSize; ++i)
83 | {
84 | unsigned int index = (head + i) % maxSize;
85 | std::cout << buffer[index] << " ";
86 | }
87 | std::cout << std::endl;
88 | }
89 | };
90 |
91 | #endif // CIRCULAR_BUFFER_H
92 |
--------------------------------------------------------------------------------
/src/common.h:
--------------------------------------------------------------------------------
1 | #ifndef COMMON_H
2 | #define COMMON_H
3 |
4 |
5 | #ifdef __ANDROID__
6 | #define _IS_ANDROID_
7 | #elif __linux__
8 | #define _IS_LINUX_
9 | #elif _WIN32 | WIN32 | __WIN32 | _WIN64
10 | #define _IS_WIN_
11 | #elif __APPLE__
12 | #include
13 | #define _IS_MACOS_
14 | /// these targets doesn't work!
15 | #ifdef TARGET_OS_IPHONE
16 | // iOS
17 | #elif TARGET_IPHONE_SIMULATOR
18 | // iOS Simulator
19 | #elif TARGET_OS_MAC
20 | #define _IS_MACOS_
21 | #else
22 | // Unsupported platform
23 | #endif
24 | #else
25 | #define _WASM_
26 | #endif
27 |
28 | #ifdef _IS_WIN_
29 | #define NOMINMAX
30 | #include
31 | #define FFI_PLUGIN_EXPORT __declspec(dllexport)
32 | #endif
33 |
34 | #ifdef _IS_ANDROID_
35 | #include
36 | #endif
37 |
38 | #if defined _IS_LINUX_ || defined _IS_MACOS_ || defined _IS_ANDROID_ || defined _WASM_
39 | #include
40 | #include
41 | #include
42 | #define FFI_PLUGIN_EXPORT __attribute__((visibility("default"))) __attribute__((used))
43 | #endif
44 |
45 | typedef void (*dartSilenceChangedCallback_t)(bool *, float *);
46 |
47 | typedef void (*dartStreamDataCallback_t)(const unsigned char * data, const int dataLength);
48 |
49 | // To be used by `NativeCallable` since it will be called inside the audio thread,
50 | // these functions must return void.
51 | extern void (*dartSilenceChangedCallback)(bool *, float *);
52 |
53 | // Native functions can be called from any thread. It will eventually call `dartSilenceChangedCallback`.
54 | extern void (*nativeSilenceChangedCallback)(bool *, float *);
55 |
56 | extern void (*dartStreamDataCallback)(const unsigned char * data, const int dataLength);
57 |
58 | extern void (*nativeStreamDataCallback)(const unsigned char * data, const int dataLength);
59 |
60 | #endif // COMMON_H
61 |
--------------------------------------------------------------------------------
/src/enums.h:
--------------------------------------------------------------------------------
1 | #ifndef ENUMS_H
2 | #define ENUMS_H
3 |
4 | /// Possible capture errors
5 | typedef enum CaptureErrors
6 | {
7 | /// No error
8 | captureNoError = 0,
9 | /// The capture device has failed to initialize.
10 | captureInitFailed = 1,
11 | /// The capture device has not yet been initialized.
12 | captureNotInited = 2,
13 | /// Failed to start the device.
14 | failedToStartDevice = 3,
15 | /// Failed to initialize wav recording.
16 | failedToInitializeRecording = 4,
17 | /// Invalid arguments while initializing wav recording.
18 | invalidArgs = 5,
19 | /// Failed to write wav file.
20 | failedToWriteWav = 6,
21 | /// Filter not found
22 | filterNotFound = 7,
23 | /// The filter has already been added.
24 | filterAlreadyAdded = 8,
25 | /// Error getting filter parameter.
26 | filterParameterGetError = 9
27 | } CaptureErrorsInternal_t;
28 |
29 | typedef enum PCMFormat
30 | {
31 | pcm_u8,
32 | pcm_s16,
33 | pcm_s24,
34 | pcm_s32,
35 | pcm_f32
36 | } PCMFormatInternal_t;
37 |
38 | typedef enum RecorderFilterType
39 | {
40 | autogain,
41 | echoCancellation
42 | } FilterType_t;
43 |
44 | #endif // ENUMS_H
--------------------------------------------------------------------------------
/src/fft/soloud_fft.h:
--------------------------------------------------------------------------------
1 | /*
2 | SoLoud audio engine
3 | Copyright (c) 2013-2015 Jari Komppa
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 |
18 | 2. Altered source versions must be plainly marked as such, and must not be
19 | misrepresented as being the original software.
20 |
21 | 3. This notice may not be removed or altered from any source
22 | distribution.
23 | */
24 |
25 | #ifndef SOLOUD_FFT_H
26 | #define SOLOUD_FFT_H
27 |
28 | namespace FFT
29 | {
30 | #ifdef __cplusplus
31 | extern "C"
32 | {
33 | #endif
34 | // Perform 1024 unit FFT. Buffer must have 1024 floats, and will be overwritten
35 | void fft1024(float *aBuffer);
36 |
37 | // Perform 256 unit FFT. Buffer must have 256 floats, and will be overwritten
38 | void fft256(float *aBuffer);
39 |
40 | // Perform 256 unit IFFT. Buffer must have 256 floats, and will be overwritten
41 | void ifft256(float *aBuffer);
42 |
43 | // Generic (slower) power of two FFT. Buffer is overwritten.
44 | void fft(float *aBuffer, unsigned int aBufferLength);
45 |
46 | // Generic (slower) power of two IFFT. Buffer is overwritten.
47 | void ifft(float *aBuffer, unsigned int aBufferLength);
48 |
49 | #ifdef __cplusplus
50 | }
51 | #endif
52 | };
53 |
54 | #endif
--------------------------------------------------------------------------------
/src/filters/echo_cancellation.h:
--------------------------------------------------------------------------------
1 | #ifndef ECHO_CANCELLATION_H
2 | #define ECHO_CANCELLATION_H
3 |
4 | #include "generic_filter.h"
5 |
6 | #include
7 | #include
8 |
9 | class EchoCancellation : public GenericFilter
10 | {
11 | public:
12 | // Enum for filter parameters
13 | enum Params
14 | {
15 | EchoDelayMs,
16 | EchoAttenuation,
17 | ParamCount // Always keep this last; indicates the number of parameters
18 | };
19 |
20 | EchoCancellation() {};
21 | EchoCancellation(unsigned int sampleRate);
22 |
23 | int getParamCount() const override;
24 | float getParamMax(int param) const override;
25 | float getParamMin(int param) const override;
26 | float getParamDef(int param) const override;
27 | std::string getParamName(int param) const override;
28 | void setParamValue(int param, float value) override;
29 | float getParamValue(int param) const override;
30 |
31 | void process(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) override;
32 |
33 | private:
34 | // Struct to hold parameter information
35 | struct ParamInfo
36 | {
37 | float defaultVal;
38 | float minVal;
39 | float maxVal;
40 | };
41 |
42 | unsigned int mDelaySamples;
43 | std::vector mBuffer; // Circular buffer for storing past samples
44 | unsigned int mWriteIndex;
45 |
46 | // Parameter metadata
47 | std::unordered_map mParams;
48 |
49 | // Parameter values
50 | std::vector mValues;
51 |
52 | template
53 | void processAudio(void *pInput, ma_uint32 frameCount, unsigned int channels);
54 |
55 | void processAudioS24(void *pInput, ma_uint32 frameCount, unsigned int channels);
56 |
57 | float normalizeSample(unsigned char sample);
58 |
59 | float normalizeSample(int16_t sample);
60 |
61 | float normalizeSample(int32_t sample);
62 |
63 | float normalizeSample(float sample);
64 |
65 | template
66 | T denormalizeSample(float sample);
67 |
68 | // Validate parameter index
69 | void validateParam(int param) const;
70 | };
71 |
72 | #endif // ECHO_CANCELLATION_H
--------------------------------------------------------------------------------
/src/filters/filters.h:
--------------------------------------------------------------------------------
1 | #ifndef FILTERS_H
2 | #define FILTERS_H
3 |
4 | #include "../enums.h"
5 | #include "generic_filter.h"
6 |
7 | #include
8 | #include
9 | #include
10 |
11 | struct FilterObject
12 | {
13 | RecorderFilterType type;
14 | std::unique_ptr filter;
15 |
16 | FilterObject(RecorderFilterType t, std::unique_ptr f)
17 | : type(t), filter(std::move(f)) {}
18 |
19 | bool operator==(RecorderFilterType const &i)
20 | {
21 | return (i == type);
22 | }
23 | };
24 |
25 | /// Class to manage global filters.
26 | class Filters
27 | {
28 | /// Setting the global filter to NULL will clear the global filter.
29 | /// The default maximum number of global filters active is 4, but this
30 | /// can be changed in a global constant in soloud.h (and rebuilding SoLoud).
31 | public:
32 | Filters(unsigned int samplerate);
33 | ~Filters();
34 |
35 | /// Return -1 if the filter is not active or its index
36 | int isFilterActive(RecorderFilterType filter);
37 |
38 | CaptureErrors addFilter(RecorderFilterType filterType);
39 |
40 | CaptureErrors removeFilter(RecorderFilterType filterType);
41 |
42 | std::vector getFilterParamNames(RecorderFilterType filterType);
43 |
44 | /// If [handle]==0 the operation is done to global filters.
45 | void setFilterParams(RecorderFilterType filterType, int attributeId, float value);
46 |
47 | /// If [handle]==0 the operation is done to global filters.
48 | float getFilterParams(RecorderFilterType filterType, int attributeId);
49 |
50 | unsigned int mSamplerate;
51 |
52 | std::vector> filters;
53 | };
54 |
55 | #endif // PLAYER_H
56 |
--------------------------------------------------------------------------------
/src/filters/generic_filter.h:
--------------------------------------------------------------------------------
1 | #ifndef GENERIC_FILTERS_H
2 | #define GENERIC_FILTERS_H
3 |
4 | #include "../miniaudio.h"
5 |
6 | #include
7 |
8 | // Abstract Base Class for Generic Filters
9 | class GenericFilter {
10 | public:
11 | virtual ~GenericFilter() = default;
12 |
13 | // Methods for managing parameters
14 | virtual int getParamCount() const = 0;
15 | virtual float getParamMax(int param) const = 0;
16 | virtual float getParamMin(int param) const = 0;
17 | virtual float getParamDef(int param) const = 0;
18 | virtual std::string getParamName(int param) const = 0;
19 | virtual void setParamValue(int param, float value) = 0;
20 | virtual float getParamValue(int param) const = 0;
21 |
22 | // Pure virtual method to apply the filter (to be implemented by derived classes)
23 | virtual void process(void* pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) = 0;
24 | };
25 |
26 | #endif // GENERIC_FILTERS_H
--------------------------------------------------------------------------------
/src/flutter_recorder.c:
--------------------------------------------------------------------------------
1 | #include "flutter_recorder.h"
2 |
3 | // A very short-lived native function.
4 | //
5 | // For very short-lived functions, it is fine to call them on the main isolate.
6 | // They will block the Dart execution while running the native function, so
7 | // only do this for native functions which are guaranteed to be short-lived.
8 | FFI_PLUGIN_EXPORT int sum(int a, int b) { return a + b; }
9 |
10 | // A longer-lived native function, which occupies the thread calling it.
11 | //
12 | // Do not call these kind of native functions in the main isolate. They will
13 | // block Dart execution. This will cause dropped frames in Flutter applications.
14 | // Instead, call these native functions on a separate isolate.
15 | FFI_PLUGIN_EXPORT int sum_long_running(int a, int b) {
16 | // Simulate work.
17 | #if _WIN32
18 | Sleep(5000);
19 | #else
20 | usleep(5000 * 1000);
21 | #endif
22 | return a + b;
23 | }
24 |
--------------------------------------------------------------------------------
/wasm.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | cd web
5 | sh ./compile_wasm.sh
6 |
--------------------------------------------------------------------------------
/web.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | cd web
5 | sh ./compile_worker.sh
6 |
--------------------------------------------------------------------------------
/web/compile_init_recorder_module.sh:
--------------------------------------------------------------------------------
1 | dart compile js -O3 -o init_recorder_module.dart.js ./init_recorder_module.dart
2 |
--------------------------------------------------------------------------------
/web/compile_wasm.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | rm -f libflutter_recorder_plugin.*
5 | rm -rf build
6 | mkdir build
7 | cd build
8 |
9 | #https://emscripten.org/docs/tools_reference/emcc.html
10 | #-g3 #keep debug info, including JS whitespace, function names
11 |
12 | em++ -O3 \
13 | -I ../../src/fft \
14 | -I ../../src \
15 | ../../src/flutter_recorder.cpp \
16 | ../../src/capture.cpp \
17 | ../../src/analyzer.cpp \
18 | ../../src/fft/soloud_fft.cpp \
19 | ../../src/filters/filters.cpp \
20 | ../../src/filters/autogain.cpp \
21 | ../../src/filters/echo_cancellation.cpp \
22 | -s MODULARIZE=1 -s EXPORT_NAME="'RecorderModule'" \
23 | -msimd128 -msse3 \
24 | -s "EXPORTED_RUNTIME_METHODS=['ccall','cwrap']" \
25 | -s "EXPORTED_FUNCTIONS=['_free', '_malloc']" \
26 | -s EXPORT_ALL=1 \
27 | -s NO_EXIT_RUNTIME=1 \
28 | -s SAFE_HEAP=1 \
29 | -s STACK_SIZE=4194304 \
30 | -s ALLOW_TABLE_GROWTH=1 \
31 | -s ALLOW_MEMORY_GROWTH=1 \
32 | -o ../../web/libflutter_recorder_plugin.js
33 |
--------------------------------------------------------------------------------
/web/compile_worker.sh:
--------------------------------------------------------------------------------
1 | dart compile js -O3 -o worker.dart.js ./worker.dart
2 |
3 |
--------------------------------------------------------------------------------
/web/init_recorder_module.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: avoid_print
2 |
3 | import 'dart:js_interop';
4 |
5 | /// Module to initialized the WASM RecorderModule before the app starts.
6 | /// It must be compiled with
7 | /// `dart compile js -O3 -o init_recorder_module.dart.js ./init_recorder_module.dart`
8 | /// and the resulting `init_recorder_module.dart.js` must be added as a script
9 | /// in the `index.html` with also `libflutter_recorder_plugin.js`:
10 | /// ```hmtl
11 | ///
12 | ///
13 | /// ```
14 |
15 | @JS('RecorderModule')
16 | external JSObject getRecorderModule();
17 |
18 | @JS('RecorderModule')
19 | external JSObject recorderModuleConstructor(); // Represents the IIFE
20 |
21 | @JS('self.RecorderModule') // Attach RecorderModule to the global scope
22 | external set globalRecorderModule(JSObject module);
23 |
24 | Future initializeRecorderModule() async {
25 | try {
26 | // Convert JavaScript Promise to Dart Future
27 | final modulePromise = recorderModuleConstructor() as JSPromise;
28 | final module = await JSPromiseToFuture(modulePromise).toDart;
29 | if (module == null) {
30 | throw Exception('Module initialization failed: Module is null');
31 | }
32 | globalRecorderModule = module as JSObject; // Make it globally accessible
33 | print('RecorderModule initialized and set globally.');
34 | return module; // Return the initialized module
35 | } catch (e) {
36 | print('Failed to initialize RecorderModule: $e');
37 | rethrow;
38 | }
39 | }
40 |
41 | /// The main Web Worker
42 | void main() async {
43 | await initializeRecorderModule();
44 | }
45 |
--------------------------------------------------------------------------------
/web/libflutter_recorder_plugin.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alnitak/flutter_recorder/44e0074ab2cf35487180b5be4338defe82688484/web/libflutter_recorder_plugin.wasm
--------------------------------------------------------------------------------
/web/worker.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:js_interop';
3 | import 'dart:js_interop_unsafe';
4 |
5 | import 'package:web/web.dart' as web;
6 |
7 | // Masked type: ServiceWorkerGlobalScope
8 | @JS('self')
9 | external JSObject get globalScopeSelf;
10 |
11 | @JS('self.importScript')
12 | // ignore: unused_element
13 | external JSAny _importScript(String path);
14 |
15 | void jsSendMessage(dynamic m) {
16 | globalContext.callMethod('postMessage'.toJS, (m as Object).jsify());
17 | }
18 |
19 | Stream callbackToStream(
20 | JSObject object,
21 | String name,
22 | T Function(J jsValue) unwrapValue,
23 | ) {
24 | final controller = StreamController.broadcast(sync: true);
25 |
26 | void eventFunction(JSAny event) {
27 | controller.add(unwrapValue(event as J));
28 | }
29 |
30 | object.setProperty(
31 | name.toJS,
32 | eventFunction.toJS,
33 | );
34 | return controller.stream;
35 | }
36 |
37 | class Worker {
38 | Worker() {
39 | _outputController = StreamController();
40 | callbackToStream(globalScopeSelf, 'onmessage', (web.MessageEvent e) {
41 | final data = (e as JSObject).getProperty('data'.toJS);
42 | _outputController.add(data);
43 | });
44 | }
45 | late StreamController _outputController;
46 |
47 | Stream onReceive() => _outputController.stream;
48 |
49 | void sendMessage(dynamic message) {
50 | jsSendMessage(message);
51 | }
52 | }
53 |
54 | /// The main Web Worker
55 | void main() async {
56 | // print('Worker created.\n');
57 | final worker = Worker();
58 | worker.onReceive().listen((data) {
59 | try {
60 | // ignore: avoid_print
61 | // print('Worker.js: Received $data PARSED TO $parseMap\n');
62 | worker.sendMessage(data);
63 | } catch (e) {
64 | // ignore: avoid_print
65 | print("Received data from WASM worker but it's not a String!\n");
66 | }
67 | });
68 | }
69 |
--------------------------------------------------------------------------------
/windows/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/
2 |
3 | # Visual Studio user-specific files.
4 | *.suo
5 | *.user
6 | *.userosscache
7 | *.sln.docstates
8 |
9 | # Visual Studio build-related files.
10 | x64/
11 | x86/
12 |
13 | # Visual Studio cache files
14 | # files ending in .cache can be ignored
15 | *.[Cc]ache
16 | # but keep track of directories ending in .cache
17 | !*.[Cc]ache/
18 |
--------------------------------------------------------------------------------
/windows/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # The Flutter tooling requires that developers have a version of Visual Studio
2 | # installed that includes CMake 3.14 or later. You should not increase this
3 | # version, as doing so will cause the plugin to fail to compile for some
4 | # customers of the plugin.
5 | cmake_minimum_required(VERSION 3.14)
6 |
7 | # Project-level configuration.
8 | set(PROJECT_NAME "flutter_recorder")
9 | project(${PROJECT_NAME} LANGUAGES CXX)
10 | set(CMAKE_CXX_STANDARD 17)
11 | set(CMAKE_CXX_STANDARD_REQUIRED ON)
12 |
13 |
14 | if (UNIX AND NOT WIN32 AND NOT APPLE)
15 | if (CMAKE_SIZEOF_VOID_P MATCHES "8")
16 | set (LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement")
17 | mark_as_advanced (LIB_POSTFIX)
18 | endif ()
19 | endif ()
20 | if (MSVC)
21 | add_definitions (-D_CRT_SECURE_NO_WARNINGS)
22 | endif()
23 | if (NOT DEFINED LIB_POSTFIX)
24 | set (LIB_POSTFIX "")
25 | endif ()
26 |
27 | # list( APPEND CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wno-error -fPIC")
28 | message("*************************************************1 ${CMAKE_CXX_FLAGS} *************************************************")
29 | #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wno-error -fPIC -msse2 -msse -mavx -mavx2 -mfma")
30 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX-")
31 | message("*************************************************2 ${CMAKE_CXX_FLAGS} *************************************************")
32 |
33 |
34 | # Invoke the build for native code shared with the other target platforms.
35 | # This can be changed to accommodate different builds.
36 | add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../src" "${CMAKE_CURRENT_BINARY_DIR}/shared")
37 |
38 | # List of absolute paths to libraries that should be bundled with the plugin.
39 | # This list could contain prebuilt libraries, or libraries created by an
40 | # external build triggered from this build file.
41 | set(flutter_recorder_bundled_libraries
42 | # Defined in ../src/CMakeLists.txt.
43 | # This can be changed to accommodate different builds.
44 | $
45 | PARENT_SCOPE
46 | )
47 |
--------------------------------------------------------------------------------