@clarionhq/recorder 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/android/build.gradle +97 -0
  4. package/android/gradle.properties +4 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/cpp/cpp-adapter.cpp +7 -0
  7. package/android/src/main/java/com/clarionhq/recorder/AudioLevelMeter.kt +38 -0
  8. package/android/src/main/java/com/clarionhq/recorder/ClarionRecorderPackage.kt +27 -0
  9. package/android/src/main/java/com/clarionhq/recorder/EncodeFile.kt +62 -0
  10. package/android/src/main/java/com/clarionhq/recorder/RecorderConfig.kt +33 -0
  11. package/android/src/main/java/com/clarionhq/recorder/RecorderConstants.kt +16 -0
  12. package/android/src/main/java/com/clarionhq/recorder/RecorderSession.kt +336 -0
  13. package/android/src/main/java/com/clarionhq/recorder/RecorderTypes.kt +29 -0
  14. package/android/src/main/java/com/margelo/nitro/clarion/recorder/HybridClarionRecorder.kt +174 -0
  15. package/clarionhq-recorder.podspec +31 -0
  16. package/ios/AudioLevelMeter.swift +37 -0
  17. package/ios/EncodeFile.swift +69 -0
  18. package/ios/HybridClarionRecorder.swift +186 -0
  19. package/ios/RecorderConstants.swift +11 -0
  20. package/ios/RecorderSession.swift +278 -0
  21. package/ios/RecorderTypes.swift +41 -0
  22. package/lib/RecorderEngine.d.ts +31 -0
  23. package/lib/RecorderEngine.d.ts.map +1 -0
  24. package/lib/RecorderEngine.js +245 -0
  25. package/lib/RecorderEngine.js.map +1 -0
  26. package/lib/index.d.ts +4 -0
  27. package/lib/index.d.ts.map +1 -0
  28. package/lib/index.js +2 -0
  29. package/lib/index.js.map +1 -0
  30. package/lib/native.d.ts +3 -0
  31. package/lib/native.d.ts.map +1 -0
  32. package/lib/native.js +3 -0
  33. package/lib/native.js.map +1 -0
  34. package/lib/specs/ClarionRecorder.nitro.d.ts +49 -0
  35. package/lib/specs/ClarionRecorder.nitro.d.ts.map +1 -0
  36. package/lib/specs/ClarionRecorder.nitro.js +2 -0
  37. package/lib/specs/ClarionRecorder.nitro.js.map +1 -0
  38. package/nitro.json +24 -0
  39. package/nitrogen/generated/android/ClarionRecorder+autolinking.cmake +81 -0
  40. package/nitrogen/generated/android/ClarionRecorder+autolinking.gradle +27 -0
  41. package/nitrogen/generated/android/ClarionRecorderOnLoad.cpp +62 -0
  42. package/nitrogen/generated/android/ClarionRecorderOnLoad.hpp +34 -0
  43. package/nitrogen/generated/android/c++/JFunc_void_NativeRecorderError.hpp +78 -0
  44. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  45. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  46. package/nitrogen/generated/android/c++/JFunc_void_std__string_double_double_double.hpp +76 -0
  47. package/nitrogen/generated/android/c++/JHybridClarionRecorderSpec.cpp +207 -0
  48. package/nitrogen/generated/android/c++/JHybridClarionRecorderSpec.hpp +75 -0
  49. package/nitrogen/generated/android/c++/JNativeRecorderConfig.hpp +90 -0
  50. package/nitrogen/generated/android/c++/JNativeRecorderError.hpp +65 -0
  51. package/nitrogen/generated/android/c++/JNativeRecorderResult.hpp +77 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/ClarionRecorderOnLoad.kt +35 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/Func_void_NativeRecorderError.kt +80 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/Func_void_double_double.kt +80 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/Func_void_std__string.kt +80 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/Func_void_std__string_double_double_double.kt +80 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/HybridClarionRecorderSpec.kt +125 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/NativeRecorderConfig.kt +91 -0
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/NativeRecorderError.kt +61 -0
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/clarion/recorder/NativeRecorderResult.kt +76 -0
  61. package/nitrogen/generated/ios/ClarionRecorder+autolinking.rb +62 -0
  62. package/nitrogen/generated/ios/ClarionRecorder-Swift-Cxx-Bridge.cpp +89 -0
  63. package/nitrogen/generated/ios/ClarionRecorder-Swift-Cxx-Bridge.hpp +297 -0
  64. package/nitrogen/generated/ios/ClarionRecorder-Swift-Cxx-Umbrella.hpp +56 -0
  65. package/nitrogen/generated/ios/ClarionRecorderAutolinking.mm +33 -0
  66. package/nitrogen/generated/ios/ClarionRecorderAutolinking.swift +26 -0
  67. package/nitrogen/generated/ios/c++/HybridClarionRecorderSpecSwift.cpp +11 -0
  68. package/nitrogen/generated/ios/c++/HybridClarionRecorderSpecSwift.hpp +188 -0
  69. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  70. package/nitrogen/generated/ios/swift/Func_void_NativeRecorderError.swift +46 -0
  71. package/nitrogen/generated/ios/swift/Func_void_NativeRecorderResult.swift +46 -0
  72. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
  73. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  74. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  75. package/nitrogen/generated/ios/swift/Func_void_std__string_double_double_double.swift +46 -0
  76. package/nitrogen/generated/ios/swift/HybridClarionRecorderSpec.swift +67 -0
  77. package/nitrogen/generated/ios/swift/HybridClarionRecorderSpec_cxx.swift +354 -0
  78. package/nitrogen/generated/ios/swift/NativeRecorderConfig.swift +108 -0
  79. package/nitrogen/generated/ios/swift/NativeRecorderError.swift +39 -0
  80. package/nitrogen/generated/ios/swift/NativeRecorderResult.swift +54 -0
  81. package/nitrogen/generated/shared/c++/HybridClarionRecorderSpec.cpp +34 -0
  82. package/nitrogen/generated/shared/c++/HybridClarionRecorderSpec.hpp +84 -0
  83. package/nitrogen/generated/shared/c++/NativeRecorderConfig.hpp +116 -0
  84. package/nitrogen/generated/shared/c++/NativeRecorderError.hpp +91 -0
  85. package/nitrogen/generated/shared/c++/NativeRecorderResult.hpp +103 -0
  86. package/package.json +66 -8
  87. package/src/RecorderEngine.ts +298 -0
  88. package/src/index.ts +8 -0
  89. package/src/native.ts +5 -0
  90. package/src/specs/ClarionRecorder.nitro.ts +58 -0
  91. package/index.js +0 -1
