@pigeonmal/react-native-video 7.0.0-beta.15 → 7.0.0-beta.16

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 (43) hide show
  1. package/README.md +3 -9
  2. package/android/build.gradle +2 -1
  3. package/android/gradle.properties +1 -1
  4. package/android/src/main/java/com/twg/video/core/custom/MyRenderersFactory.java +91 -2
  5. package/android/src/main/java/com/twg/video/core/utils/TvDetector.kt +14 -0
  6. package/android/src/main/java/com/twg/video/hybrids/videoplayer/HybridVideoPlayer.kt +10 -1
  7. package/android/src/main/java/com/twg/video/hybrids/videoplayereventemitter/HybridVideoPlayerEventEmitter.kt +6 -0
  8. package/android/src/stubs/subs/androidx/media3/exoplayer/text/NonFinalTextRenderer.java +37 -11
  9. package/lib/commonjs/core/VideoPlayerEvents.js +7 -1
  10. package/lib/commonjs/core/VideoPlayerEvents.js.map +1 -1
  11. package/lib/commonjs/core/types/VideoError.js.map +1 -1
  12. package/lib/module/core/VideoPlayerEvents.js +7 -1
  13. package/lib/module/core/VideoPlayerEvents.js.map +1 -1
  14. package/lib/module/core/types/VideoError.js.map +1 -1
  15. package/lib/typescript/commonjs/src/core/VideoPlayerEvents.d.ts.map +1 -1
  16. package/lib/typescript/commonjs/src/core/types/VideoError.d.ts +1 -1
  17. package/lib/typescript/commonjs/src/core/types/VideoError.d.ts.map +1 -1
  18. package/lib/typescript/commonjs/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +6 -0
  19. package/lib/typescript/commonjs/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -1
  20. package/lib/typescript/module/src/core/VideoPlayerEvents.d.ts.map +1 -1
  21. package/lib/typescript/module/src/core/types/VideoError.d.ts +1 -1
  22. package/lib/typescript/module/src/core/types/VideoError.d.ts.map +1 -1
  23. package/lib/typescript/module/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts +6 -0
  24. package/lib/typescript/module/src/spec/nitro/VideoPlayerEventEmitter.nitro.d.ts.map +1 -1
  25. package/nitrogen/generated/android/ReactNativeVideoOnLoad.cpp +2 -0
  26. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  27. package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.cpp +6 -0
  28. package/nitrogen/generated/android/c++/JHybridVideoPlayerEventEmitterSpec.hpp +1 -0
  29. package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/Func_void_std__string.kt +80 -0
  30. package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/HybridVideoPlayerEventEmitterSpec.kt +9 -0
  31. package/nitrogen/generated/ios/ReactNativeVideo-Swift-Cxx-Bridge.cpp +8 -8
  32. package/nitrogen/generated/ios/ReactNativeVideo-Swift-Cxx-Bridge.hpp +22 -22
  33. package/nitrogen/generated/ios/c++/HybridVideoPlayerEventEmitterSpecSwift.hpp +8 -0
  34. package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec.swift +1 -0
  35. package/nitrogen/generated/ios/swift/HybridVideoPlayerEventEmitterSpec_cxx.swift +17 -0
  36. package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.cpp +1 -0
  37. package/nitrogen/generated/shared/c++/HybridVideoPlayerEventEmitterSpec.hpp +2 -1
  38. package/package.json +1 -1
  39. package/src/core/VideoPlayerEvents.ts +12 -2
  40. package/src/core/types/VideoError.ts +2 -1
  41. package/src/spec/nitro/VideoPlayerEventEmitter.nitro.ts +9 -0
  42. package/android/media3-ffmpeg-decoder/build.gradle +0 -2
  43. package/android/media3-ffmpeg-decoder/ffmpeg.aar +0 -0
package/README.md CHANGED
@@ -3,19 +3,12 @@ Date: 19/12/2025
3
3
 
4
4
  (Only android)
5
5
  Install :
6
-
7
- 1. npm install @pigeonmal/react-native-video@beta @pigeonmal/react-native-nitro-fetch
8
- 2. Add this to android/app/settings.gradle
9
-
10
- ```
11
- include ':media3-ffmpeg-decoder'
12
- project(':media3-ffmpeg-decoder').projectDir = file('../node_modules/@pigeonmal/react-native-video/android/media3-ffmpeg-decoder')
13
- ```
14
-
6
+ npm install @pigeonmal/react-native-video@beta @pigeonmal/react-native-nitro-fetch
15
7
  ---
16
8
 
17
9
  Features:
18
10
 
11
+ - modern media3 1.8.0
19
12
  - ffmpeg fallback
20
13
  - videoconfig: externalAudios (array of AudioTrack)
21
14
  - videoconfig: forceType 'm3u8' or 'mpd' if url not have explicit extension
@@ -31,6 +24,7 @@ Features:
31
24
  - bugfix: external subtitles in hls/dash
32
25
  - bugfix: add langs to external subs
33
26
  - bugfix: onloadstart
27
+ - bugfix: onError also catch playback exception 'player/playback-exception'
34
28
  - nullable video player source : new VideoPlayer(undefined);
35
29
  - TextTrack type replaced to PlayerTrack
36
30
  - removed onTrackChange event
