senza-sdk 4.2.51-90a45e8.0 → 4.2.51-c1ae854.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.
- package/dist/bundle.js +1 -1
- package/package.json +1 -1
- package/src/remotePlayer.js +51 -4
- package/src/utils.js +9 -0
package/package.json
CHANGED
package/src/remotePlayer.js
CHANGED
|
@@ -9,7 +9,8 @@ import {
|
|
|
9
9
|
SeekState,
|
|
10
10
|
TargetPlayingState,
|
|
11
11
|
isSubtitlesTranslationAllowed,
|
|
12
|
-
isSubtitlesTranslationPattern
|
|
12
|
+
isSubtitlesTranslationPattern,
|
|
13
|
+
SetAudioLanguageState
|
|
13
14
|
} from "./utils";
|
|
14
15
|
import { lifecycle } from "./lifecycle";
|
|
15
16
|
import { writeLicenseResponse } from "./api";
|
|
@@ -890,6 +891,7 @@ class RemotePlayer extends EventTarget {
|
|
|
890
891
|
if (this._loadMode === this.LoadMode.LOADING || this._loadMode === this.LoadMode.UNLOADING) {
|
|
891
892
|
throw new RemotePlayerError(6501, "Cannot call load() while previous load/unload is still in progress");
|
|
892
893
|
}
|
|
894
|
+
this._abortSetAudioLanguage = true;
|
|
893
895
|
this._abortSeeking = true;
|
|
894
896
|
if (reset) {
|
|
895
897
|
this._reset();
|
|
@@ -1209,7 +1211,8 @@ class RemotePlayer extends EventTarget {
|
|
|
1209
1211
|
case 2:
|
|
1210
1212
|
return this._selectAudioTrackV2(audioTrackId, prevSelectedAudioTrack);
|
|
1211
1213
|
default:
|
|
1212
|
-
|
|
1214
|
+
this._pendingAudioLanguage = audioTrackId;
|
|
1215
|
+
return this._atomicSetAudioLanguage();
|
|
1213
1216
|
}
|
|
1214
1217
|
}
|
|
1215
1218
|
|
|
@@ -1271,7 +1274,6 @@ class RemotePlayer extends EventTarget {
|
|
|
1271
1274
|
action: "setAudioLanguage",
|
|
1272
1275
|
fcid: FCID,
|
|
1273
1276
|
language: audioTrackId,
|
|
1274
|
-
playbackPosition: this.currentTime
|
|
1275
1277
|
};
|
|
1276
1278
|
const request = { target: "TC", waitForResponse: true, message: JSON.stringify(message) };
|
|
1277
1279
|
return new Promise((resolve, reject) => {
|
|
@@ -1303,6 +1305,7 @@ class RemotePlayer extends EventTarget {
|
|
|
1303
1305
|
}, timeout, queryId);
|
|
1304
1306
|
});
|
|
1305
1307
|
}
|
|
1308
|
+
|
|
1306
1309
|
sdkLogger.error("remotePlayer _selectAudioTrackV3: window.cefQuery is undefined");
|
|
1307
1310
|
return Promise.resolve(undefined);
|
|
1308
1311
|
}
|
|
@@ -1408,7 +1411,6 @@ class RemotePlayer extends EventTarget {
|
|
|
1408
1411
|
action: "setSubtitleLanguage",
|
|
1409
1412
|
fcid: FCID,
|
|
1410
1413
|
language: textTrackId,
|
|
1411
|
-
playbackPosition: this.currentTime
|
|
1412
1414
|
};
|
|
1413
1415
|
const request = { target: "TC", waitForResponse: true, message: JSON.stringify(message) };
|
|
1414
1416
|
return new Promise((resolve, reject) => {
|
|
@@ -1673,6 +1675,51 @@ class RemotePlayer extends EventTarget {
|
|
|
1673
1675
|
this._isSeekingByApplication = false;
|
|
1674
1676
|
sdkLogger.info("Seeking: local video element seeking end");
|
|
1675
1677
|
}
|
|
1678
|
+
|
|
1679
|
+
async _atomicSetAudioLanguage() {
|
|
1680
|
+
sdkLogger.info("Seeking: local video element seeking start while isPLaying=", this._isPlaying);
|
|
1681
|
+
|
|
1682
|
+
this._abortSetAudioLanguage = false;
|
|
1683
|
+
this._isSetAudioByApplication = true;
|
|
1684
|
+
|
|
1685
|
+
let state = SetAudioLanguageState.INIT;
|
|
1686
|
+
|
|
1687
|
+
let previousPendingAudioLanguage = this._pendingAudioLanguage;
|
|
1688
|
+
let initialAudioLanguage= this._pendingAudioLanguage;
|
|
1689
|
+
let res;
|
|
1690
|
+
|
|
1691
|
+
while (!this._abortSetAudioLanguage && state !== SetAudioLanguageState.DONE) {
|
|
1692
|
+
try {
|
|
1693
|
+
// TODO - Implement the logic for setting audio language
|
|
1694
|
+
switch(state) {
|
|
1695
|
+
case SetAudioLanguageState.INIT:
|
|
1696
|
+
state = this._isPlaying ? SetAudioLanguageState.STOPPED : SetAudioLanguageState.SET;
|
|
1697
|
+
break;
|
|
1698
|
+
case SetAudioLanguageState.STOPPED:
|
|
1699
|
+
await lifecycle.moveToForeground();
|
|
1700
|
+
state = SetAudioLanguageState.SET;
|
|
1701
|
+
break;
|
|
1702
|
+
case SetAudioLanguageState.SET:
|
|
1703
|
+
initialAudioLanguage = this._pendingAudioLanguage;
|
|
1704
|
+
previousPendingAudioLanguage = this._selectedAudioTrack;
|
|
1705
|
+
res = await this._selectAudioTrackV3(initialAudioLanguage, previousPendingAudioLanguage);
|
|
1706
|
+
state = SetAudioLanguageState.DONE;
|
|
1707
|
+
break;
|
|
1708
|
+
}
|
|
1709
|
+
} catch (error) {
|
|
1710
|
+
sdkLogger.error(`Error during seeking process: ${error.message}`);
|
|
1711
|
+
state = SeekState.DONE;
|
|
1712
|
+
res = Promise.reject(error);
|
|
1713
|
+
} finally {
|
|
1714
|
+
if (!this._abortSetAudioLanguage) {
|
|
1715
|
+
this._play();
|
|
1716
|
+
}
|
|
1717
|
+
this._isSetAudioByApplication = false;
|
|
1718
|
+
sdkLogger.info("Seeking: local video element seeking end");
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
return res
|
|
1722
|
+
}
|
|
1676
1723
|
}
|
|
1677
1724
|
/**
|
|
1678
1725
|
*
|
package/src/utils.js
CHANGED
|
@@ -155,6 +155,15 @@ export const TargetPlayingState = Object.freeze({
|
|
|
155
155
|
PLAYING_ABR: "playingAbr"
|
|
156
156
|
});
|
|
157
157
|
|
|
158
|
+
export const SetAudioLanguageState = Object.freeze({
|
|
159
|
+
INIT: "init",
|
|
160
|
+
STOPPED: "stopped",
|
|
161
|
+
SET: "set",
|
|
162
|
+
MULTI_SET: "multiSet",
|
|
163
|
+
WAITING: "waiting",
|
|
164
|
+
DONE: "done"
|
|
165
|
+
});
|
|
166
|
+
|
|
158
167
|
export const iso6393to1 = {
|
|
159
168
|
"aar": "aa",
|
|
160
169
|
"abk": "ab",
|