react-native-nitro-player 0.6.1 → 0.7.1-alpha.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 (164) hide show
  1. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +9 -13
  2. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +45 -90
  3. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +48 -182
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +21 -77
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +55 -104
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +113 -123
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ExoPlayerCore.kt +82 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ListenerRegistry.kt +48 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerAndroidAuto.kt +62 -0
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +153 -1887
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerListener.kt +122 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerNotify.kt +44 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerPlayback.kt +162 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueue.kt +165 -0
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueueBuild.kt +161 -0
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerSetup.kt +28 -0
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerTempQueue.kt +121 -0
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerUrlLoader.kt +98 -0
  19. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +27 -18
  20. package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +11 -58
  21. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +13 -30
  22. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +102 -162
  23. package/ios/HybridDownloadManager.swift +32 -26
  24. package/ios/HybridEqualizer.swift +48 -35
  25. package/ios/HybridTrackPlayer.swift +127 -102
  26. package/ios/core/ListenerRegistry.swift +60 -0
  27. package/ios/core/TrackPlayerCore.swift +130 -2356
  28. package/ios/core/TrackPlayerListener.swift +395 -0
  29. package/ios/core/TrackPlayerNotify.swift +52 -0
  30. package/ios/core/TrackPlayerPlayback.swift +274 -0
  31. package/ios/core/TrackPlayerQueue.swift +212 -0
  32. package/ios/core/TrackPlayerQueueBuild.swift +482 -0
  33. package/ios/core/TrackPlayerTempQueue.swift +167 -0
  34. package/ios/core/TrackPlayerUrlLoader.swift +169 -0
  35. package/ios/equalizer/EqualizerCore.swift +24 -89
  36. package/ios/media/MediaSessionManager.swift +32 -49
  37. package/ios/playlist/PlaylistManager.swift +2 -9
  38. package/ios/queue/HybridPlayerQueue.swift +69 -66
  39. package/lib/hooks/useDownloadedTracks.js +16 -13
  40. package/lib/hooks/useEqualizer.d.ts +4 -4
  41. package/lib/hooks/useEqualizer.js +12 -12
  42. package/lib/hooks/useEqualizerPresets.d.ts +3 -3
  43. package/lib/hooks/useEqualizerPresets.js +12 -18
  44. package/lib/specs/AndroidAutoMediaLibrary.nitro.d.ts +2 -2
  45. package/lib/specs/AudioDevices.nitro.d.ts +2 -2
  46. package/lib/specs/DownloadManager.nitro.d.ts +10 -10
  47. package/lib/specs/Equalizer.nitro.d.ts +9 -9
  48. package/lib/specs/TrackPlayer.nitro.d.ts +38 -16
  49. package/nitro.json +44 -11
  50. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +63 -24
  51. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +1 -1
  52. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +1 -1
  53. package/nitrogen/generated/android/c++/JDownloadError.hpp +1 -1
  54. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +1 -1
  55. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +1 -1
  56. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +1 -1
  57. package/nitrogen/generated/android/c++/JDownloadState.hpp +1 -1
  58. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +1 -1
  59. package/nitrogen/generated/android/c++/JDownloadTask.hpp +1 -1
  60. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +1 -1
  61. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +1 -1
  62. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +1 -1
  63. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +1 -1
  64. package/nitrogen/generated/android/c++/JEqualizerState.hpp +1 -1
  65. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +2 -2
  66. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +2 -2
  67. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -2
  68. package/nitrogen/generated/android/c++/JFunc_void_TrackPlayerState_std__optional_Reason_.hpp +2 -2
  69. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +2 -2
  70. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +2 -2
  71. package/nitrogen/generated/android/c++/JFunc_void_double_double_std__optional_bool_.hpp +2 -2
  72. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +2 -2
  73. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -2
  74. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +2 -2
  75. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +2 -2
  76. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -2
  77. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__double.hpp +2 -2
  78. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp +122 -0
  79. package/nitrogen/generated/android/c++/JGainRange.hpp +1 -1
  80. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +49 -30
  81. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +21 -24
  82. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +35 -28
  83. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +20 -23
  84. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +197 -93
  85. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +29 -32
  86. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +157 -67
  87. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +28 -31
  88. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +138 -53
  89. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +27 -30
  90. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +282 -69
  91. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +35 -30
  92. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +1 -1
  93. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +1 -1
  94. package/nitrogen/generated/android/c++/JPlayerState.hpp +1 -1
  95. package/nitrogen/generated/android/c++/JPlaylist.hpp +1 -1
  96. package/nitrogen/generated/android/c++/JPresetType.hpp +1 -1
  97. package/nitrogen/generated/android/c++/JQueueOperation.hpp +1 -1
  98. package/nitrogen/generated/android/c++/JReason.hpp +1 -1
  99. package/nitrogen/generated/android/c++/JRepeatMode.hpp +1 -1
  100. package/nitrogen/generated/android/c++/JStorageLocation.hpp +1 -1
  101. package/nitrogen/generated/android/c++/JTAudioDevice.hpp +1 -1
  102. package/nitrogen/generated/android/c++/JTrackItem.hpp +1 -1
  103. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +1 -1
  104. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
  105. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +3 -3
  106. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +3 -3
  107. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +3 -3
  108. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +3 -3
  109. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +3 -3
  110. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +3 -3
  111. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +3 -3
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__std__vector_TrackItem_.kt +80 -0
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +18 -20
  114. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +17 -19
  115. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +25 -28
  116. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +25 -27
  117. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +24 -26
  118. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +60 -26
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +0 -6
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +0 -6
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +0 -6
  122. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +0 -6
  123. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +0 -6
  124. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Playlist.kt +0 -6
  125. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_String.kt +0 -6
  126. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_TrackItem.kt +0 -6
  127. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +74 -18
  128. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +380 -151
  129. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +10 -10
  130. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +12 -9
  131. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +23 -8
  132. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +82 -8
  133. package/nitrogen/generated/ios/swift/Func_void_EqualizerState.swift +46 -0
  134. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__DownloadedPlaylist_.swift +58 -0
  135. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__DownloadedTrack_.swift +58 -0
  136. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__std__string_.swift +58 -0
  137. package/nitrogen/generated/ios/swift/Func_void_std__vector_DownloadedPlaylist_.swift +46 -0
  138. package/nitrogen/generated/ios/swift/Func_void_std__vector_DownloadedTrack_.swift +46 -0
  139. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +5 -5
  140. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem__std__vector_TrackItem_.swift +46 -0
  141. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +10 -10
  142. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +141 -71
  143. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +9 -9
  144. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +105 -41
  145. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec.swift +8 -8
  146. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec_cxx.swift +95 -32
  147. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +16 -8
  148. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +267 -32
  149. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.hpp +3 -2
  150. package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.hpp +2 -1
  151. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +10 -10
  152. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +10 -9
  153. package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.hpp +9 -8
  154. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +8 -0
  155. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +16 -8
  156. package/package.json +3 -3
  157. package/src/hooks/useDownloadedTracks.ts +17 -13
  158. package/src/hooks/useEqualizer.ts +16 -16
  159. package/src/hooks/useEqualizerPresets.ts +15 -21
  160. package/src/specs/AndroidAutoMediaLibrary.nitro.ts +2 -2
  161. package/src/specs/AudioDevices.nitro.ts +2 -2
  162. package/src/specs/DownloadManager.nitro.ts +10 -10
  163. package/src/specs/Equalizer.nitro.ts +9 -9
  164. package/src/specs/TrackPlayer.nitro.ts +52 -16