@@ -233,8 +233,9 @@ dependencies {
233
233
  // For Media Session
234
234
  implementation "androidx.media3:media3-session:$media3_version"
235
235
 
236
- api project(':media3-ffmpeg-decoder')
237
236
  implementation project(':pigeonmal_react-native-nitro-fetch')
237
+ implementation "io.github.anilbeesetti:nextlib-media3ext:1.8.0-0.9.0" // To add media3 software decoders and extensions
238
+ // implementation "io.github.anilbeesetti:nextlib-mediainfo:1.8.0-0.9.0" // To get media info through ffmpeg
238
239
 
239
240
  if (ExoplayerDependencies.useExoplayerDash) {
240
241
  implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
@@ -8,6 +8,6 @@ RNVideo_ndkversion=27.1.12297006
8
8
  RNVideo_useExoplayerDash=true
9
9
  RNVideo_useExoplayerHls=true
10
10
 
11
- RNVideo_media3Version=1.4.1
11
+ RNVideo_media3Version=1.8.0
12
12
  RNVideo_androidxCoreVersion=1.13.1
13
13
  RNVideo_androidxActivityVersion=1.9.3
@@ -3,9 +3,16 @@ package com.twg.video.core.custom;
3
3
  import androidx.media3.exoplayer.DefaultRenderersFactory;
4
4
  import androidx.media3.exoplayer.Renderer;
5
5
  import androidx.media3.exoplayer.text.TextOutput;
6
-
6
+ import android.os.Handler;
7
+ import androidx.media3.common.util.Log;
8
+ import androidx.media3.exoplayer.audio.AudioRendererEventListener;
9
+ import androidx.media3.exoplayer.audio.AudioSink;
10
+ import androidx.media3.exoplayer.mediacodec.MediaCodecSelector;
11
+ import androidx.media3.exoplayer.video.VideoRendererEventListener;
7
12
  import android.content.Context;
8
13
  import android.os.Looper;
14
+ import io.github.anilbeesetti.nextlib.media3ext.ffdecoder.FfmpegAudioRenderer;
15
+ import io.github.anilbeesetti.nextlib.media3ext.ffdecoder.FfmpegVideoRenderer;
9
16
 
10
17
  import java.util.ArrayList;
11
18
 
@@ -13,10 +20,12 @@ public class MyRenderersFactory extends DefaultRenderersFactory implements TextS
13
20
 
14
21
  private MyTextRenderer textRenderer;
15
22
  private long defaultOffsetUs;
23
+ private boolean isTv;
16
24
 
17
- public MyRenderersFactory(Context context, long defaultDelaySub) {
25
+ public MyRenderersFactory(Context context, long defaultDelaySub, boolean isTv) {
18
26
  super(context);
19
27
  textRenderer = null;
28
+ isTv = isTv;
20
29
  defaultOffsetUs = defaultDelaySub;
21
30
  }
22
31
 
@@ -75,4 +84,84 @@ public class MyRenderersFactory extends DefaultRenderersFactory implements TextS
75
84
  textRenderer.addTextFilters(textFilters);
76
85
  }
77
86
 
87
+ @Override
88
+ protected void buildAudioRenderers(
89
+ Context context,
90
+ int extensionRendererMode,
91
+ MediaCodecSelector mediaCodecSelector,
92
+ boolean enableDecoderFallback,
93
+ AudioSink audioSink,
94
+ Handler eventHandler,
95
+ AudioRendererEventListener eventListener,
96
+ ArrayList<Renderer> out) {
97
+
98
+ super.buildAudioRenderers(
99
+ context,
100
+ extensionRendererMode,
101
+ mediaCodecSelector,
102
+ enableDecoderFallback,
103
+ audioSink,
104
+ eventHandler,
105
+ eventListener,
106
+ out
107
+ );
108
+
109
+ if (extensionRendererMode == EXTENSION_RENDERER_MODE_OFF) return;
110
+
111
+ int extensionRendererIndex = out.size();
112
+ if (extensionRendererMode == EXTENSION_RENDERER_MODE_PREFER) {
113
+ extensionRendererIndex--;
114
+ }
115
+
116
+ try {
117
+ FfmpegAudioRenderer renderer = new FfmpegAudioRenderer(eventHandler, eventListener, audioSink);
118
+ out.add(extensionRendererIndex++, renderer);
119
+ Log.i(TAG, "Loaded FfmpegAudioRenderer.");
120
+ } catch (Exception e) {
121
+ throw new RuntimeException("Error instantiating Ffmpeg extension", e);
122
+ }
123
+ }
124
+
125
+ @Override
126
+ protected void buildVideoRenderers(
127
+ Context context,
128
+ int extensionRendererMode,
129
+ MediaCodecSelector mediaCodecSelector,
130
+ boolean enableDecoderFallback,
131
+ Handler eventHandler,
132
+ VideoRendererEventListener eventListener,
133
+ long allowedVideoJoiningTimeMs,
134
+ ArrayList<Renderer> out) {
135
+
136
+ super.buildVideoRenderers(
137
+ context,
138
+ extensionRendererMode,
139
+ mediaCodecSelector,
140
+ enableDecoderFallback,
141
+ eventHandler,
142
+ eventListener,
143
+ allowedVideoJoiningTimeMs,
144
+ out
145
+ );
146
+
147
+ if (isTv || extensionRendererMode == EXTENSION_RENDERER_MODE_OFF) return;
148
+
149
+ int extensionRendererIndex = out.size();
150
+ if (extensionRendererMode == EXTENSION_RENDERER_MODE_PREFER) {
151
+ extensionRendererIndex--;
152
+ }
153
+
154
+ try {
155
+ FfmpegVideoRenderer renderer = new FfmpegVideoRenderer(
156
+ allowedVideoJoiningTimeMs, eventHandler, eventListener, MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY
157
+ );
158
+ out.add(extensionRendererIndex++, renderer);
159
+ Log.i(TAG, "Loaded FfmpegVideoRenderer.");
160
+ } catch (Exception e) {
161
+ throw new RuntimeException("Error instantiating Ffmpeg extension", e);
162
+ }
163
+ }
164
+
165
+ public static final String TAG = "MyRenderersFactory";
166
+
78
167
  }
@@ -0,0 +1,14 @@
1
+ package com.twg.video.core.utils
2
+
3
+ import android.content.Context
4
+ import android.content.pm.PackageManager
5
+
6
+ object TvDetector {
7
+ @Volatile private var cached = false
8
+
9
+ fun isTv(context: Context): Boolean {
10
+ if (cached) return true
11
+ cached = context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)
12
+ return cached
13
+ }
14
+ }
@@ -32,6 +32,7 @@ import com.twg.video.core.recivers.AudioBecomingNoisyReceiver
32
32
  import com.twg.video.core.services.playback.VideoPlaybackService
33
33
  import com.twg.video.core.services.playback.VideoPlaybackServiceConnection
34
34
  import com.twg.video.core.utils.TrackUtils
35
+ import com.twg.video.core.utils.TvDetector
35
36
  import com.twg.video.core.utils.Threading.mainThreadProperty
36
37
  import com.twg.video.core.utils.Threading.runOnMainThread
37
38
  import com.twg.video.core.utils.Threading.runOnMainThreadSync