@@ -0,0 +1,75 @@
1
+ ///
2
+ /// JFunc_void_double_double.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include <functional>
14
+ #include <NitroModules/JNICallable.hpp>
15
+
16
+ namespace margelo::nitro::clarion::recorder {
17
+
18
+ using namespace facebook;
19
+
20
+ /**
21
+ * Represents the Java/Kotlin callback `(rms: Double, peak: Double) -> Unit`.
22
+ * This can be passed around between C++ and Java/Kotlin.
23
+ */
24
+ struct JFunc_void_double_double: public jni::JavaClass<JFunc_void_double_double> {
25
+ public:
26
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/Func_void_double_double;";
27
+
28
+ public:
29
+ /**
30
+ * Invokes the function this `JFunc_void_double_double` instance holds through JNI.
31
+ */
32
+ void invoke(double rms, double peak) const {
33
+ static const auto method = javaClassStatic()->getMethod<void(double /* rms */, double /* peak */)>("invoke");
34
+ method(self(), rms, peak);
35
+ }
36
+ };
37
+
38
+ /**
39
+ * An implementation of Func_void_double_double that is backed by a C++ implementation (using `std::function<...>`)
40
+ */
41
+ class JFunc_void_double_double_cxx final: public jni::HybridClass<JFunc_void_double_double_cxx, JFunc_void_double_double> {
42
+ public:
43
+ static jni::local_ref<JFunc_void_double_double::javaobject> fromCpp(const std::function<void(double /* rms */, double /* peak */)>& func) {
44
+ return JFunc_void_double_double_cxx::newObjectCxxArgs(func);
45
+ }
46
+
47
+ public:
48
+ /**
49
+ * Invokes the C++ `std::function<...>` this `JFunc_void_double_double_cxx` instance holds.
50
+ */
51
+ void invoke_cxx(double rms, double peak) {
52
+ _func(rms, peak);
53
+ }
54
+
55
+ public:
56
+ [[nodiscard]]
57
+ inline const std::function<void(double /* rms */, double /* peak */)>& getFunction() const {
58
+ return _func;
59
+ }
60
+
61
+ public:
62
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/Func_void_double_double_cxx;";
63
+ static void registerNatives() {
64
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_double_double_cxx::invoke_cxx)});
65
+ }
66
+
67
+ private:
68
+ explicit JFunc_void_double_double_cxx(const std::function<void(double /* rms */, double /* peak */)>& func): _func(func) { }
69
+
70
+ private:
71
+ friend HybridBase;
72
+ std::function<void(double /* rms */, double /* peak */)> _func;
73
+ };
74
+
75
+ } // namespace margelo::nitro::clarion::recorder
@@ -0,0 +1,76 @@
1
+ ///
2
+ /// JFunc_void_std__string.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include <string>
14
+ #include <functional>
15
+ #include <NitroModules/JNICallable.hpp>
16
+
17
+ namespace margelo::nitro::clarion::recorder {
18
+
19
+ using namespace facebook;
20
+
21
+ /**
22
+ * Represents the Java/Kotlin callback `(state: String) -> Unit`.
23
+ * This can be passed around between C++ and Java/Kotlin.
24
+ */
25
+ struct JFunc_void_std__string: public jni::JavaClass<JFunc_void_std__string> {
26
+ public:
27
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/Func_void_std__string;";
28
+
29
+ public:
30
+ /**
31
+ * Invokes the function this `JFunc_void_std__string` instance holds through JNI.
32
+ */
33
+ void invoke(const std::string& state) const {
34
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* state */)>("invoke");
35
+ method(self(), jni::make_jstring(state));
36
+ }
37
+ };
38
+
39
+ /**
40
+ * An implementation of Func_void_std__string that is backed by a C++ implementation (using `std::function<...>`)
41
+ */
42
+ class JFunc_void_std__string_cxx final: public jni::HybridClass<JFunc_void_std__string_cxx, JFunc_void_std__string> {
43
+ public:
44
+ static jni::local_ref<JFunc_void_std__string::javaobject> fromCpp(const std::function<void(const std::string& /* state */)>& func) {
45
+ return JFunc_void_std__string_cxx::newObjectCxxArgs(func);
46
+ }
47
+
48
+ public:
49
+ /**
50
+ * Invokes the C++ `std::function<...>` this `JFunc_void_std__string_cxx` instance holds.
51
+ */
52
+ void invoke_cxx(jni::alias_ref<jni::JString> state) {
53
+ _func(state->toStdString());
54
+ }
55
+
56
+ public:
57
+ [[nodiscard]]
58
+ inline const std::function<void(const std::string& /* state */)>& getFunction() const {
59
+ return _func;
60
+ }
61
+
62
+ public:
63
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/Func_void_std__string_cxx;";
64
+ static void registerNatives() {
65
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__string_cxx::invoke_cxx)});
66
+ }
67
+
68
+ private:
69
+ explicit JFunc_void_std__string_cxx(const std::function<void(const std::string& /* state */)>& func): _func(func) { }
70
+
71
+ private:
72
+ friend HybridBase;
73
+ std::function<void(const std::string& /* state */)> _func;
74
+ };
75
+
76
+ } // namespace margelo::nitro::clarion::recorder
@@ -0,0 +1,76 @@
1
+ ///
2
+ /// JFunc_void_std__string_double_double_double.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include <string>
14
+ #include <functional>
15
+ #include <NitroModules/JNICallable.hpp>
16
+
17
+ namespace margelo::nitro::clarion::recorder {
18
+
19
+ using namespace facebook;
20
+
21
+ /**
22
+ * Represents the Java/Kotlin callback `(uri: String, startMs: Double, endMs: Double, sizeBytes: Double) -> Unit`.
23
+ * This can be passed around between C++ and Java/Kotlin.
24
+ */
25
+ struct JFunc_void_std__string_double_double_double: public jni::JavaClass<JFunc_void_std__string_double_double_double> {
26
+ public:
27
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/Func_void_std__string_double_double_double;";
28
+
29
+ public:
30
+ /**
31
+ * Invokes the function this `JFunc_void_std__string_double_double_double` instance holds through JNI.
32
+ */
33
+ void invoke(const std::string& uri, double startMs, double endMs, double sizeBytes) const {
34
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)>("invoke");
35
+ method(self(), jni::make_jstring(uri), startMs, endMs, sizeBytes);
36
+ }
37
+ };
38
+
39
+ /**
40
+ * An implementation of Func_void_std__string_double_double_double that is backed by a C++ implementation (using `std::function<...>`)
41
+ */
42
+ class JFunc_void_std__string_double_double_double_cxx final: public jni::HybridClass<JFunc_void_std__string_double_double_double_cxx, JFunc_void_std__string_double_double_double> {
43
+ public:
44
+ static jni::local_ref<JFunc_void_std__string_double_double_double::javaobject> fromCpp(const std::function<void(const std::string& /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)>& func) {
45
+ return JFunc_void_std__string_double_double_double_cxx::newObjectCxxArgs(func);
46
+ }
47
+
48
+ public:
49
+ /**
50
+ * Invokes the C++ `std::function<...>` this `JFunc_void_std__string_double_double_double_cxx` instance holds.
51
+ */
52
+ void invoke_cxx(jni::alias_ref<jni::JString> uri, double startMs, double endMs, double sizeBytes) {
53
+ _func(uri->toStdString(), startMs, endMs, sizeBytes);
54
+ }
55
+
56
+ public:
57
+ [[nodiscard]]
58
+ inline const std::function<void(const std::string& /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)>& getFunction() const {
59
+ return _func;
60
+ }
61
+
62
+ public:
63
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/Func_void_std__string_double_double_double_cxx;";
64
+ static void registerNatives() {
65
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__string_double_double_double_cxx::invoke_cxx)});
66
+ }
67
+
68
+ private:
69
+ explicit JFunc_void_std__string_double_double_double_cxx(const std::function<void(const std::string& /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)>& func): _func(func) { }
70
+
71
+ private:
72
+ friend HybridBase;
73
+ std::function<void(const std::string& /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)> _func;
74
+ };
75
+
76
+ } // namespace margelo::nitro::clarion::recorder
@@ -0,0 +1,207 @@
1
+ ///
2
+ /// JHybridClarionRecorderSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JHybridClarionRecorderSpec.hpp"
9
+
10
+ // Forward declaration of `NativeRecorderResult` to properly resolve imports.
11
+ namespace margelo::nitro::clarion::recorder { struct NativeRecorderResult; }
12
+ // Forward declaration of `NativeRecorderConfig` to properly resolve imports.
13
+ namespace margelo::nitro::clarion::recorder { struct NativeRecorderConfig; }
14
+ // Forward declaration of `NativeRecorderError` to properly resolve imports.
15
+ namespace margelo::nitro::clarion::recorder { struct NativeRecorderError; }
16
+
17
+ #include <string>
18
+ #include <NitroModules/Promise.hpp>
19
+ #include <NitroModules/JPromise.hpp>
20
+ #include <NitroModules/JUnit.hpp>
21
+ #include "NativeRecorderResult.hpp"
22
+ #include "JNativeRecorderResult.hpp"
23
+ #include "NativeRecorderConfig.hpp"
24
+ #include "JNativeRecorderConfig.hpp"
25
+ #include <optional>
26
+ #include <functional>
27
+ #include "JFunc_void_std__string.hpp"
28
+ #include <NitroModules/JNICallable.hpp>
29
+ #include "JFunc_void_double_double.hpp"
30
+ #include "JFunc_void_std__string_double_double_double.hpp"
31
+ #include "NativeRecorderError.hpp"
32
+ #include "JFunc_void_NativeRecorderError.hpp"
33
+ #include "JNativeRecorderError.hpp"
34
+
35
+ namespace margelo::nitro::clarion::recorder {
36
+
37
+ std::shared_ptr<JHybridClarionRecorderSpec> JHybridClarionRecorderSpec::JavaPart::getJHybridClarionRecorderSpec() {
38
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
39
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridClarionRecorderSpec>(hybridObject);
40
+ if (castHybridObject == nullptr) [[unlikely]] {
41
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridClarionRecorderSpec!");
42
+ }
43
+ return castHybridObject;
44
+ }
45
+
46
+ jni::local_ref<JHybridClarionRecorderSpec::CxxPart::jhybriddata> JHybridClarionRecorderSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
47
+ return makeCxxInstance(jThis);
48
+ }
49
+
50
+ std::shared_ptr<JHybridObject> JHybridClarionRecorderSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
51
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridClarionRecorderSpec::JavaPart>(javaPart);
52
+ if (castJavaPart == nullptr) [[unlikely]] {
53
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridClarionRecorderSpec::JavaPart!");
54
+ }
55
+ return std::make_shared<JHybridClarionRecorderSpec>(castJavaPart);
56
+ }
57
+
58
+ void JHybridClarionRecorderSpec::CxxPart::registerNatives() {
59
+ registerHybrid({
60
+ makeNativeMethod("initHybrid", JHybridClarionRecorderSpec::CxxPart::initHybrid),
61
+ });
62
+ }
63
+
64
+ // Properties
65
+ std::string JHybridClarionRecorderSpec::getState() {
66
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getState");
67
+ auto __result = method(_javaPart);
68
+ return __result->toStdString();
69
+ }
70
+
71
+ // Methods
72
+ std::shared_ptr<Promise<void>> JHybridClarionRecorderSpec::prepare(const NativeRecorderConfig& config) {
73
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JNativeRecorderConfig> /* config */)>("prepare");
74
+ auto __result = method(_javaPart, JNativeRecorderConfig::fromCpp(config));
75
+ return [&]() {
76
+ auto __promise = Promise<void>::create();
77
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
78
+ __promise->resolve();
79
+ });
80
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
81
+ jni::JniException __jniError(__throwable);
82
+ __promise->reject(std::make_exception_ptr(__jniError));
83
+ });
84
+ return __promise;
85
+ }();
86
+ }
87
+ std::shared_ptr<Promise<void>> JHybridClarionRecorderSpec::start() {
88
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("start");
89
+ auto __result = method(_javaPart);
90
+ return [&]() {
91
+ auto __promise = Promise<void>::create();
92
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
93
+ __promise->resolve();
94
+ });
95
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
96
+ jni::JniException __jniError(__throwable);
97
+ __promise->reject(std::make_exception_ptr(__jniError));
98
+ });
99
+ return __promise;
100
+ }();
101
+ }
102
+ std::shared_ptr<Promise<void>> JHybridClarionRecorderSpec::pause() {
103
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("pause");
104
+ auto __result = method(_javaPart);
105
+ return [&]() {
106
+ auto __promise = Promise<void>::create();
107
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
108
+ __promise->resolve();
109
+ });
110
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
111
+ jni::JniException __jniError(__throwable);
112
+ __promise->reject(std::make_exception_ptr(__jniError));
113
+ });
114
+ return __promise;
115
+ }();
116
+ }
117
+ std::shared_ptr<Promise<void>> JHybridClarionRecorderSpec::resume() {
118
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("resume");
119
+ auto __result = method(_javaPart);
120
+ return [&]() {
121
+ auto __promise = Promise<void>::create();
122
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
123
+ __promise->resolve();
124
+ });
125
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
126
+ jni::JniException __jniError(__throwable);
127
+ __promise->reject(std::make_exception_ptr(__jniError));
128
+ });
129
+ return __promise;
130
+ }();
131
+ }
132
+ std::shared_ptr<Promise<NativeRecorderResult>> JHybridClarionRecorderSpec::stop() {
133
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("stop");
134
+ auto __result = method(_javaPart);
135
+ return [&]() {
136
+ auto __promise = Promise<NativeRecorderResult>::create();
137
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
138
+ auto __result = jni::static_ref_cast<JNativeRecorderResult>(__boxedResult);
139
+ __promise->resolve(__result->toCpp());
140
+ });
141
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
142
+ jni::JniException __jniError(__throwable);
143
+ __promise->reject(std::make_exception_ptr(__jniError));
144
+ });
145
+ return __promise;
146
+ }();
147
+ }
148
+ std::shared_ptr<Promise<void>> JHybridClarionRecorderSpec::discard() {
149
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("discard");
150
+ auto __result = method(_javaPart);
151
+ return [&]() {
152
+ auto __promise = Promise<void>::create();
153
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
154
+ __promise->resolve();
155
+ });
156
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
157
+ jni::JniException __jniError(__throwable);
158
+ __promise->reject(std::make_exception_ptr(__jniError));
159
+ });
160
+ return __promise;
161
+ }();
162
+ }
163
+ std::shared_ptr<Promise<void>> JHybridClarionRecorderSpec::release() {
164
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("release");
165
+ auto __result = method(_javaPart);
166
+ return [&]() {
167
+ auto __promise = Promise<void>::create();
168
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
169
+ __promise->resolve();
170
+ });
171
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
172
+ jni::JniException __jniError(__throwable);
173
+ __promise->reject(std::make_exception_ptr(__jniError));
174
+ });
175
+ return __promise;
176
+ }();
177
+ }
178
+ double JHybridClarionRecorderSpec::addStateListener(const std::function<void(const std::string& /* state */)>& listener) {
179
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(jni::alias_ref<JFunc_void_std__string::javaobject> /* listener */)>("addStateListener_cxx");
180
+ auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(listener));
181
+ return __result;
182
+ }
183
+ double JHybridClarionRecorderSpec::addAudioLevelListener(const std::function<void(double /* rms */, double /* peak */)>& listener) {
184
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(jni::alias_ref<JFunc_void_double_double::javaobject> /* listener */)>("addAudioLevelListener_cxx");
185
+ auto __result = method(_javaPart, JFunc_void_double_double_cxx::fromCpp(listener));
186
+ return __result;
187
+ }
188
+ double JHybridClarionRecorderSpec::addChunkListener(const std::function<void(const std::string& /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)>& listener) {
189
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(jni::alias_ref<JFunc_void_std__string_double_double_double::javaobject> /* listener */)>("addChunkListener_cxx");
190
+ auto __result = method(_javaPart, JFunc_void_std__string_double_double_double_cxx::fromCpp(listener));
191
+ return __result;
192
+ }
193
+ double JHybridClarionRecorderSpec::addErrorListener(const std::function<void(const NativeRecorderError& /* error */)>& listener) {
194
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(jni::alias_ref<JFunc_void_NativeRecorderError::javaobject> /* listener */)>("addErrorListener_cxx");
195
+ auto __result = method(_javaPart, JFunc_void_NativeRecorderError_cxx::fromCpp(listener));
196
+ return __result;
197
+ }
198
+ void JHybridClarionRecorderSpec::removeListener(double id) {
199
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* id */)>("removeListener");
200
+ method(_javaPart, id);
201
+ }
202
+ void JHybridClarionRecorderSpec::removeAllListeners() {
203
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeAllListeners");
204
+ method(_javaPart);
205
+ }
206
+
207
+ } // namespace margelo::nitro::clarion::recorder
@@ -0,0 +1,75 @@
1
+ ///
2
+ /// HybridClarionRecorderSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <NitroModules/JHybridObject.hpp>
11
+ #include <fbjni/fbjni.h>
12
+ #include "HybridClarionRecorderSpec.hpp"
13
+
14
+
15
+
16
+
17
+ namespace margelo::nitro::clarion::recorder {
18
+
19
+ using namespace facebook;
20
+
21
+ class JHybridClarionRecorderSpec: public virtual HybridClarionRecorderSpec, public virtual JHybridObject {
22
+ public:
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/HybridClarionRecorderSpec;";
25
+ std::shared_ptr<JHybridClarionRecorderSpec> getJHybridClarionRecorderSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/HybridClarionRecorderSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
35
+
36
+ public:
37
+ explicit JHybridClarionRecorderSpec(const jni::local_ref<JHybridClarionRecorderSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridClarionRecorderSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
41
+ ~JHybridClarionRecorderSpec() override {
42
+ // Hermes GC can destroy JS objects on a non-JNI Thread.
43
+ jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
44
+ }
45
+
46
+ public:
47
+ inline const jni::global_ref<JHybridClarionRecorderSpec::JavaPart>& getJavaPart() const noexcept {
48
+ return _javaPart;
49
+ }
50
+
51
+ public:
52
+ // Properties
53
+ std::string getState() override;
54
+
55
+ public:
56
+ // Methods
57
+ std::shared_ptr<Promise<void>> prepare(const NativeRecorderConfig& config) override;
58
+ std::shared_ptr<Promise<void>> start() override;
59
+ std::shared_ptr<Promise<void>> pause() override;
60
+ std::shared_ptr<Promise<void>> resume() override;
61
+ std::shared_ptr<Promise<NativeRecorderResult>> stop() override;
62
+ std::shared_ptr<Promise<void>> discard() override;
63
+ std::shared_ptr<Promise<void>> release() override;
64
+ double addStateListener(const std::function<void(const std::string& /* state */)>& listener) override;
65
+ double addAudioLevelListener(const std::function<void(double /* rms */, double /* peak */)>& listener) override;
66
+ double addChunkListener(const std::function<void(const std::string& /* uri */, double /* startMs */, double /* endMs */, double /* sizeBytes */)>& listener) override;
67
+ double addErrorListener(const std::function<void(const NativeRecorderError& /* error */)>& listener) override;
68
+ void removeListener(double id) override;
69
+ void removeAllListeners() override;
70
+
71
+ private:
72
+ jni::global_ref<JHybridClarionRecorderSpec::JavaPart> _javaPart;
73
+ };
74
+
75
+ } // namespace margelo::nitro::clarion::recorder
@@ -0,0 +1,90 @@
1
+ ///
2
+ /// JNativeRecorderConfig.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "NativeRecorderConfig.hpp"
12
+
13
+ #include <optional>
14
+ #include <string>
15
+
16
+ namespace margelo::nitro::clarion::recorder {
17
+
18
+ using namespace facebook;
19
+
20
+ /**
21
+ * The C++ JNI bridge between the C++ struct "NativeRecorderConfig" and the the Kotlin data class "NativeRecorderConfig".
22
+ */
23
+ struct JNativeRecorderConfig final: public jni::JavaClass<JNativeRecorderConfig> {
24
+ public:
25
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/NativeRecorderConfig;";
26
+
27
+ public:
28
+ /**
29
+ * Convert this Java/Kotlin-based struct to the C++ struct NativeRecorderConfig by copying all values to C++.
30
+ */
31
+ [[maybe_unused]]
32
+ [[nodiscard]]
33
+ NativeRecorderConfig toCpp() const {
34
+ static const auto clazz = javaClassStatic();
35
+ static const auto fieldSampleRate = clazz->getField<double>("sampleRate");
36
+ double sampleRate = this->getFieldValue(fieldSampleRate);
37
+ static const auto fieldChannels = clazz->getField<double>("channels");
38
+ double channels = this->getFieldValue(fieldChannels);
39
+ static const auto fieldBitDepth = clazz->getField<double>("bitDepth");
40
+ double bitDepth = this->getFieldValue(fieldBitDepth);
41
+ static const auto fieldOutputDirectory = clazz->getField<jni::JString>("outputDirectory");
42
+ jni::local_ref<jni::JString> outputDirectory = this->getFieldValue(fieldOutputDirectory);
43
+ static const auto fieldFilenamePrefix = clazz->getField<jni::JString>("filenamePrefix");
44
+ jni::local_ref<jni::JString> filenamePrefix = this->getFieldValue(fieldFilenamePrefix);
45
+ static const auto fieldRotateAfterMs = clazz->getField<jni::JDouble>("rotateAfterMs");
46
+ jni::local_ref<jni::JDouble> rotateAfterMs = this->getFieldValue(fieldRotateAfterMs);
47
+ static const auto fieldEmitAudioLevel = clazz->getField<jboolean>("emitAudioLevel");
48
+ jboolean emitAudioLevel = this->getFieldValue(fieldEmitAudioLevel);
49
+ static const auto fieldAudioLevelIntervalMs = clazz->getField<double>("audioLevelIntervalMs");
50
+ double audioLevelIntervalMs = this->getFieldValue(fieldAudioLevelIntervalMs);
51
+ static const auto fieldAacBitrate = clazz->getField<double>("aacBitrate");
52
+ double aacBitrate = this->getFieldValue(fieldAacBitrate);
53
+ return NativeRecorderConfig(
54
+ sampleRate,
55
+ channels,
56
+ bitDepth,
57
+ outputDirectory != nullptr ? std::make_optional(outputDirectory->toStdString()) : std::nullopt,
58
+ filenamePrefix != nullptr ? std::make_optional(filenamePrefix->toStdString()) : std::nullopt,
59
+ rotateAfterMs != nullptr ? std::make_optional(rotateAfterMs->value()) : std::nullopt,
60
+ static_cast<bool>(emitAudioLevel),
61
+ audioLevelIntervalMs,
62
+ aacBitrate
63
+ );
64
+ }
65
+
66
+ public:
67
+ /**
68
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
69
+ */
70
+ [[maybe_unused]]
71
+ static jni::local_ref<JNativeRecorderConfig::javaobject> fromCpp(const NativeRecorderConfig& value) {
72
+ using JSignature = JNativeRecorderConfig(double, double, double, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JDouble>, jboolean, double, double);
73
+ static const auto clazz = javaClassStatic();
74
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
75
+ return create(
76
+ clazz,
77
+ value.sampleRate,
78
+ value.channels,
79
+ value.bitDepth,
80
+ value.outputDirectory.has_value() ? jni::make_jstring(value.outputDirectory.value()) : nullptr,
81
+ value.filenamePrefix.has_value() ? jni::make_jstring(value.filenamePrefix.value()) : nullptr,
82
+ value.rotateAfterMs.has_value() ? jni::JDouble::valueOf(value.rotateAfterMs.value()) : nullptr,
83
+ value.emitAudioLevel,
84
+ value.audioLevelIntervalMs,
85
+ value.aacBitrate
86
+ );
87
+ }
88
+ };
89
+
90
+ } // namespace margelo::nitro::clarion::recorder
@@ -0,0 +1,65 @@
1
+ ///
2
+ /// JNativeRecorderError.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "NativeRecorderError.hpp"
12
+
13
+ #include <string>
14
+
15
+ namespace margelo::nitro::clarion::recorder {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "NativeRecorderError" and the the Kotlin data class "NativeRecorderError".
21
+ */
22
+ struct JNativeRecorderError final: public jni::JavaClass<JNativeRecorderError> {
23
+ public:
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/clarion/recorder/NativeRecorderError;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct NativeRecorderError by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ NativeRecorderError toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldCode = clazz->getField<jni::JString>("code");
35
+ jni::local_ref<jni::JString> code = this->getFieldValue(fieldCode);
36
+ static const auto fieldMessage = clazz->getField<jni::JString>("message");
37
+ jni::local_ref<jni::JString> message = this->getFieldValue(fieldMessage);
38
+ static const auto fieldRecoverable = clazz->getField<jboolean>("recoverable");
39
+ jboolean recoverable = this->getFieldValue(fieldRecoverable);
40
+ return NativeRecorderError(
41
+ code->toStdString(),
42
+ message->toStdString(),
43
+ static_cast<bool>(recoverable)
44
+ );
45
+ }
46
+
47
+ public:
48
+ /**
49
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
50
+ */
51
+ [[maybe_unused]]
52
+ static jni::local_ref<JNativeRecorderError::javaobject> fromCpp(const NativeRecorderError& value) {
53
+ using JSignature = JNativeRecorderError(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jboolean);
54
+ static const auto clazz = javaClassStatic();
55
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
56
+ return create(
57
+ clazz,
58
+ jni::make_jstring(value.code),
59
+ jni::make_jstring(value.message),
60
+ value.recoverable
61
+ );
62
+ }
63
+ };
64
+
65
+ } // namespace margelo::nitro::clarion::recorder