@@ -125,14 +125,21 @@ open class HybridEqualizerSpec_cxx {
125
125
 
126
126
  // Methods
127
127
  @inline(__always)
128
- public final func setEnabled(enabled: Bool) -> bridge.Result_bool_ {
128
+ public final func setEnabled(enabled: Bool) -> bridge.Result_std__shared_ptr_Promise_void___ {
129
129
  do {
130
130
  let __result = try self.__implementation.setEnabled(enabled: enabled)
131
- let __resultCpp = __result
132
- return bridge.create_Result_bool_(__resultCpp)
131
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
132
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
133
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
134
+ __result
135
+ .then({ __result in __promiseHolder.resolve() })
136
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
137
+ return __promise
138
+ }()
139
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
133
140
  } catch (let __error) {
134
141
  let __exceptionPtr = __error.toCpp()
135
- return bridge.create_Result_bool_(__exceptionPtr)
142
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
136
143
  }
137
144
  }
138
145
 
@@ -149,44 +156,65 @@ open class HybridEqualizerSpec_cxx {
149
156
  }
150
157
 
151
158
  @inline(__always)
152
- public final func getBands() -> bridge.Result_std__vector_EqualizerBand__ {
159
+ public final func getBands() -> bridge.Result_std__shared_ptr_Promise_std__vector_EqualizerBand____ {
153
160
  do {
154
161
  let __result = try self.__implementation.getBands()
155
- let __resultCpp = { () -> bridge.std__vector_EqualizerBand_ in
156
- var __vector = bridge.create_std__vector_EqualizerBand_(__result.count)
157
- for __item in __result {
158
- __vector.push_back(__item)
159
- }
160
- return __vector
162
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__vector_EqualizerBand___ in
163
+ let __promise = bridge.create_std__shared_ptr_Promise_std__vector_EqualizerBand___()
164
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__vector_EqualizerBand___(__promise)
165
+ __result
166
+ .then({ __result in __promiseHolder.resolve({ () -> bridge.std__vector_EqualizerBand_ in
167
+ var __vector = bridge.create_std__vector_EqualizerBand_(__result.count)
168
+ for __item in __result {
169
+ __vector.push_back(__item)
170
+ }
171
+ return __vector
172
+ }()) })
173
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
174
+ return __promise
161
175
  }()
162
- return bridge.create_Result_std__vector_EqualizerBand__(__resultCpp)
176
+ return bridge.create_Result_std__shared_ptr_Promise_std__vector_EqualizerBand____(__resultCpp)
163
177
  } catch (let __error) {
164
178
  let __exceptionPtr = __error.toCpp()
165
- return bridge.create_Result_std__vector_EqualizerBand__(__exceptionPtr)
179
+ return bridge.create_Result_std__shared_ptr_Promise_std__vector_EqualizerBand____(__exceptionPtr)
166
180
  }
167
181
  }
168
182
 
169
183
  @inline(__always)
170
- public final func setBandGain(bandIndex: Double, gainDb: Double) -> bridge.Result_bool_ {
184
+ public final func setBandGain(bandIndex: Double, gainDb: Double) -> bridge.Result_std__shared_ptr_Promise_void___ {
171
185
  do {
172
186
  let __result = try self.__implementation.setBandGain(bandIndex: bandIndex, gainDb: gainDb)
173
- let __resultCpp = __result
174
- return bridge.create_Result_bool_(__resultCpp)
187
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
188
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
189
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
190
+ __result
191
+ .then({ __result in __promiseHolder.resolve() })
192
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
193
+ return __promise
194
+ }()
195
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
175
196
  } catch (let __error) {
176
197
  let __exceptionPtr = __error.toCpp()
177
- return bridge.create_Result_bool_(__exceptionPtr)
198
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
178
199
  }
179
200
  }
180
201
 
181
202
  @inline(__always)
182
- public final func setAllBandGains(gains: bridge.std__vector_double_) -> bridge.Result_bool_ {
203
+ public final func setAllBandGains(gains: bridge.std__vector_double_) -> bridge.Result_std__shared_ptr_Promise_void___ {
183
204
  do {
184
205
  let __result = try self.__implementation.setAllBandGains(gains: gains.map({ __item in __item }))
185
- let __resultCpp = __result
186
- return bridge.create_Result_bool_(__resultCpp)
206
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
207
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
208
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
209
+ __result
210
+ .then({ __result in __promiseHolder.resolve() })
211
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
212
+ return __promise
213
+ }()
214
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
187
215
  } catch (let __error) {
188
216
  let __exceptionPtr = __error.toCpp()
189
- return bridge.create_Result_bool_(__exceptionPtr)
217
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
190
218
  }
191
219
  }
192
220
 
@@ -257,14 +285,21 @@ open class HybridEqualizerSpec_cxx {
257
285
  }
258
286
 
259
287
  @inline(__always)
260
- public final func applyPreset(presetName: std.string) -> bridge.Result_bool_ {
288
+ public final func applyPreset(presetName: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
261
289
  do {
262
290
  let __result = try self.__implementation.applyPreset(presetName: String(presetName))
263
- let __resultCpp = __result
264
- return bridge.create_Result_bool_(__resultCpp)
291
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
292
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
293
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
294
+ __result
295
+ .then({ __result in __promiseHolder.resolve() })
296
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
297
+ return __promise
298
+ }()
299
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
265
300
  } catch (let __error) {
266
301
  let __exceptionPtr = __error.toCpp()
267
- return bridge.create_Result_bool_(__exceptionPtr)
302
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
268
303
  }
269
304
  }
270
305
 
@@ -288,49 +323,78 @@ open class HybridEqualizerSpec_cxx {
288
323
  }
289
324
 
290
325
  @inline(__always)
291
- public final func saveCustomPreset(name: std.string) -> bridge.Result_bool_ {
326
+ public final func saveCustomPreset(name: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
292
327
  do {
293
328
  let __result = try self.__implementation.saveCustomPreset(name: String(name))
294
- let __resultCpp = __result
295
- return bridge.create_Result_bool_(__resultCpp)
329
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
330
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
331
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
332
+ __result
333
+ .then({ __result in __promiseHolder.resolve() })
334
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
335
+ return __promise
336
+ }()
337
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
296
338
  } catch (let __error) {
297
339
  let __exceptionPtr = __error.toCpp()
298
- return bridge.create_Result_bool_(__exceptionPtr)
340
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
299
341
  }
300
342
  }
301
343
 
302
344
  @inline(__always)
303
- public final func deleteCustomPreset(name: std.string) -> bridge.Result_bool_ {
345
+ public final func deleteCustomPreset(name: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
304
346
  do {
305
347
  let __result = try self.__implementation.deleteCustomPreset(name: String(name))
306
- let __resultCpp = __result
307
- return bridge.create_Result_bool_(__resultCpp)
348
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
349
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
350
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
351
+ __result
352
+ .then({ __result in __promiseHolder.resolve() })
353
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
354
+ return __promise
355
+ }()
356
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
308
357
  } catch (let __error) {
309
358
  let __exceptionPtr = __error.toCpp()
310
- return bridge.create_Result_bool_(__exceptionPtr)
359
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
311
360
  }
312
361
  }
313
362
 
314
363
  @inline(__always)
315
- public final func getState() -> bridge.Result_EqualizerState_ {
364
+ public final func getState() -> bridge.Result_std__shared_ptr_Promise_EqualizerState___ {
316
365
  do {
317
366
  let __result = try self.__implementation.getState()
318
- let __resultCpp = __result
319
- return bridge.create_Result_EqualizerState_(__resultCpp)
367
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_EqualizerState__ in
368
+ let __promise = bridge.create_std__shared_ptr_Promise_EqualizerState__()
369
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_EqualizerState__(__promise)
370
+ __result
371
+ .then({ __result in __promiseHolder.resolve(__result) })
372
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
373
+ return __promise
374
+ }()
375
+ return bridge.create_Result_std__shared_ptr_Promise_EqualizerState___(__resultCpp)
320
376
  } catch (let __error) {
321
377
  let __exceptionPtr = __error.toCpp()
322
- return bridge.create_Result_EqualizerState_(__exceptionPtr)
378
+ return bridge.create_Result_std__shared_ptr_Promise_EqualizerState___(__exceptionPtr)
323
379
  }
324
380
  }
325
381
 
326
382
  @inline(__always)
327
- public final func reset() -> bridge.Result_void_ {
383
+ public final func reset() -> bridge.Result_std__shared_ptr_Promise_void___ {
328
384
  do {
329
- try self.__implementation.reset()
330
- return bridge.create_Result_void_()
385
+ let __result = try self.__implementation.reset()
386
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
387
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
388
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
389
+ __result
390
+ .then({ __result in __promiseHolder.resolve() })
391
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
392
+ return __promise
393
+ }()
394
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
331
395
  } catch (let __error) {
332
396
  let __exceptionPtr = __error.toCpp()
333
- return bridge.create_Result_void_(__exceptionPtr)
397
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
334
398
  }
335
399
  }
336
400
 
@@ -13,16 +13,16 @@ public protocol HybridPlayerQueueSpec_protocol: HybridObject {
13
13
 
14
14
 
15
15
  // Methods
16
- func createPlaylist(name: String, description: String?, artwork: String?) throws -> String
17
- func deletePlaylist(playlistId: String) throws -> Void
18
- func updatePlaylist(playlistId: String, name: String?, description: String?, artwork: String?) throws -> Void
16
+ func createPlaylist(name: String, description: String?, artwork: String?) throws -> Promise<String>
17
+ func deletePlaylist(playlistId: String) throws -> Promise<Void>
18
+ func updatePlaylist(playlistId: String, name: String?, description: String?, artwork: String?) throws -> Promise<Void>
19
19
  func getPlaylist(playlistId: String) throws -> Variant_NullType_Playlist
20
20
  func getAllPlaylists() throws -> [Playlist]
21
- func addTrackToPlaylist(playlistId: String, track: TrackItem, index: Double?) throws -> Void
22
- func addTracksToPlaylist(playlistId: String, tracks: [TrackItem], index: Double?) throws -> Void
23
- func removeTrackFromPlaylist(playlistId: String, trackId: String) throws -> Void
24
- func reorderTrackInPlaylist(playlistId: String, trackId: String, newIndex: Double) throws -> Void
25
- func loadPlaylist(playlistId: String) throws -> Void
21
+ func addTrackToPlaylist(playlistId: String, track: TrackItem, index: Double?) throws -> Promise<Void>
22
+ func addTracksToPlaylist(playlistId: String, tracks: [TrackItem], index: Double?) throws -> Promise<Void>
23
+ func removeTrackFromPlaylist(playlistId: String, trackId: String) throws -> Promise<Void>
24
+ func reorderTrackInPlaylist(playlistId: String, trackId: String, newIndex: Double) throws -> Promise<Void>
25
+ func loadPlaylist(playlistId: String) throws -> Promise<Void>
26
26
  func getCurrentPlaylistId() throws -> Variant_NullType_String
27
27
  func onPlaylistsChanged(callback: @escaping (_ playlists: [Playlist], _ operation: QueueOperation?) -> Void) throws -> Void
28
28
  func onPlaylistChanged(callback: @escaping (_ playlistId: String, _ playlist: Playlist, _ operation: QueueOperation?) -> Void) throws -> Void
@@ -125,7 +125,7 @@ open class HybridPlayerQueueSpec_cxx {
125
125
 
126
126
  // Methods
127
127
  @inline(__always)
128
- public final func createPlaylist(name: std.string, description: bridge.std__optional_std__string_, artwork: bridge.std__optional_std__string_) -> bridge.Result_std__string_ {
128
+ public final func createPlaylist(name: std.string, description: bridge.std__optional_std__string_, artwork: bridge.std__optional_std__string_) -> bridge.Result_std__shared_ptr_Promise_std__string___ {
129
129
  do {
130
130
  let __result = try self.__implementation.createPlaylist(name: String(name), description: { () -> String? in
131
131
  if bridge.has_value_std__optional_std__string_(description) {
@@ -142,29 +142,44 @@ open class HybridPlayerQueueSpec_cxx {
142
142
  return nil
143
143
  }
144
144
  }())
145
- let __resultCpp = std.string(__result)
146
- return bridge.create_Result_std__string_(__resultCpp)
145
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__string__ in
146
+ let __promise = bridge.create_std__shared_ptr_Promise_std__string__()
147
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__promise)
148
+ __result
149
+ .then({ __result in __promiseHolder.resolve(std.string(__result)) })
150
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
151
+ return __promise
152
+ }()
153
+ return bridge.create_Result_std__shared_ptr_Promise_std__string___(__resultCpp)
147
154
  } catch (let __error) {
148
155
  let __exceptionPtr = __error.toCpp()
149
- return bridge.create_Result_std__string_(__exceptionPtr)
156
+ return bridge.create_Result_std__shared_ptr_Promise_std__string___(__exceptionPtr)
150
157
  }
151
158
  }
152
159
 
153
160
  @inline(__always)
154
- public final func deletePlaylist(playlistId: std.string) -> bridge.Result_void_ {
161
+ public final func deletePlaylist(playlistId: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
155
162
  do {
156
- try self.__implementation.deletePlaylist(playlistId: String(playlistId))
157
- return bridge.create_Result_void_()
163
+ let __result = try self.__implementation.deletePlaylist(playlistId: String(playlistId))
164
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
165
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
166
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
167
+ __result
168
+ .then({ __result in __promiseHolder.resolve() })
169
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
170
+ return __promise
171
+ }()
172
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
158
173
  } catch (let __error) {
159
174
  let __exceptionPtr = __error.toCpp()
160
- return bridge.create_Result_void_(__exceptionPtr)
175
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
161
176
  }
162
177
  }
163
178
 
164
179
  @inline(__always)
165
- public final func updatePlaylist(playlistId: std.string, name: bridge.std__optional_std__string_, description: bridge.std__optional_std__string_, artwork: bridge.std__optional_std__string_) -> bridge.Result_void_ {
180
+ public final func updatePlaylist(playlistId: std.string, name: bridge.std__optional_std__string_, description: bridge.std__optional_std__string_, artwork: bridge.std__optional_std__string_) -> bridge.Result_std__shared_ptr_Promise_void___ {
166
181
  do {
167
- try self.__implementation.updatePlaylist(playlistId: String(playlistId), name: { () -> String? in
182
+ let __result = try self.__implementation.updatePlaylist(playlistId: String(playlistId), name: { () -> String? in
168
183
  if bridge.has_value_std__optional_std__string_(name) {
169
184
  let __unwrapped = bridge.get_std__optional_std__string_(name)
170
185
  return String(__unwrapped)
@@ -186,10 +201,18 @@ open class HybridPlayerQueueSpec_cxx {
186
201
  return nil
187
202
  }
188
203
  }())
189
- return bridge.create_Result_void_()
204
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
205
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
206
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
207
+ __result
208
+ .then({ __result in __promiseHolder.resolve() })
209
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
210
+ return __promise
211
+ }()
212
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
190
213
  } catch (let __error) {
191
214
  let __exceptionPtr = __error.toCpp()
192
- return bridge.create_Result_void_(__exceptionPtr)
215
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
193
216
  }
194
217
  }
195
218
 
@@ -231,9 +254,9 @@ open class HybridPlayerQueueSpec_cxx {
231
254
  }
232
255
 
233
256
  @inline(__always)
234
- public final func addTrackToPlaylist(playlistId: std.string, track: TrackItem, index: bridge.std__optional_double_) -> bridge.Result_void_ {
257
+ public final func addTrackToPlaylist(playlistId: std.string, track: TrackItem, index: bridge.std__optional_double_) -> bridge.Result_std__shared_ptr_Promise_void___ {
235
258
  do {
236
- try self.__implementation.addTrackToPlaylist(playlistId: String(playlistId), track: track, index: { () -> Double? in
259
+ let __result = try self.__implementation.addTrackToPlaylist(playlistId: String(playlistId), track: track, index: { () -> Double? in
237
260
  if bridge.has_value_std__optional_double_(index) {
238
261
  let __unwrapped = bridge.get_std__optional_double_(index)
239
262
  return __unwrapped
@@ -241,17 +264,25 @@ open class HybridPlayerQueueSpec_cxx {
241
264
  return nil
242
265
  }
243
266
  }())
244
- return bridge.create_Result_void_()
267
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
268
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
269
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
270
+ __result
271
+ .then({ __result in __promiseHolder.resolve() })
272
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
273
+ return __promise
274
+ }()
275
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
245
276
  } catch (let __error) {
246
277
  let __exceptionPtr = __error.toCpp()
247
- return bridge.create_Result_void_(__exceptionPtr)
278
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
248
279
  }
249
280
  }
250
281
 
251
282
  @inline(__always)
252
- public final func addTracksToPlaylist(playlistId: std.string, tracks: bridge.std__vector_TrackItem_, index: bridge.std__optional_double_) -> bridge.Result_void_ {
283
+ public final func addTracksToPlaylist(playlistId: std.string, tracks: bridge.std__vector_TrackItem_, index: bridge.std__optional_double_) -> bridge.Result_std__shared_ptr_Promise_void___ {
253
284
  do {
254
- try self.__implementation.addTracksToPlaylist(playlistId: String(playlistId), tracks: tracks.map({ __item in __item }), index: { () -> Double? in
285
+ let __result = try self.__implementation.addTracksToPlaylist(playlistId: String(playlistId), tracks: tracks.map({ __item in __item }), index: { () -> Double? in
255
286
  if bridge.has_value_std__optional_double_(index) {
256
287
  let __unwrapped = bridge.get_std__optional_double_(index)
257
288
  return __unwrapped
@@ -259,43 +290,75 @@ open class HybridPlayerQueueSpec_cxx {
259
290
  return nil
260
291
  }
261
292
  }())
262
- return bridge.create_Result_void_()
293
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
294
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
295
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
296
+ __result
297
+ .then({ __result in __promiseHolder.resolve() })
298
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
299
+ return __promise
300
+ }()
301
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
263
302
  } catch (let __error) {
264
303
  let __exceptionPtr = __error.toCpp()
265
- return bridge.create_Result_void_(__exceptionPtr)
304
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
266
305
  }
267
306
  }
268
307
 
269
308
  @inline(__always)
270
- public final func removeTrackFromPlaylist(playlistId: std.string, trackId: std.string) -> bridge.Result_void_ {
309
+ public final func removeTrackFromPlaylist(playlistId: std.string, trackId: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
271
310
  do {
272
- try self.__implementation.removeTrackFromPlaylist(playlistId: String(playlistId), trackId: String(trackId))
273
- return bridge.create_Result_void_()
311
+ let __result = try self.__implementation.removeTrackFromPlaylist(playlistId: String(playlistId), trackId: String(trackId))
312
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
313
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
314
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
315
+ __result
316
+ .then({ __result in __promiseHolder.resolve() })
317
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
318
+ return __promise
319
+ }()
320
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
274
321
  } catch (let __error) {
275
322
  let __exceptionPtr = __error.toCpp()
276
- return bridge.create_Result_void_(__exceptionPtr)
323
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
277
324
  }
278
325
  }
279
326
 
280
327
  @inline(__always)
281
- public final func reorderTrackInPlaylist(playlistId: std.string, trackId: std.string, newIndex: Double) -> bridge.Result_void_ {
328
+ public final func reorderTrackInPlaylist(playlistId: std.string, trackId: std.string, newIndex: Double) -> bridge.Result_std__shared_ptr_Promise_void___ {
282
329
  do {
283
- try self.__implementation.reorderTrackInPlaylist(playlistId: String(playlistId), trackId: String(trackId), newIndex: newIndex)
284
- return bridge.create_Result_void_()
330
+ let __result = try self.__implementation.reorderTrackInPlaylist(playlistId: String(playlistId), trackId: String(trackId), newIndex: newIndex)
331
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
332
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
333
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
334
+ __result
335
+ .then({ __result in __promiseHolder.resolve() })
336
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
337
+ return __promise
338
+ }()
339
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
285
340
  } catch (let __error) {
286
341
  let __exceptionPtr = __error.toCpp()
287
- return bridge.create_Result_void_(__exceptionPtr)
342
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
288
343
  }
289
344
  }
290
345
 
291
346
  @inline(__always)
292
- public final func loadPlaylist(playlistId: std.string) -> bridge.Result_void_ {
347
+ public final func loadPlaylist(playlistId: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
293
348
  do {
294
- try self.__implementation.loadPlaylist(playlistId: String(playlistId))
295
- return bridge.create_Result_void_()
349
+ let __result = try self.__implementation.loadPlaylist(playlistId: String(playlistId))
350
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
351
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
352
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
353
+ __result
354
+ .then({ __result in __promiseHolder.resolve() })
355
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
356
+ return __promise
357
+ }()
358
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
296
359
  } catch (let __error) {
297
360
  let __exceptionPtr = __error.toCpp()
298
- return bridge.create_Result_void_(__exceptionPtr)
361
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
299
362
  }
300
363
  }
301
364
 
@@ -13,27 +13,27 @@ public protocol HybridTrackPlayerSpec_protocol: HybridObject {
13
13
 
14
14
 
15
15
  // Methods
16
- func play() throws -> Void
17
- func pause() throws -> Void
16
+ func play() throws -> Promise<Void>
17
+ func pause() throws -> Promise<Void>
18
18
  func playSong(songId: String, fromPlaylist: String?) throws -> Promise<Void>
19
- func skipToNext() throws -> Void
19
+ func skipToNext() throws -> Promise<Void>
20
20
  func skipToIndex(index: Double) throws -> Promise<Bool>
21
- func skipToPrevious() throws -> Void
22
- func seek(position: Double) throws -> Void
21
+ func skipToPrevious() throws -> Promise<Void>
22
+ func seek(position: Double) throws -> Promise<Void>
23
23
  func addToUpNext(trackId: String) throws -> Promise<Void>
24
24
  func playNext(trackId: String) throws -> Promise<Void>
25
25
  func getActualQueue() throws -> Promise<[TrackItem]>
26
26
  func getState() throws -> Promise<PlayerState>
27
- func setRepeatMode(mode: RepeatMode) throws -> Bool
27
+ func setRepeatMode(mode: RepeatMode) throws -> Promise<Void>
28
28
  func getRepeatMode() throws -> RepeatMode
29
- func configure(config: PlayerConfig) throws -> Void
29
+ func configure(config: PlayerConfig) throws -> Promise<Void>
30
30
  func onChangeTrack(callback: @escaping (_ track: TrackItem, _ reason: Reason?) -> Void) throws -> Void
31
31
  func onPlaybackStateChange(callback: @escaping (_ state: TrackPlayerState, _ reason: Reason?) -> Void) throws -> Void
32
32
  func onSeek(callback: @escaping (_ position: Double, _ totalDuration: Double) -> Void) throws -> Void
33
33
  func onPlaybackProgressChange(callback: @escaping (_ position: Double, _ totalDuration: Double, _ isManuallySeeked: Bool?) -> Void) throws -> Void
34
34
  func onAndroidAutoConnectionChange(callback: @escaping (_ connected: Bool) -> Void) throws -> Void
35
35
  func isAndroidAutoConnected() throws -> Bool
36
- func setVolume(volume: Double) throws -> Bool
36
+ func setVolume(volume: Double) throws -> Promise<Void>
37
37
  func updateTracks(tracks: [TrackItem]) throws -> Promise<Void>
38
38
  func getTracksById(trackIds: [String]) throws -> Promise<[TrackItem]>
39
39
  func getTracksNeedingUrls() throws -> Promise<[TrackItem]>
@@ -42,6 +42,14 @@ public protocol HybridTrackPlayerSpec_protocol: HybridObject {
42
42
  func onTracksNeedUpdate(callback: @escaping (_ tracks: [TrackItem], _ lookahead: Double) -> Void) throws -> Void
43
43
  func setPlaybackSpeed(speed: Double) throws -> Promise<Void>
44
44
  func getPlaybackSpeed() throws -> Promise<Double>
45
+ func removeFromPlayNext(trackId: String) throws -> Promise<Bool>
46
+ func removeFromUpNext(trackId: String) throws -> Promise<Bool>
47
+ func clearPlayNext() throws -> Promise<Void>
48
+ func clearUpNext() throws -> Promise<Void>
49
+ func reorderTemporaryTrack(trackId: String, newIndex: Double) throws -> Promise<Bool>
50
+ func getPlayNextQueue() throws -> Promise<[TrackItem]>
51
+ func getUpNextQueue() throws -> Promise<[TrackItem]>
52
+ func onTemporaryQueueChange(callback: @escaping (_ playNextQueue: [TrackItem], _ upNextQueue: [TrackItem]) -> Void) throws -> Void
45
53
  }
46
54
 
47
55
  public extension HybridTrackPlayerSpec_protocol {