@@ -247,7 +248,8 @@ class HybridVideoPlayer() : HybridVideoPlayerSpec(), AutoCloseable {
247
248
 
248
249
  renderersFactory = MyRenderersFactory(
249
250
  context,
250
- hybridSource.config.initialSubtitleDelay ?: 0L
251
+ hybridSource.config.initialSubtitleDelay ?: 0L,
252
+ TvDetector.isTv(context)
251
253
  ).apply {
252
254
  setExtensionRendererMode(MyRenderersFactory.EXTENSION_RENDERER_MODE_ON)
253
255
  forceEnableMediaCodecAsynchronousQueueing()
@@ -554,6 +556,13 @@ class HybridVideoPlayer() : HybridVideoPlayerSpec(), AutoCloseable {
554
556
  override fun onPlayerError(error: PlaybackException) {
555
557
  status = VideoPlayerStatus.ERROR
556
558
  stopProgressUpdates()
559
+ val errorMessage = buildString {
560
+ append(error.errorCodeName)
561
+ error.message?.let { append(": $it") }
562
+ error.cause?.message?.let { append(" | Cause: $it") }
563
+ }
564
+
565
+ eventEmitter.onPlayerError(errorMessage)
557
566
  }
558
567
 
559
568
  override fun onPositionDiscontinuity(
@@ -82,6 +82,9 @@ class HybridVideoPlayerEventEmitter : HybridVideoPlayerEventEmitterSpec() {
82
82
  override fun addOnProgressListener(listener: (onProgressData) -> Unit) =
83
83
  addListener("onProgress", listener)
84
84
 
85
+ override fun addOnPlayerErrorListener(listener: (String) -> Unit) =
86
+ addListener("onPlayerError", listener)
87
+
85
88
  override fun addOnReadyToDisplayListener(listener: () -> Unit) =
86
89
  addListener("onReadyToDisplay", listener)
87
90
 
@@ -144,6 +147,9 @@ class HybridVideoPlayerEventEmitter : HybridVideoPlayerEventEmitterSpec() {
144
147
  fun onProgress(data: onProgressData) =
145
148
  emitEvent<(onProgressData) -> Unit>("onProgress") { it(data) }
146
149
 
150
+ fun onPlayerError(message: String) =
151
+ emitEvent<(String) -> Unit>("onPlayerError") { it(message) }
152
+
147
153
  fun onReadyToDisplay() =
148
154
  emitEvent<() -> Unit>("onReadyToDisplay") { it() }
149
155
 
@@ -1,5 +1,5 @@
1
1
  package androidx.media3.exoplayer.text;
2
- // 1.4.1 TextRenderer https://raw.githubusercontent.com/androidx/media/refs/tags/1.4.1/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextRenderer.java
2
+ // 1.8.0 TextRenderer https://raw.githubusercontent.com/androidx/media/refs/tags/1.8.0/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextRenderer.java
3
3
 
4
4
  import static androidx.media3.common.util.Assertions.checkNotNull;
5
5
  import static androidx.media3.common.util.Assertions.checkState;
@@ -28,11 +28,13 @@ import androidx.media3.exoplayer.source.MediaSource;
28
28
  import androidx.media3.exoplayer.source.SampleStream.ReadDataResult;
29
29
  import androidx.media3.extractor.text.CueDecoder;
30
30
  import androidx.media3.extractor.text.CuesWithTiming;
31
+ import androidx.media3.extractor.text.Subtitle;
31
32
  import androidx.media3.extractor.text.SubtitleDecoder;
32
33
  import androidx.media3.extractor.text.SubtitleDecoderException;
33
34
  import androidx.media3.extractor.text.SubtitleInputBuffer;
34
35
  import androidx.media3.extractor.text.SubtitleOutputBuffer;
35
36
  import com.google.common.collect.ImmutableList;
37
+ import java.io.IOException;
36
38
  import java.lang.annotation.Documented;
37
39
  import java.lang.annotation.Retention;
38
40
  import java.lang.annotation.RetentionPolicy;
@@ -40,7 +42,6 @@ import java.lang.annotation.Target;
40
42
  import java.nio.ByteBuffer;
41
43
  import java.util.Objects;
42
44
 
43
-
44
45
  /**
45
46
  * A {@link Renderer} for text.
46
47
  *
@@ -103,7 +104,6 @@ public class NonFinalTextRenderer extends BaseRenderer implements Callback {
103
104
  private boolean inputStreamEnded;
104
105
  private boolean outputStreamEnded;
105
106
  @Nullable private Format streamFormat;
106
- private long outputStreamOffsetUs;
107
107
  private long lastRendererPositionUs;
108
108
  private long finalStreamEndPositionUs;
109
109
  private boolean legacyDecodingEnabled;
@@ -143,7 +143,6 @@ public class NonFinalTextRenderer extends BaseRenderer implements Callback {
143
143
  new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL);
144
144
  formatHolder = new FormatHolder();
145
145
  finalStreamEndPositionUs = C.TIME_UNSET;
146
- outputStreamOffsetUs = C.TIME_UNSET;
147
146
  lastRendererPositionUs = C.TIME_UNSET;
148
147
  legacyDecodingEnabled = false;
149
148
  }
@@ -190,7 +189,6 @@ public class NonFinalTextRenderer extends BaseRenderer implements Callback {
190
189
  long startPositionUs,
191
190
  long offsetUs,
192
191
  MediaSource.MediaPeriodId mediaPeriodId) {
193
- outputStreamOffsetUs = offsetUs;
194
192
  streamFormat = formats[0];
195
193
  if (!isCuesWithTiming(streamFormat)) {
196
194
  assertLegacyDecodingEnabledIfRequired();
@@ -444,7 +442,6 @@ public class NonFinalTextRenderer extends BaseRenderer implements Callback {
444
442
  streamFormat = null;
445
443
  finalStreamEndPositionUs = C.TIME_UNSET;
446
444
  clearOutput();
447
- outputStreamOffsetUs = C.TIME_UNSET;
448
445
  lastRendererPositionUs = C.TIME_UNSET;
449
446
  if (subtitleDecoder != null) {
450
447
  releaseSubtitleDecoder();
@@ -458,9 +455,40 @@ public class NonFinalTextRenderer extends BaseRenderer implements Callback {
458
455
 
459
456
  @Override
460
457
  public boolean isReady() {
461
- // Don't block playback whilst subtitles are loading.
458
+ if (streamFormat == null) {
459
+ return true;
460
+ }
461
+
462
+ // We don't block playback whilst subtitles are loading.
462
463
  // Note: To change this behavior, it will be necessary to consider [Internal: b/12949941].
463
- return true;
464
+ if (isCuesWithTiming(checkNotNull(streamFormat))) {
465
+ if (checkNotNull(cuesResolver).getNextCueChangeTimeUs(lastRendererPositionUs)
466
+ != C.TIME_END_OF_SOURCE) {
467
+ // We have a cue change loaded in the future.
468
+ return true;
469
+ } else {
470
+ // We don't have any future cues, so let's see if there's a loading error, and return
471
+ // ready=false if so.
472
+ try {
473
+ maybeThrowStreamError();
474
+ return true;
475
+ } catch (IOException e) {
476
+ return false;
477
+ }
478
+ }
479
+ } else {
480
+ return !outputStreamEnded
481
+ && (!inputStreamEnded
482
+ || hasEventsAfter(subtitle, lastRendererPositionUs)
483
+ || hasEventsAfter(nextSubtitle, lastRendererPositionUs)
484
+ || nextSubtitleInputBuffer == null);
485
+ }
486
+ }
487
+
488
+ private static boolean hasEventsAfter(@Nullable Subtitle subtitle, long timeUs) {
489
+ return subtitle != null
490
+ && subtitle.getEventTimeCount() > 0
491
+ && subtitle.getEventTime(subtitle.getEventTimeCount() - 1) > timeUs;
464
492
  }
465
493
 
466
494
  private void releaseSubtitleBuffers() {
@@ -558,9 +586,7 @@ public class NonFinalTextRenderer extends BaseRenderer implements Callback {
558
586
 
559
587
  private long getPresentationTimeUs(long positionUs) {
560
588
  checkState(positionUs != C.TIME_UNSET);
561
- checkState(outputStreamOffsetUs != C.TIME_UNSET);
562
-
563
- return positionUs - outputStreamOffsetUs;
589
+ return positionUs - getStreamOffsetUs();
564
590
  }
565
591
 
566
592
  private void assertLegacyDecodingEnabledIfRequired() {
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.VideoPlayerEvents = void 0;
7
7
  var _Events = require("./types/Events.js");
8
+ var _VideoError = require("./types/VideoError.js");
8
9
  class VideoPlayerEvents {
9
10
  jsEventListeners = {};
10
11
  supportedEvents = _Events.ALL_PLAYER_EVENTS;
@@ -30,8 +31,13 @@ class VideoPlayerEvents {
30
31
  case 'onError':
31
32
  this.jsEventListeners.onError ??= new Set();
32
33
  this.jsEventListeners.onError.add(callback);
34
+ const nativeCallback = message => callback(new _VideoError.VideoError('player/playback-exception', message));
35
+ const removeNative = this.eventEmitter.addOnPlayerErrorListener(nativeCallback);
33
36
  return {
34
- remove: () => this.jsEventListeners.onError?.delete(callback)
37
+ remove: () => {
38
+ this.jsEventListeners.onError?.delete(callback);
39
+ removeNative.remove();
40
+ }
35
41
  };
36
42
  // ----------------- Native Events -----------------
37
43
  case 'onAudioBecomingNoisy':
@@ -1 +1 @@
1
- {"version":3,"names":["_Events","require","VideoPlayerEvents","jsEventListeners","supportedEvents","ALL_PLAYER_EVENTS","constructor","eventEmitter","triggerJSEvent","event","params","forEach","fn","addEventListener","callback","onError","Set","add","remove","delete","addOnAudioBecomingNoisyListener","addOnAudioFocusChangeListener","addOnBandwidthUpdateListener","addOnBufferListener","addOnControlsVisibleChangeListener","addOnEndListener","addOnExternalPlaybackChangeListener","addOnLoadListener","addOnLoadStartListener","addOnPlaybackStateChangeListener","addOnPlaybackRateChangeListener","addOnProgressListener","addOnReadyToDisplayListener","addOnSeekListener","addOnTimedMetadataListener","addOnTextTrackDataChangedListener","addOnVolumeChangeListener","addOnStatusChangeListener","Error","clearAllEvents","clearAllListeners","exports"],"sourceRoot":"../../../src","sources":["core/VideoPlayerEvents.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_Events","require","_VideoError","VideoPlayerEvents","jsEventListeners","supportedEvents","ALL_PLAYER_EVENTS","constructor","eventEmitter","triggerJSEvent","event","params","forEach","fn","addEventListener","callback","onError","Set","add","nativeCallback","message","VideoError","removeNative","addOnPlayerErrorListener","remove","delete","addOnAudioBecomingNoisyListener","addOnAudioFocusChangeListener","addOnBandwidthUpdateListener","addOnBufferListener","addOnControlsVisibleChangeListener","addOnEndListener","addOnExternalPlaybackChangeListener","addOnLoadListener","addOnLoadStartListener","addOnPlaybackStateChangeListener","addOnPlaybackRateChangeListener","addOnProgressListener","addOnReadyToDisplayListener","addOnSeekListener","addOnTimedMetadataListener","addOnTextTrackDataChangedListener","addOnVolumeChangeListener","addOnStatusChangeListener","Error","clearAllEvents","clearAllListeners","exports"],"sourceRoot":"../../../src","sources":["core/VideoPlayerEvents.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["VideoError","Error","code","_code","message","_message","stack","_stack","constructor","name","toString","string","exports","VideoComponentError","VideoRuntimeError","getCodeAndMessage","regex","match","length","maybeFixErrorStack","error","replace","isVideoError","hasStack","tryParseNativeVideoError","nativeError","result","startsWith","undefined"],"sourceRoot":"../../../../src","sources":["core/types/VideoError.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["VideoError","Error","code","_code","message","_message","stack","_stack","constructor","name","toString","string","exports","VideoComponentError","VideoRuntimeError","getCodeAndMessage","regex","match","length","maybeFixErrorStack","error","replace","isVideoError","hasStack","tryParseNativeVideoError","nativeError","result","startsWith","undefined"],"sourceRoot":"../../../../src","sources":["core/types/VideoError.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { ALL_PLAYER_EVENTS } from "./types/Events.js";
4
+ import { VideoError } from "./types/VideoError.js";
4
5
  export class VideoPlayerEvents {
5
6
  jsEventListeners = {};
6
7
  supportedEvents = ALL_PLAYER_EVENTS;
@@ -26,8 +27,13 @@ export class VideoPlayerEvents {
26
27
  case 'onError':
27
28
  this.jsEventListeners.onError ??= new Set();
28
29
  this.jsEventListeners.onError.add(callback);
30
+ const nativeCallback = message => callback(new VideoError('player/playback-exception', message));
31
+ const removeNative = this.eventEmitter.addOnPlayerErrorListener(nativeCallback);
29
32
  return {
30
- remove: () => this.jsEventListeners.onError?.delete(callback)
33
+ remove: () => {
34
+ this.jsEventListeners.onError?.delete(callback);
35
+ removeNative.remove();
36
+ }
31
37
  };
32
38
  // ----------------- Native Events -----------------
33
39
  case 'onAudioBecomingNoisy':
@@ -1 +1 @@
1
- {"version":3,"names":["ALL_PLAYER_EVENTS","VideoPlayerEvents","jsEventListeners","supportedEvents","constructor","eventEmitter","triggerJSEvent","event","params","forEach","fn","addEventListener","callback","onError","Set","add","remove","delete","addOnAudioBecomingNoisyListener","addOnAudioFocusChangeListener","addOnBandwidthUpdateListener","addOnBufferListener","addOnControlsVisibleChangeListener","addOnEndListener","addOnExternalPlaybackChangeListener","addOnLoadListener","addOnLoadStartListener","addOnPlaybackStateChangeListener","addOnPlaybackRateChangeListener","addOnProgressListener","addOnReadyToDisplayListener","addOnSeekListener","addOnTimedMetadataListener","addOnTextTrackDataChangedListener","addOnVolumeChangeListener","addOnStatusChangeListener","Error","clearAllEvents","clearAllListeners"],"sourceRoot":"../../../src","sources":["core/VideoPlayerEvents.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ALL_PLAYER_EVENTS","VideoError","VideoPlayerEvents","jsEventListeners","supportedEvents","constructor","eventEmitter","triggerJSEvent","event","params","forEach","fn","addEventListener","callback","onError","Set","add","nativeCallback","message","removeNative","addOnPlayerErrorListener","remove","delete","addOnAudioBecomingNoisyListener","addOnAudioFocusChangeListener","addOnBandwidthUpdateListener","addOnBufferListener","addOnControlsVisibleChangeListener","addOnEndListener","addOnExternalPlaybackChangeListener","addOnLoadListener","addOnLoadStartListener","addOnPlaybackStateChangeListener","addOnPlaybackRateChangeListener","addOnProgressListener","addOnReadyToDisplayListener","addOnSeekListener","addOnTimedMetadataListener","addOnTextTrackDataChangedListener","addOnVolumeChangeListener","addOnStatusChangeListener","Error","clearAllEvents","clearAllListeners"],"sourceRoot":"../../../src","sources":["core/VideoPlayerEvents.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["VideoError","Error","code","_code","message","_message","stack","_stack","constructor","name","toString","string","VideoComponentError","VideoRuntimeError","getCodeAndMessage","regex","match","length","maybeFixErrorStack","error","replace","isVideoError","hasStack","tryParseNativeVideoError","nativeError","result","startsWith","undefined"],"sourceRoot":"../../../../src","sources":["core/types/VideoError.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["VideoError","Error","code","_code","message","_message","stack","_stack","constructor","name","toString","string","VideoComponentError","VideoRuntimeError","getCodeAndMessage","regex","match","length","maybeFixErrorStack","error","replace","isVideoError","hasStack","tryParseNativeVideoError","nativeError","result","startsWith","undefined"],"sourceRoot":"../../../../src","sources":["core/types/VideoError.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayerEvents.d.ts","sourceRoot":"","sources":["../../../../../src/core/VideoPlayerEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,IAAI,YAAY,EACrC,MAAM,gBAAgB,CAAC;AAExB,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAChD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CACjC,MAAM,CAAC,MAAM,mBAAmB,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CACnE,CAAM;IAEP,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,YAAY,CAAC,EAAE,CACtC;gBAER,YAAY,EAAE,uBAAuB;IAIjD,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS,MAAM,mBAAmB,EAC9D,KAAK,EAAE,KAAK,EACZ,GAAG,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAChD,OAAO;IAMV;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,SAAS,MAAM,YAAY,EAC/C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,GAC5B,oBAAoB;IA4FvB;;OAEG;IACH,cAAc;CAIf"}
1
+ {"version":3,"file":"VideoPlayerEvents.d.ts","sourceRoot":"","sources":["../../../../../src/core/VideoPlayerEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,IAAI,YAAY,EACrC,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAChD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CACjC,MAAM,CAAC,MAAM,mBAAmB,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CACnE,CAAM;IAEP,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,YAAY,CAAC,EAAE,CACtC;gBAER,YAAY,EAAE,uBAAuB;IAIjD,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS,MAAM,mBAAmB,EAC9D,KAAK,EAAE,KAAK,EACZ,GAAG,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAChD,OAAO;IAMV;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,SAAS,MAAM,YAAY,EAC/C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,GAC5B,oBAAoB;IAqGvB;;OAEG;IACH,cAAc;CAIf"}
@@ -1,5 +1,5 @@
1
1
  export type LibraryError = 'library/deallocated' | 'library/application-context-not-found';
2
- export type PlayerError = 'player/released' | 'player/not-initialized' | 'player/asset-not-initialized' | 'player/invalid-source';
2
+ export type PlayerError = 'player/released' | 'player/not-initialized' | 'player/asset-not-initialized' | 'player/invalid-source' | 'player/playback-exception';
3
3
  export type SourceError = 'source/invalid-uri' | 'source/missing-read-file-permission' | 'source/file-does-not-exist' | 'source/failed-to-initialize-asset' | 'source/unsupported-content-type';
4
4
  export type VideoViewError = 'view/not-found' | 'view/deallocated' | 'view/picture-in-picture-not-supported';
5
5
  export type UnknownError = 'unknown/unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"VideoError.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,wBAAwB,GACxB,8BAA8B,GAC9B,uBAAuB,CAAC;AAE5B,MAAM,MAAM,WAAW,GACnB,oBAAoB,GACpB,qCAAqC,GACrC,4BAA4B,GAC5B,mCAAmC,GACnC,iCAAiC,CAAC;AAEtC,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE7C,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,cAAc,GACd,YAAY,CAAC;AAEjB,qBAAa,UAAU,CAAC,KAAK,SAAS,cAAc,CAAE,SAAQ,KAAK;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,IAAW,IAAI,IAAI,KAAK,CAEvB;IACD,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAeM,QAAQ,IAAI,MAAM;CAI1B;AAED,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,cAAc,CAAC;CAAG;AAEtE,qBAAa,iBAAkB,SAAQ,UAAU,CAC/C,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CACxD;CAAG;AAkEJ;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,aAAa,CAAC,KACb,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CA6B9C,CAAC"}
1
+ {"version":3,"file":"VideoError.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,wBAAwB,GACxB,8BAA8B,GAC9B,uBAAuB,GACvB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,WAAW,GACnB,oBAAoB,GACpB,qCAAqC,GACrC,4BAA4B,GAC5B,mCAAmC,GACnC,iCAAiC,CAAC;AAEtC,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE7C,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,cAAc,GACd,YAAY,CAAC;AAEjB,qBAAa,UAAU,CAAC,KAAK,SAAS,cAAc,CAAE,SAAQ,KAAK;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,IAAW,IAAI,IAAI,KAAK,CAEvB;IACD,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAeM,QAAQ,IAAI,MAAM;CAI1B;AAED,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,cAAc,CAAC;CAAG;AAEtE,qBAAa,iBAAkB,SAAQ,UAAU,CAC/C,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CACxD;CAAG;AAkEJ;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,aAAa,CAAC,KACb,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CA6B9C,CAAC"}
@@ -92,6 +92,12 @@ export interface VideoPlayerEventEmitter extends HybridObject<{
92
92
  * @returns A subscription object that can be used to remove the listener.
93
93
  */
94
94
  addOnProgressListener(listener: (data: onProgressData) => void): ListenerSubscription;
95
+ /**
96
+ * Adds a listener for the `onPlayerError` event.
97
+ * @param listener - The listener to add.
98
+ * @returns A subscription object that can be used to remove the listener.
99
+ */
100
+ addOnPlayerErrorListener(listener: (message: string) => void): ListenerSubscription;
95
101
  /**
96
102
  * Adds a listener for the `onReadyToDisplay` event.
97
103
  * @see {@link VideoPlayerEvents.onReadyToDisplay}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayerEventEmitter.nitro.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/nitro/VideoPlayerEventEmitter.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAK5E,MAAM,WAAW,oBAAoB;IACnC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,uBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD;;;;;OAKG;IACH,+BAA+B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAE5E;;;;;OAKG;IACH,6BAA6B,CAC3B,QAAQ,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,GACzC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,4BAA4B,CAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GACtC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,mBAAmB,CACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GACrC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,kCAAkC,CAChC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAE7D;;;;;OAKG;IACH,mCAAmC,CACjC,QAAQ,EAAE,CAAC,sBAAsB,EAAE,OAAO,KAAK,IAAI,GAClD,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,oBAAoB,CAAC;IAE9E;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GACxC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,gCAAgC,CAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,GAClD,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,+BAA+B,CAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC/B,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,qBAAqB,CACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACvC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,2BAA2B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAExE;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,oBAAoB,CAAC;IAE9E;;;;;OAKG;IACH,yBAAyB,CACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAC5C,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,0BAA0B,CACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GACtC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,iCAAiC,CAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GACjC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,yBAAyB,CACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,GAC3C,oBAAoB,CAAC;IAExB;;OAEG;IACH,iBAAiB,IAAI,IAAI,CAAC;CAC3B"}
1
+ {"version":3,"file":"VideoPlayerEventEmitter.nitro.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/nitro/VideoPlayerEventEmitter.nitro.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayerEvents.d.ts","sourceRoot":"","sources":["../../../../../src/core/VideoPlayerEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,IAAI,YAAY,EACrC,MAAM,gBAAgB,CAAC;AAExB,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAChD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CACjC,MAAM,CAAC,MAAM,mBAAmB,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CACnE,CAAM;IAEP,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,YAAY,CAAC,EAAE,CACtC;gBAER,YAAY,EAAE,uBAAuB;IAIjD,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS,MAAM,mBAAmB,EAC9D,KAAK,EAAE,KAAK,EACZ,GAAG,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAChD,OAAO;IAMV;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,SAAS,MAAM,YAAY,EAC/C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,GAC5B,oBAAoB;IA4FvB;;OAEG;IACH,cAAc;CAIf"}
1
+ {"version":3,"file":"VideoPlayerEvents.d.ts","sourceRoot":"","sources":["../../../../../src/core/VideoPlayerEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,IAAI,YAAY,EACrC,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAChD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CACjC,MAAM,CAAC,MAAM,mBAAmB,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CACnE,CAAM;IAEP,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,YAAY,CAAC,EAAE,CACtC;gBAER,YAAY,EAAE,uBAAuB;IAIjD,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS,MAAM,mBAAmB,EAC9D,KAAK,EAAE,KAAK,EACZ,GAAG,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAChD,OAAO;IAMV;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,SAAS,MAAM,YAAY,EAC/C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,GAC5B,oBAAoB;IAqGvB;;OAEG;IACH,cAAc;CAIf"}
@@ -1,5 +1,5 @@
1
1
  export type LibraryError = 'library/deallocated' | 'library/application-context-not-found';
2
- export type PlayerError = 'player/released' | 'player/not-initialized' | 'player/asset-not-initialized' | 'player/invalid-source';
2
+ export type PlayerError = 'player/released' | 'player/not-initialized' | 'player/asset-not-initialized' | 'player/invalid-source' | 'player/playback-exception';
3
3
  export type SourceError = 'source/invalid-uri' | 'source/missing-read-file-permission' | 'source/file-does-not-exist' | 'source/failed-to-initialize-asset' | 'source/unsupported-content-type';
4
4
  export type VideoViewError = 'view/not-found' | 'view/deallocated' | 'view/picture-in-picture-not-supported';
5
5
  export type UnknownError = 'unknown/unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"VideoError.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,wBAAwB,GACxB,8BAA8B,GAC9B,uBAAuB,CAAC;AAE5B,MAAM,MAAM,WAAW,GACnB,oBAAoB,GACpB,qCAAqC,GACrC,4BAA4B,GAC5B,mCAAmC,GACnC,iCAAiC,CAAC;AAEtC,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE7C,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,cAAc,GACd,YAAY,CAAC;AAEjB,qBAAa,UAAU,CAAC,KAAK,SAAS,cAAc,CAAE,SAAQ,KAAK;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,IAAW,IAAI,IAAI,KAAK,CAEvB;IACD,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAeM,QAAQ,IAAI,MAAM;CAI1B;AAED,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,cAAc,CAAC;CAAG;AAEtE,qBAAa,iBAAkB,SAAQ,UAAU,CAC/C,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CACxD;CAAG;AAkEJ;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,aAAa,CAAC,KACb,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CA6B9C,CAAC"}
1
+ {"version":3,"file":"VideoError.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,wBAAwB,GACxB,8BAA8B,GAC9B,uBAAuB,GACvB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,WAAW,GACnB,oBAAoB,GACpB,qCAAqC,GACrC,4BAA4B,GAC5B,mCAAmC,GACnC,iCAAiC,CAAC;AAEtC,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,uCAAuC,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE7C,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,cAAc,GACd,YAAY,CAAC;AAEjB,qBAAa,UAAU,CAAC,KAAK,SAAS,cAAc,CAAE,SAAQ,KAAK;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,IAAW,IAAI,IAAI,KAAK,CAEvB;IACD,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAeM,QAAQ,IAAI,MAAM;CAI1B;AAED,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,cAAc,CAAC;CAAG;AAEtE,qBAAa,iBAAkB,SAAQ,UAAU,CAC/C,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CACxD;CAAG;AAkEJ;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,aAAa,CAAC,KACb,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CA6B9C,CAAC"}
@@ -92,6 +92,12 @@ export interface VideoPlayerEventEmitter extends HybridObject<{
92
92
  * @returns A subscription object that can be used to remove the listener.
93
93
  */
94
94
  addOnProgressListener(listener: (data: onProgressData) => void): ListenerSubscription;
95
+ /**
96
+ * Adds a listener for the `onPlayerError` event.
97
+ * @param listener - The listener to add.
98
+ * @returns A subscription object that can be used to remove the listener.
99
+ */
100
+ addOnPlayerErrorListener(listener: (message: string) => void): ListenerSubscription;
95
101
  /**
96
102
  * Adds a listener for the `onReadyToDisplay` event.
97
103
  * @see {@link VideoPlayerEvents.onReadyToDisplay}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayerEventEmitter.nitro.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/nitro/VideoPlayerEventEmitter.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAK5E,MAAM,WAAW,oBAAoB;IACnC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,uBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD;;;;;OAKG;IACH,+BAA+B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAE5E;;;;;OAKG;IACH,6BAA6B,CAC3B,QAAQ,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,GACzC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,4BAA4B,CAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GACtC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,mBAAmB,CACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GACrC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,kCAAkC,CAChC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAE7D;;;;;OAKG;IACH,mCAAmC,CACjC,QAAQ,EAAE,CAAC,sBAAsB,EAAE,OAAO,KAAK,IAAI,GAClD,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,oBAAoB,CAAC;IAE9E;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GACxC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,gCAAgC,CAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,GAClD,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,+BAA+B,CAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC/B,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,qBAAqB,CACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACvC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,2BAA2B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAExE;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,oBAAoB,CAAC;IAE9E;;;;;OAKG;IACH,yBAAyB,CACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAC5C,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,0BAA0B,CACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GACtC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,iCAAiC,CAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GACjC,oBAAoB,CAAC;IAExB;;;;;OAKG;IACH,yBAAyB,CACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,GAC3C,oBAAoB,CAAC;IAExB;;OAEG;IACH,iBAAiB,IAAI,IAAI,CAAC;CAC3B"}
1
+ {"version":3,"file":"VideoPlayerEventEmitter.nitro.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/nitro/VideoPlayerEventEmitter.nitro.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,7 @@
26
26
  #include "JFunc_void_onPlaybackStateChangeData.hpp"
27
27
  #include "JFunc_void_double.hpp"
28
28
  #include "JFunc_void_onProgressData.hpp"
29
+ #include "JFunc_void_std__string.hpp"
29
30
  #include "JFunc_void_VideoPlayerStatus.hpp"
30
31
  #include "JFunc_void_TimedMetadata.hpp"
31
32
  #include "JFunc_void_std__vector_std__string_.hpp"
@@ -57,6 +58,7 @@ int initialize(JavaVM* vm) {
57
58
  margelo::nitro::video::JFunc_void_onPlaybackStateChangeData_cxx::registerNatives();
58
59
  margelo::nitro::video::JFunc_void_double_cxx::registerNatives();
59
60
  margelo::nitro::video::JFunc_void_onProgressData_cxx::registerNatives();
61
+ margelo::nitro::video::JFunc_void_std__string_cxx::registerNatives();
60
62
  margelo::nitro::video::JFunc_void_VideoPlayerStatus_cxx::registerNatives();
61
63
  margelo::nitro::video::JFunc_void_TimedMetadata_cxx::registerNatives();
62
64
  margelo::nitro::video::JFunc_void_std__vector_std__string__cxx::registerNatives();
@@ -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 © 2025 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::video {
18
+
19
+ using namespace facebook;
20
+
21
+ /**
22
+ * Represents the Java/Kotlin callback `(message: 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 auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/video/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& message) const {
34
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* message */)>("invoke");
35
+ method(self(), jni::make_jstring(message));
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& /* message */)>& 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> message) {
53
+ _func(message->toStdString());
54
+ }
55
+
56
+ public:
57
+ [[nodiscard]]
58
+ inline const std::function<void(const std::string& /* message */)>& getFunction() const {
59
+ return _func;
60
+ }
61
+
62
+ public:
63
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/video/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& /* message */)>& func): _func(func) { }
70
+
71
+ private:
72
+ friend HybridBase;
73
+ std::function<void(const std::string& /* message */)> _func;
74
+ };
75
+
76
+ } // namespace margelo::nitro::video
@@ -78,6 +78,7 @@ namespace margelo::nitro::video { struct onVolumeChangeData; }
78
78
  #include "onProgressData.hpp"
