@pigeonmal/react-native-video 7.0.0-beta.4 → 7.0.0-beta.5
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.
- package/README.md +1 -0
- package/android/src/main/java/com/twg/video/hybrids/videoplayer/HybridVideoPlayer.kt +18 -6
- package/android/src/main/java/com/twg/video/hybrids/videoplayersource/HybridVideoPlayerSourceFactory.kt +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoConfig.d.ts +1 -0
- package/lib/typescript/commonjs/src/core/types/VideoConfig.d.ts.map +1 -1
- package/lib/typescript/module/src/core/types/VideoConfig.d.ts +1 -0
- package/lib/typescript/module/src/core/types/VideoConfig.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JNativeVideoConfig.hpp +5 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/video/NativeVideoConfig.kt +5 -2
- package/nitrogen/generated/ios/swift/NativeVideoConfig.swift +24 -1
- package/nitrogen/generated/shared/c++/NativeVideoConfig.hpp +5 -1
- package/package.json +1 -1
- package/src/core/types/VideoConfig.ts +1 -0
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ Features:
|
|
|
19
19
|
- videoconfig: forceType 'm3u8' or 'mpd' if url not have explicit extension
|
|
20
20
|
- videoconfig: forceOkhttp cronet by default but still okhttp work
|
|
21
21
|
- videoconfig: initialSubtitleDelay (ms positive or negative)
|
|
22
|
+
- videoconfig: startPosition (in ms)
|
|
22
23
|
- player.subtitleDelay for subtitle delay adjust (ms positive or negative)
|
|
23
24
|
- player.getAllPlayerTracks() for get all current tracks (audios, videos, texts)
|
|
24
25
|
- player.selectTrackById and selectTrackByIndex for select video or audio or text
|
|
@@ -65,7 +65,7 @@ class HybridVideoPlayer() : HybridVideoPlayerSpec() {
|
|
|
65
65
|
return@runOnMainThreadSync ExoPlayer.Builder(context).build()
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
private
|
|
68
|
+
private var renderersFactory: MyRenderersFactory?
|
|
69
69
|
|
|
70
70
|
var loadedWithSource = false
|
|
71
71
|
private var currentPlayerView: WeakReference<PlayerView>? = null
|
|
@@ -129,8 +129,8 @@ class HybridVideoPlayer() : HybridVideoPlayerSpec() {
|
|
|
129
129
|
)
|
|
130
130
|
|
|
131
131
|
override var subtitleDelay: Long by mainThreadProperty(
|
|
132
|
-
get = { renderersFactory
|
|
133
|
-
set = { value -> runOnMainThread { renderersFactory
|
|
132
|
+
get = { renderersFactory?.getTextOffset() ?: 0L },
|
|
133
|
+
set = { value -> runOnMainThread { renderersFactory?.setTextOffset(value * 1_000L) } }
|
|
134
134
|
)
|
|
135
135
|
|
|
136
136
|
// volume defined by user
|
|
@@ -258,14 +258,20 @@ class HybridVideoPlayer() : HybridVideoPlayerSpec() {
|
|
|
258
258
|
player = ExoPlayer.Builder(context)
|
|
259
259
|
.setLoadControl(loadControl)
|
|
260
260
|
.setLooper(Looper.getMainLooper())
|
|
261
|
-
.setRenderersFactory(renderersFactory)
|
|
261
|
+
.setRenderersFactory(renderersFactory!!)
|
|
262
262
|
.build()
|
|
263
263
|
|
|
264
264
|
loadedWithSource = true
|
|
265
265
|
|
|
266
266
|
player.addListener(playerListener)
|
|
267
267
|
player.addAnalyticsListener(analyticsListener)
|
|
268
|
-
|
|
268
|
+
|
|
269
|
+
val startPosition = hybridSource.config.startPosition
|
|
270
|
+
if (startPosition != null && startPosition > 0L) {
|
|
271
|
+
player.setMediaSource(hybridSource.mediaSource, startPosition)
|
|
272
|
+
} else {
|
|
273
|
+
player.setMediaSource(hybridSource.mediaSource)
|
|
274
|
+
}
|
|
269
275
|
|
|
270
276
|
// Emit onLoadStart
|
|
271
277
|
val sourceType = if (hybridSource.uri.startsWith("http")) SourceType.NETWORK else SourceType.LOCAL
|
|
@@ -333,7 +339,13 @@ class HybridVideoPlayer() : HybridVideoPlayerSpec() {
|
|
|
333
339
|
runOnMainThreadSync {
|
|
334
340
|
// Update source
|
|
335
341
|
this.source = source
|
|
336
|
-
|
|
342
|
+
renderersFactory?.setTextOffset((hybridSource.config.initialSubtitleDelay ?: 0L) * 1_000L)
|
|
343
|
+
val startPosition = hybridSource.config.startPosition
|
|
344
|
+
if (startPosition != null && startPosition > 0L) {
|
|
345
|
+
player.setMediaSource(hybridSource.mediaSource, startPosition)
|
|
346
|
+
} else {
|
|
347
|
+
player.setMediaSource(hybridSource.mediaSource)
|
|
348
|
+
}
|
|
337
349
|
|
|
338
350
|
// Prepare player
|
|
339
351
|
player.prepare()
|
|
@@ -57,6 +57,7 @@ export type VideoConfig = {
|
|
|
57
57
|
/** Positive or negative delay in millis */
|
|
58
58
|
initialSubtitleDelay?: bigint;
|
|
59
59
|
forceOkhttp?: boolean;
|
|
60
|
+
startPosition?: bigint;
|
|
60
61
|
/**
|
|
61
62
|
* when the player is created, this flag will determine if native player should be initialized immediately.
|
|
62
63
|
* If set to true, the player will be initialized as soon as player is created
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,GAAG,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,yDAAyD;IACzD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAUF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElE,UAAU,gCAAgC;IACxC;;;OAGG;IACH,GAAG,EAAE,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC;IACjC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,8BAA8B;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GACxB,gCAAgC,GAChC,8BAA8B,CAAC;AAanC,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
1
|
+
{"version":3,"file":"VideoConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,GAAG,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,yDAAyD;IACzD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAUF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElE,UAAU,gCAAgC;IACxC;;;OAGG;IACH,GAAG,EAAE,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC;IACjC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,8BAA8B;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GACxB,gCAAgC,GAChC,8BAA8B,CAAC;AAanC,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -57,6 +57,7 @@ export type VideoConfig = {
|
|
|
57
57
|
/** Positive or negative delay in millis */
|
|
58
58
|
initialSubtitleDelay?: bigint;
|
|
59
59
|
forceOkhttp?: boolean;
|
|
60
|
+
startPosition?: bigint;
|
|
60
61
|
/**
|
|
61
62
|
* when the player is created, this flag will determine if native player should be initialized immediately.
|
|
62
63
|
* If set to true, the player will be initialized as soon as player is created
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,GAAG,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,yDAAyD;IACzD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAUF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElE,UAAU,gCAAgC;IACxC;;;OAGG;IACH,GAAG,EAAE,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC;IACjC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,8BAA8B;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GACxB,gCAAgC,GAChC,8BAA8B,CAAC;AAanC,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
1
|
+
{"version":3,"file":"VideoConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/core/types/VideoConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,GAAG,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,yDAAyD;IACzD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAUF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElE,UAAU,gCAAgC;IACxC;;;OAGG;IACH,GAAG,EAAE,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC;IACjC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,8BAA8B;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GACxB,gCAAgC,GAChC,8BAA8B,CAAC;AAanC,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -77,6 +77,8 @@ namespace margelo::nitro::video {
|
|
|
77
77
|
jni::local_ref<jni::JLong> initialSubtitleDelay = this->getFieldValue(fieldInitialSubtitleDelay);
|
|
78
78
|
static const auto fieldForceOkhttp = clazz->getField<jni::JBoolean>("forceOkhttp");
|
|
79
79
|
jni::local_ref<jni::JBoolean> forceOkhttp = this->getFieldValue(fieldForceOkhttp);
|
|
80
|
+
static const auto fieldStartPosition = clazz->getField<jni::JLong>("startPosition");
|
|
81
|
+
jni::local_ref<jni::JLong> startPosition = this->getFieldValue(fieldStartPosition);
|
|
80
82
|
static const auto fieldInitializeOnCreation = clazz->getField<jni::JBoolean>("initializeOnCreation");
|
|
81
83
|
jni::local_ref<jni::JBoolean> initializeOnCreation = this->getFieldValue(fieldInitializeOnCreation);
|
|
82
84
|
static const auto fieldForceType = clazz->getField<JExternalForcedType>("forceType");
|
|
@@ -116,6 +118,7 @@ namespace margelo::nitro::video {
|
|
|
116
118
|
}()) : std::nullopt,
|
|
117
119
|
initialSubtitleDelay != nullptr ? std::make_optional(initialSubtitleDelay->value()) : std::nullopt,
|
|
118
120
|
forceOkhttp != nullptr ? std::make_optional(static_cast<bool>(forceOkhttp->value())) : std::nullopt,
|
|
121
|
+
startPosition != nullptr ? std::make_optional(startPosition->value()) : std::nullopt,
|
|
119
122
|
initializeOnCreation != nullptr ? std::make_optional(static_cast<bool>(initializeOnCreation->value())) : std::nullopt,
|
|
120
123
|
forceType != nullptr ? std::make_optional(forceType->toCpp()) : std::nullopt
|
|
121
124
|
);
|
|
@@ -127,7 +130,7 @@ namespace margelo::nitro::video {
|
|
|
127
130
|
*/
|
|
128
131
|
[[maybe_unused]]
|
|
129
132
|
static jni::local_ref<JNativeVideoConfig::javaobject> fromCpp(const NativeVideoConfig& value) {
|
|
130
|
-
using JSignature = JNativeVideoConfig(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JArrayClass<JNativeExternalSubtitle>>, jni::alias_ref<JNativeDrmParams>, jni::alias_ref<jni::JMap<jni::JString, jni::JString>>, jni::alias_ref<JBufferConfig>, jni::alias_ref<JCustomVideoMetadata>, jni::alias_ref<jni::JArrayClass<JExternalAudio>>, jni::alias_ref<jni::JLong>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<JExternalForcedType>);
|
|
133
|
+
using JSignature = JNativeVideoConfig(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JArrayClass<JNativeExternalSubtitle>>, jni::alias_ref<JNativeDrmParams>, jni::alias_ref<jni::JMap<jni::JString, jni::JString>>, jni::alias_ref<JBufferConfig>, jni::alias_ref<JCustomVideoMetadata>, jni::alias_ref<jni::JArrayClass<JExternalAudio>>, jni::alias_ref<jni::JLong>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<jni::JLong>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<JExternalForcedType>);
|
|
131
134
|
static const auto clazz = javaClassStatic();
|
|
132
135
|
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
133
136
|
return create(
|
|
@@ -165,6 +168,7 @@ namespace margelo::nitro::video {
|
|
|
165
168
|
}() : nullptr,
|
|
166
169
|
value.initialSubtitleDelay.has_value() ? jni::JLong::valueOf(value.initialSubtitleDelay.value()) : nullptr,
|
|
167
170
|
value.forceOkhttp.has_value() ? jni::JBoolean::valueOf(value.forceOkhttp.value()) : nullptr,
|
|
171
|
+
value.startPosition.has_value() ? jni::JLong::valueOf(value.startPosition.value()) : nullptr,
|
|
168
172
|
value.initializeOnCreation.has_value() ? jni::JBoolean::valueOf(value.initializeOnCreation.value()) : nullptr,
|
|
169
173
|
value.forceType.has_value() ? JExternalForcedType::fromCpp(value.forceType.value()) : nullptr
|
|
170
174
|
);
|
|
@@ -46,6 +46,9 @@ data class NativeVideoConfig(
|
|
|
46
46
|
val forceOkhttp: Boolean?,
|
|
47
47
|
@DoNotStrip
|
|
48
48
|
@Keep
|
|
49
|
+
val startPosition: Long?,
|
|
50
|
+
@DoNotStrip
|
|
51
|
+
@Keep
|
|
49
52
|
val initializeOnCreation: Boolean?,
|
|
50
53
|
@DoNotStrip
|
|
51
54
|
@Keep
|
|
@@ -61,8 +64,8 @@ data class NativeVideoConfig(
|
|
|
61
64
|
@Keep
|
|
62
65
|
@Suppress("unused")
|
|
63
66
|
@JvmStatic
|
|
64
|
-
private fun fromCpp(uri: String, externalSubtitles: Array<NativeExternalSubtitle>?, drm: NativeDrmParams?, headers: Map<String, String>?, bufferConfig: BufferConfig?, metadata: CustomVideoMetadata?, externalAudios: Array<ExternalAudio>?, initialSubtitleDelay: Long?, forceOkhttp: Boolean?, initializeOnCreation: Boolean?, forceType: ExternalForcedType?): NativeVideoConfig {
|
|
65
|
-
return NativeVideoConfig(uri, externalSubtitles, drm, headers, bufferConfig, metadata, externalAudios, initialSubtitleDelay, forceOkhttp, initializeOnCreation, forceType)
|
|
67
|
+
private fun fromCpp(uri: String, externalSubtitles: Array<NativeExternalSubtitle>?, drm: NativeDrmParams?, headers: Map<String, String>?, bufferConfig: BufferConfig?, metadata: CustomVideoMetadata?, externalAudios: Array<ExternalAudio>?, initialSubtitleDelay: Long?, forceOkhttp: Boolean?, startPosition: Long?, initializeOnCreation: Boolean?, forceType: ExternalForcedType?): NativeVideoConfig {
|
|
68
|
+
return NativeVideoConfig(uri, externalSubtitles, drm, headers, bufferConfig, metadata, externalAudios, initialSubtitleDelay, forceOkhttp, startPosition, initializeOnCreation, forceType)
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
}
|
|
@@ -19,7 +19,7 @@ public extension NativeVideoConfig {
|
|
|
19
19
|
/**
|
|
20
20
|
* Create a new instance of `NativeVideoConfig`.
|
|
21
21
|
*/
|
|
22
|
-
init(uri: String, externalSubtitles: [NativeExternalSubtitle]?, drm: NativeDrmParams?, headers: Dictionary<String, String>?, bufferConfig: BufferConfig?, metadata: CustomVideoMetadata?, externalAudios: [ExternalAudio]?, initialSubtitleDelay: Int64?, forceOkhttp: Bool?, initializeOnCreation: Bool?, forceType: ExternalForcedType?) {
|
|
22
|
+
init(uri: String, externalSubtitles: [NativeExternalSubtitle]?, drm: NativeDrmParams?, headers: Dictionary<String, String>?, bufferConfig: BufferConfig?, metadata: CustomVideoMetadata?, externalAudios: [ExternalAudio]?, initialSubtitleDelay: Int64?, forceOkhttp: Bool?, startPosition: Int64?, initializeOnCreation: Bool?, forceType: ExternalForcedType?) {
|
|
23
23
|
self.init(std.string(uri), { () -> bridge.std__optional_std__vector_NativeExternalSubtitle__ in
|
|
24
24
|
if let __unwrappedValue = externalSubtitles {
|
|
25
25
|
return bridge.create_std__optional_std__vector_NativeExternalSubtitle__({ () -> bridge.std__vector_NativeExternalSubtitle_ in
|
|
@@ -86,6 +86,12 @@ public extension NativeVideoConfig {
|
|
|
86
86
|
} else {
|
|
87
87
|
return .init()
|
|
88
88
|
}
|
|
89
|
+
}(), { () -> bridge.std__optional_int64_t_ in
|
|
90
|
+
if let __unwrappedValue = startPosition {
|
|
91
|
+
return bridge.create_std__optional_int64_t_(__unwrappedValue)
|
|
92
|
+
} else {
|
|
93
|
+
return .init()
|
|
94
|
+
}
|
|
89
95
|
}(), { () -> bridge.std__optional_bool_ in
|
|
90
96
|
if let __unwrappedValue = initializeOnCreation {
|
|
91
97
|
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
@@ -302,6 +308,23 @@ public extension NativeVideoConfig {
|
|
|
302
308
|
}
|
|
303
309
|
}
|
|
304
310
|
|
|
311
|
+
var startPosition: Int64? {
|
|
312
|
+
@inline(__always)
|
|
313
|
+
get {
|
|
314
|
+
return self.__startPosition.value
|
|
315
|
+
}
|
|
316
|
+
@inline(__always)
|
|
317
|
+
set {
|
|
318
|
+
self.__startPosition = { () -> bridge.std__optional_int64_t_ in
|
|
319
|
+
if let __unwrappedValue = newValue {
|
|
320
|
+
return bridge.create_std__optional_int64_t_(__unwrappedValue)
|
|
321
|
+
} else {
|
|
322
|
+
return .init()
|
|
323
|
+
}
|
|
324
|
+
}()
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
305
328
|
var initializeOnCreation: Bool? {
|
|
306
329
|
@inline(__always)
|
|
307
330
|
get {
|
|
@@ -63,12 +63,13 @@ namespace margelo::nitro::video {
|
|
|
63
63
|
std::optional<std::vector<ExternalAudio>> externalAudios SWIFT_PRIVATE;
|
|
64
64
|
std::optional<int64_t> initialSubtitleDelay SWIFT_PRIVATE;
|
|
65
65
|
std::optional<bool> forceOkhttp SWIFT_PRIVATE;
|
|
66
|
+
std::optional<int64_t> startPosition SWIFT_PRIVATE;
|
|
66
67
|
std::optional<bool> initializeOnCreation SWIFT_PRIVATE;
|
|
67
68
|
std::optional<ExternalForcedType> forceType SWIFT_PRIVATE;
|
|
68
69
|
|
|
69
70
|
public:
|
|
70
71
|
NativeVideoConfig() = default;
|
|
71
|
-
explicit NativeVideoConfig(std::string uri, std::optional<std::vector<NativeExternalSubtitle>> externalSubtitles, std::optional<NativeDrmParams> drm, std::optional<std::unordered_map<std::string, std::string>> headers, std::optional<BufferConfig> bufferConfig, std::optional<CustomVideoMetadata> metadata, std::optional<std::vector<ExternalAudio>> externalAudios, std::optional<int64_t> initialSubtitleDelay, std::optional<bool> forceOkhttp, std::optional<bool> initializeOnCreation, std::optional<ExternalForcedType> forceType): uri(uri), externalSubtitles(externalSubtitles), drm(drm), headers(headers), bufferConfig(bufferConfig), metadata(metadata), externalAudios(externalAudios), initialSubtitleDelay(initialSubtitleDelay), forceOkhttp(forceOkhttp), initializeOnCreation(initializeOnCreation), forceType(forceType) {}
|
|
72
|
+
explicit NativeVideoConfig(std::string uri, std::optional<std::vector<NativeExternalSubtitle>> externalSubtitles, std::optional<NativeDrmParams> drm, std::optional<std::unordered_map<std::string, std::string>> headers, std::optional<BufferConfig> bufferConfig, std::optional<CustomVideoMetadata> metadata, std::optional<std::vector<ExternalAudio>> externalAudios, std::optional<int64_t> initialSubtitleDelay, std::optional<bool> forceOkhttp, std::optional<int64_t> startPosition, std::optional<bool> initializeOnCreation, std::optional<ExternalForcedType> forceType): uri(uri), externalSubtitles(externalSubtitles), drm(drm), headers(headers), bufferConfig(bufferConfig), metadata(metadata), externalAudios(externalAudios), initialSubtitleDelay(initialSubtitleDelay), forceOkhttp(forceOkhttp), startPosition(startPosition), initializeOnCreation(initializeOnCreation), forceType(forceType) {}
|
|
72
73
|
};
|
|
73
74
|
|
|
74
75
|
} // namespace margelo::nitro::video
|
|
@@ -90,6 +91,7 @@ namespace margelo::nitro {
|
|
|
90
91
|
JSIConverter<std::optional<std::vector<margelo::nitro::video::ExternalAudio>>>::fromJSI(runtime, obj.getProperty(runtime, "externalAudios")),
|
|
91
92
|
JSIConverter<std::optional<int64_t>>::fromJSI(runtime, obj.getProperty(runtime, "initialSubtitleDelay")),
|
|
92
93
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "forceOkhttp")),
|
|
94
|
+
JSIConverter<std::optional<int64_t>>::fromJSI(runtime, obj.getProperty(runtime, "startPosition")),
|
|
93
95
|
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "initializeOnCreation")),
|
|
94
96
|
JSIConverter<std::optional<margelo::nitro::video::ExternalForcedType>>::fromJSI(runtime, obj.getProperty(runtime, "forceType"))
|
|
95
97
|
);
|
|
@@ -105,6 +107,7 @@ namespace margelo::nitro {
|
|
|
105
107
|
obj.setProperty(runtime, "externalAudios", JSIConverter<std::optional<std::vector<margelo::nitro::video::ExternalAudio>>>::toJSI(runtime, arg.externalAudios));
|
|
106
108
|
obj.setProperty(runtime, "initialSubtitleDelay", JSIConverter<std::optional<int64_t>>::toJSI(runtime, arg.initialSubtitleDelay));
|
|
107
109
|
obj.setProperty(runtime, "forceOkhttp", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.forceOkhttp));
|
|
110
|
+
obj.setProperty(runtime, "startPosition", JSIConverter<std::optional<int64_t>>::toJSI(runtime, arg.startPosition));
|
|
108
111
|
obj.setProperty(runtime, "initializeOnCreation", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.initializeOnCreation));
|
|
109
112
|
obj.setProperty(runtime, "forceType", JSIConverter<std::optional<margelo::nitro::video::ExternalForcedType>>::toJSI(runtime, arg.forceType));
|
|
110
113
|
return obj;
|
|
@@ -126,6 +129,7 @@ namespace margelo::nitro {
|
|
|
126
129
|
if (!JSIConverter<std::optional<std::vector<margelo::nitro::video::ExternalAudio>>>::canConvert(runtime, obj.getProperty(runtime, "externalAudios"))) return false;
|
|
127
130
|
if (!JSIConverter<std::optional<int64_t>>::canConvert(runtime, obj.getProperty(runtime, "initialSubtitleDelay"))) return false;
|
|
128
131
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "forceOkhttp"))) return false;
|
|
132
|
+
if (!JSIConverter<std::optional<int64_t>>::canConvert(runtime, obj.getProperty(runtime, "startPosition"))) return false;
|
|
129
133
|
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "initializeOnCreation"))) return false;
|
|
130
134
|
if (!JSIConverter<std::optional<margelo::nitro::video::ExternalForcedType>>::canConvert(runtime, obj.getProperty(runtime, "forceType"))) return false;
|
|
131
135
|
return true;
|
package/package.json
CHANGED
|
@@ -59,6 +59,7 @@ export type VideoConfig = {
|
|
|
59
59
|
/** Positive or negative delay in millis */
|
|
60
60
|
initialSubtitleDelay?: bigint;
|
|
61
61
|
forceOkhttp?: boolean;
|
|
62
|
+
startPosition?: bigint;
|
|
62
63
|
/**
|
|
63
64
|
* when the player is created, this flag will determine if native player should be initialized immediately.
|
|
64
65
|
* If set to true, the player will be initialized as soon as player is created
|