79
79
  #include "JFunc_void_onProgressData.hpp"
80
80
  #include "JonProgressData.hpp"
81
+ #include "JFunc_void_std__string.hpp"
81
82
  #include "VideoPlayerStatus.hpp"
82
83
  #include "JFunc_void_VideoPlayerStatus.hpp"
83
84
  #include "JVideoPlayerStatus.hpp"
@@ -183,6 +184,11 @@ namespace margelo::nitro::video {
183
184
  auto __result = method(_javaPart, JFunc_void_onProgressData_cxx::fromCpp(listener));
184
185
  return __result->toCpp();
185
186
  }
187
+ ListenerSubscription JHybridVideoPlayerEventEmitterSpec::addOnPlayerErrorListener(const std::function<void(const std::string& /* message */)>& listener) {
188
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JListenerSubscription>(jni::alias_ref<JFunc_void_std__string::javaobject> /* listener */)>("addOnPlayerErrorListener_cxx");
189
+ auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(listener));
190
+ return __result->toCpp();
191
+ }
186
192
  ListenerSubscription JHybridVideoPlayerEventEmitterSpec::addOnReadyToDisplayListener(const std::function<void()>& listener) {
187
193
  static const auto method = javaClassStatic()->getMethod<jni::local_ref<JListenerSubscription>(jni::alias_ref<JFunc_void::javaobject> /* listener */)>("addOnReadyToDisplayListener_cxx");
188
194
  auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(listener));
@@ -66,6 +66,7 @@ namespace margelo::nitro::video {
66
66
  ListenerSubscription addOnPlaybackStateChangeListener(const std::function<void(const onPlaybackStateChangeData& /* data */)>& listener) override;
67
67
  ListenerSubscription addOnPlaybackRateChangeListener(const std::function<void(double /* rate */)>& listener) override;
68
68
  ListenerSubscription addOnProgressListener(const std::function<void(const onProgressData& /* data */)>& listener) override;
69
+ ListenerSubscription addOnPlayerErrorListener(const std::function<void(const std::string& /* message */)>& listener) override;
69
70
  ListenerSubscription addOnReadyToDisplayListener(const std::function<void()>& listener) override;
70
71
  ListenerSubscription addOnSeekListener(const std::function<void(double /* position */)>& listener) override;
71
72
  ListenerSubscription addOnStatusChangeListener(const std::function<void(VideoPlayerStatus /* status */)>& listener) override;
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_std__string.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.video
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(message: string) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_std__string: (String) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(message: String): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(message: string) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_std__string_cxx: Func_void_std__string {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(message: String): Unit
60
+ = invoke_cxx(message)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(message: String): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(message: string) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(String) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_std__string_java(private val function: (String) -> Unit): Func_void_std__string {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(message: String): Unit {
78
+ return this.function(message)
79
+ }
80
+ }
@@ -153,6 +153,15 @@ abstract class HybridVideoPlayerEventEmitterSpec: HybridObject() {
153
153
  return __result
154
154
  }
155
155
 
156
+ abstract fun addOnPlayerErrorListener(listener: (message: String) -> Unit): ListenerSubscription
157
+
158
+ @DoNotStrip
159
+ @Keep
160
+ private fun addOnPlayerErrorListener_cxx(listener: Func_void_std__string): ListenerSubscription {
161
+ val __result = addOnPlayerErrorListener(listener)
162
+ return __result
163
+ }
164
+
156
165
  abstract fun addOnReadyToDisplayListener(listener: () -> Unit): ListenerSubscription
157
166
 
158
167
  @DoNotStrip
@@ -156,6 +156,14 @@ namespace margelo::nitro::video::bridge::swift {
156
156
  };
157
157
  }
158
158
 
159
+ // pragma MARK: std::function<void(const std::string& /* message */)>
160
+ Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
161
+ auto swiftClosure = ReactNativeVideo::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
162
+ return [swiftClosure = std::move(swiftClosure)](const std::string& message) mutable -> void {
163
+ swiftClosure.call(message);
164
+ };
165
+ }
166
+
159
167
  // pragma MARK: std::function<void(VideoPlayerStatus /* status */)>
160
168
  Func_void_VideoPlayerStatus create_Func_void_VideoPlayerStatus(void* NON_NULL swiftClosureWrapper) noexcept {
161
169
  auto swiftClosure = ReactNativeVideo::Func_void_VideoPlayerStatus::fromUnsafe(swiftClosureWrapper);
@@ -188,14 +196,6 @@ namespace margelo::nitro::video::bridge::swift {
188
196
  };
189
197
  }
190
198
 
191
- // pragma MARK: std::function<void(const std::string& /* result */)>
192
- Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
193
- auto swiftClosure = ReactNativeVideo::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
194
- return [swiftClosure = std::move(swiftClosure)](const std::string& result) mutable -> void {
195
- swiftClosure.call(result);
196
- };
197
- }
198
-
199
199
  // pragma MARK: std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<std::string>>>>(const OnGetLicensePayload& /* payload */)>
200
200
  Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload create_Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload(void* NON_NULL swiftClosureWrapper) noexcept {
201
201
  auto swiftClosure = ReactNativeVideo::Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__string_____OnGetLicensePayload::fromUnsafe(swiftClosureWrapper);
@@ -573,6 +573,28 @@ namespace margelo::nitro::video::bridge::swift {
573
573
  return Func_void_onProgressData_Wrapper(std::move(value));
574
574
  }
575
575
 
576
+ // pragma MARK: std::function<void(const std::string& /* message */)>
577
+ /**
578
+ * Specialized version of `std::function<void(const std::string&)>`.
579
+ */
580
+ using Func_void_std__string = std::function<void(const std::string& /* message */)>;
581
+ /**
582
+ * Wrapper class for a `std::function<void(const std::string& / * message * /)>`, this can be used from Swift.
583
+ */
584
+ class Func_void_std__string_Wrapper final {
585
+ public:
586
+ explicit Func_void_std__string_Wrapper(std::function<void(const std::string& /* message */)>&& func): _function(std::make_unique<std::function<void(const std::string& /* message */)>>(std::move(func))) {}
587
+ inline void call(std::string message) const noexcept {
588
+ _function->operator()(message);
589
+ }
590
+ private:
591
+ std::unique_ptr<std::function<void(const std::string& /* message */)>> _function;
592
+ } SWIFT_NONCOPYABLE;
593
+ Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept;
594
+ inline Func_void_std__string_Wrapper wrap_Func_void_std__string(Func_void_std__string value) noexcept {
595
+ return Func_void_std__string_Wrapper(std::move(value));
596
+ }
597
+
576
598
  // pragma MARK: std::function<void(VideoPlayerStatus /* status */)>
577
599
  /**
578
600
  * Specialized version of `std::function<void(VideoPlayerStatus)>`.
@@ -785,28 +807,6 @@ namespace margelo::nitro::video::bridge::swift {
785
807
  return PromiseHolder<std::string>(std::move(promise));
786
808
  }
787
809
 
788
- // pragma MARK: std::function<void(const std::string& /* result */)>
789
- /**
790
- * Specialized version of `std::function<void(const std::string&)>`.
791
- */
792
- using Func_void_std__string = std::function<void(const std::string& /* result */)>;
793
- /**
794
- * Wrapper class for a `std::function<void(const std::string& / * result * /)>`, this can be used from Swift.
795
- */
796
- class Func_void_std__string_Wrapper final {
797
- public:
798
- explicit Func_void_std__string_Wrapper(std::function<void(const std::string& /* result */)>&& func): _function(std::make_unique<std::function<void(const std::string& /* result */)>>(std::move(func))) {}
799
- inline void call(std::string result) const noexcept {
800
- _function->operator()(result);
801
- }
802
- private:
803
- std::unique_ptr<std::function<void(const std::string& /* result */)>> _function;
804
- } SWIFT_NONCOPYABLE;
805
- Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept;
806
- inline Func_void_std__string_Wrapper wrap_Func_void_std__string(Func_void_std__string value) noexcept {
807
- return Func_void_std__string_Wrapper(std::move(value));
808
- }
809
-
810
810
  // pragma MARK: std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<std::string>>>>(const OnGetLicensePayload& /* payload */)>
811
811
  /**
812
812
  * Specialized version of `std::function<std::shared_ptr<Promise<std::shared_ptr<Promise<std::string>>>>(const OnGetLicensePayload&)>`.
@@ -207,6 +207,14 @@ namespace margelo::nitro::video {
207
207
  auto __value = std::move(__result.value());
208
208
  return __value;
209
209
  }
210
+ inline ListenerSubscription addOnPlayerErrorListener(const std::function<void(const std::string& /* message */)>& listener) override {
211
+ auto __result = _swiftPart.addOnPlayerErrorListener(listener);
212
+ if (__result.hasError()) [[unlikely]] {
213
+ std::rethrow_exception(__result.error());
214
+ }
215
+ auto __value = std::move(__result.value());
216
+ return __value;
217
+ }
210
218
  inline ListenerSubscription addOnReadyToDisplayListener(const std::function<void()>& listener) override {
211
219
  auto __result = _swiftPart.addOnReadyToDisplayListener(listener);
212
220
  if (__result.hasError()) [[unlikely]] {
@@ -26,6 +26,7 @@ public protocol HybridVideoPlayerEventEmitterSpec_protocol: HybridObject {
26
26
  func addOnPlaybackStateChangeListener(listener: @escaping (_ data: onPlaybackStateChangeData) -> Void) throws -> ListenerSubscription
27
27
  func addOnPlaybackRateChangeListener(listener: @escaping (_ rate: Double) -> Void) throws -> ListenerSubscription
28
28
  func addOnProgressListener(listener: @escaping (_ data: onProgressData) -> Void) throws -> ListenerSubscription
29
+ func addOnPlayerErrorListener(listener: @escaping (_ message: String) -> Void) throws -> ListenerSubscription
29
30
  func addOnReadyToDisplayListener(listener: @escaping () -> Void) throws -> ListenerSubscription
30
31
  func addOnSeekListener(listener: @escaping (_ position: Double) -> Void) throws -> ListenerSubscription
31
32
  func addOnStatusChangeListener(listener: @escaping (_ status: VideoPlayerStatus) -> Void) throws -> ListenerSubscription
@@ -321,6 +321,23 @@ open class HybridVideoPlayerEventEmitterSpec_cxx {
321
321
  }
322
322
  }
323
323
 
324
+ @inline(__always)
325
+ public final func addOnPlayerErrorListener(listener: bridge.Func_void_std__string) -> bridge.Result_ListenerSubscription_ {
326
+ do {
327
+ let __result = try self.__implementation.addOnPlayerErrorListener(listener: { () -> (String) -> Void in
328
+ let __wrappedFunction = bridge.wrap_Func_void_std__string(listener)
329
+ return { (__message: String) -> Void in
330
+ __wrappedFunction.call(std.string(__message))
331
+ }
332
+ }())
333
+ let __resultCpp = __result
334
+ return bridge.create_Result_ListenerSubscription_(__resultCpp)
335
+ } catch (let __error) {
336
+ let __exceptionPtr = __error.toCpp()
337
+ return bridge.create_Result_ListenerSubscription_(__exceptionPtr)
338
+ }
339
+ }
340
+
324
341
  @inline(__always)
325
342
  public final func addOnReadyToDisplayListener(listener: bridge.Func_void) -> bridge.Result_ListenerSubscription_ {
326
343
  do {
@@ -26,6 +26,7 @@ namespace margelo::nitro::video {
26
26
  prototype.registerHybridMethod("addOnPlaybackStateChangeListener", &HybridVideoPlayerEventEmitterSpec::addOnPlaybackStateChangeListener);
27
27
  prototype.registerHybridMethod("addOnPlaybackRateChangeListener", &HybridVideoPlayerEventEmitterSpec::addOnPlaybackRateChangeListener);
28
28
  prototype.registerHybridMethod("addOnProgressListener", &HybridVideoPlayerEventEmitterSpec::addOnProgressListener);
29
+ prototype.registerHybridMethod("addOnPlayerErrorListener", &HybridVideoPlayerEventEmitterSpec::addOnPlayerErrorListener);
29
30
  prototype.registerHybridMethod("addOnReadyToDisplayListener", &HybridVideoPlayerEventEmitterSpec::addOnReadyToDisplayListener);
30
31
  prototype.registerHybridMethod("addOnSeekListener", &HybridVideoPlayerEventEmitterSpec::addOnSeekListener);
31
32
  prototype.registerHybridMethod("addOnStatusChangeListener", &HybridVideoPlayerEventEmitterSpec::addOnStatusChangeListener);
@@ -39,9 +39,9 @@ namespace margelo::nitro::video { struct onVolumeChangeData; }
39
39
  #include "onLoadStartData.hpp"
40
40
  #include "onPlaybackStateChangeData.hpp"
41
41
  #include "onProgressData.hpp"
42
+ #include <string>
42
43
  #include "VideoPlayerStatus.hpp"
43
44
  #include "TimedMetadata.hpp"
44
- #include <string>
45
45
  #include <vector>
46
46
  #include "onVolumeChangeData.hpp"
47
47
 
@@ -88,6 +88,7 @@ namespace margelo::nitro::video {
88
88
  virtual ListenerSubscription addOnPlaybackStateChangeListener(const std::function<void(const onPlaybackStateChangeData& /* data */)>& listener) = 0;
89
89
  virtual ListenerSubscription addOnPlaybackRateChangeListener(const std::function<void(double /* rate */)>& listener) = 0;
90
90
  virtual ListenerSubscription addOnProgressListener(const std::function<void(const onProgressData& /* data */)>& listener) = 0;
91
+ virtual ListenerSubscription addOnPlayerErrorListener(const std::function<void(const std::string& /* message */)>& listener) = 0;
91
92
  virtual ListenerSubscription addOnReadyToDisplayListener(const std::function<void()>& listener) = 0;
92
93
  virtual ListenerSubscription addOnSeekListener(const std::function<void(double /* position */)>& listener) = 0;
93
94
  virtual ListenerSubscription addOnStatusChangeListener(const std::function<void(VideoPlayerStatus /* status */)>& listener) = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pigeonmal/react-native-video",
3
- "version": "7.0.0-beta.15",
3
+ "version": "7.0.0-beta.16",
4
4
  "description": "<Video /> Component for React Native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -7,6 +7,7 @@ import {
7
7
  type JSVideoPlayerEvents,
8
8
  type AllPlayerEvents as PlayerEvents,
9
9
  } from './types/Events';
10
+ import { VideoError } from './types/VideoError';
10
11
 
11
12
  export class VideoPlayerEvents {
12
13
  protected eventEmitter: VideoPlayerEventEmitter;
@@ -48,11 +49,20 @@ export class VideoPlayerEvents {
48
49
  this.jsEventListeners.onError.add(
49
50
  callback as JSVideoPlayerEvents['onError']
50
51
  );
52
+ const nativeCallback = (message: string) =>
53
+ (callback as JSVideoPlayerEvents['onError'])(
54
+ new VideoError('player/playback-exception', message)
55
+ );
56
+
57
+ const removeNative =
58
+ this.eventEmitter.addOnPlayerErrorListener(nativeCallback);
51
59
  return {
52
- remove: () =>
60
+ remove: () => {
53
61
  this.jsEventListeners.onError?.delete(
54
62
  callback as JSVideoPlayerEvents['onError']
55
- ),
63
+ );
64
+ removeNative.remove();
65
+ },
56
66
  };
57
67
  // ----------------- Native Events -----------------
58
68
  case 'onAudioBecomingNoisy':
@@ -6,7 +6,8 @@ export type PlayerError =
6
6
  | 'player/released'
7
7
  | 'player/not-initialized'
8
8
  | 'player/asset-not-initialized'
9
- | 'player/invalid-source';
9
+ | 'player/invalid-source'
10
+ | 'player/playback-exception';
10
11
 
11
12
  export type SourceError =
12
13
  | 'source/invalid-uri'
@@ -133,6 +133,15 @@ export interface VideoPlayerEventEmitter
133
133
  listener: (data: onProgressData) => void
134
134
  ): ListenerSubscription;
135
135
 
136
+ /**
137
+ * Adds a listener for the `onPlayerError` event.
138
+ * @param listener - The listener to add.
139
+ * @returns A subscription object that can be used to remove the listener.
140
+ */
141
+ addOnPlayerErrorListener(
142
+ listener: (message: string) => void
143
+ ): ListenerSubscription;
144
+
136
145
  /**
137
146
  * Adds a listener for the `onReadyToDisplay` event.
138
147
  * @see {@link VideoPlayerEvents.onReadyToDisplay}
@@ -1,2 +0,0 @@
1
- configurations.maybeCreate("default")
2
- artifacts.add("default", file('ffmpeg.aar'))