senza-sdk 4.2.51-c1ae854.0 → 4.2.51-c4000e6.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 +102 -12
- package/src/utils.js +9 -0
package/package.json
CHANGED
package/src/remotePlayer.js
CHANGED
|
@@ -10,7 +10,8 @@ import {
|
|
|
10
10
|
TargetPlayingState,
|
|
11
11
|
isSubtitlesTranslationAllowed,
|
|
12
12
|
isSubtitlesTranslationPattern,
|
|
13
|
-
SetAudioLanguageState
|
|
13
|
+
SetAudioLanguageState,
|
|
14
|
+
SetSubtitleLanguageState
|
|
14
15
|
} from "./utils";
|
|
15
16
|
import { lifecycle } from "./lifecycle";
|
|
16
17
|
import { writeLicenseResponse } from "./api";
|
|
@@ -892,6 +893,7 @@ class RemotePlayer extends EventTarget {
|
|
|
892
893
|
throw new RemotePlayerError(6501, "Cannot call load() while previous load/unload is still in progress");
|
|
893
894
|
}
|
|
894
895
|
this._abortSetAudioLanguage = true;
|
|
896
|
+
this._abortSetSubtitleLanguage = true;
|
|
895
897
|
this._abortSeeking = true;
|
|
896
898
|
if (reset) {
|
|
897
899
|
this._reset();
|
|
@@ -1065,6 +1067,18 @@ class RemotePlayer extends EventTarget {
|
|
|
1065
1067
|
}
|
|
1066
1068
|
}
|
|
1067
1069
|
|
|
1070
|
+
if (this._isSetAudioByApplication) {
|
|
1071
|
+
sdkLogger.info("application requesting play during setAudioLanguage");
|
|
1072
|
+
this._targetSetAudioPlayingState = TargetPlayingState.PLAYING_UI;
|
|
1073
|
+
return Promise.resolve(true);
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
if (this._isSetSubtitleByApplication) {
|
|
1077
|
+
sdkLogger.info("application requesting play during setSubtitleLanguage");
|
|
1078
|
+
this._targetSetSubtitlePlayingState = TargetPlayingState.PLAYING_UI;
|
|
1079
|
+
return Promise.resolve(true);
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1068
1082
|
// If seeking in progress, wait for seek to complete before playing
|
|
1069
1083
|
if (this._isSeekingByApplication) {
|
|
1070
1084
|
sdkLogger.info("application requesting play during seek");
|
|
@@ -1104,6 +1118,16 @@ class RemotePlayer extends EventTarget {
|
|
|
1104
1118
|
this._targetSeekPlayingState = TargetPlayingState.PAUSED;
|
|
1105
1119
|
return Promise.resolve(true);
|
|
1106
1120
|
}
|
|
1121
|
+
if (this._isSetAudioByApplication) {
|
|
1122
|
+
sdkLogger.info("application requesting pause during setAudioLanguage");
|
|
1123
|
+
this._targetSetAudioPlayingState = TargetPlayingState.PAUSED;
|
|
1124
|
+
return Promise.resolve(true);
|
|
1125
|
+
}
|
|
1126
|
+
if (this._isSetSubtitleByApplication) {
|
|
1127
|
+
sdkLogger.info("application requesting pause during setSubtitleLanguage");
|
|
1128
|
+
this._targetSetSubtitlePlayingState = TargetPlayingState.PAUSED;
|
|
1129
|
+
return Promise.resolve(true);
|
|
1130
|
+
}
|
|
1107
1131
|
return this._pause();
|
|
1108
1132
|
}
|
|
1109
1133
|
|
|
@@ -1349,7 +1373,8 @@ class RemotePlayer extends EventTarget {
|
|
|
1349
1373
|
case 2:
|
|
1350
1374
|
return this._selectTextTrackV2(textTrackId, prevSelectedTextTrack);
|
|
1351
1375
|
default:
|
|
1352
|
-
|
|
1376
|
+
this._pendingSubtitleLanguage = textTrackId;
|
|
1377
|
+
return this._atomicSetSubtitleLanguage();
|
|
1353
1378
|
}
|
|
1354
1379
|
}
|
|
1355
1380
|
|
|
@@ -1676,9 +1701,65 @@ class RemotePlayer extends EventTarget {
|
|
|
1676
1701
|
sdkLogger.info("Seeking: local video element seeking end");
|
|
1677
1702
|
}
|
|
1678
1703
|
|
|
1704
|
+
async _atomicSetSubtitleLanguage() {
|
|
1705
|
+
sdkLogger.info("SetSubtitleLanguage: local video element set start while isPLaying=", this._isPlaying);
|
|
1706
|
+
|
|
1707
|
+
this._targetSetSubtitlePlayingState = this._isPlaying ? TargetPlayingState.PLAYING_UI : TargetPlayingState.PAUSED;
|
|
1708
|
+
this._abortSetSubtitleLanguage = false;
|
|
1709
|
+
this._isSetSubtitleByApplication = true;
|
|
1710
|
+
|
|
1711
|
+
let state = SetSubtitleLanguageState.INIT;
|
|
1712
|
+
|
|
1713
|
+
let previousPendingSubtitleLanguage = this._pendingSubtitleLanguage;
|
|
1714
|
+
let initialSubtitleLanguage = this._pendingSubtitleLanguage;
|
|
1715
|
+
let res;
|
|
1716
|
+
|
|
1717
|
+
while (!this._abortSetSubtitleLanguage && state !== SetSubtitleLanguageState.DONE) {
|
|
1718
|
+
try {
|
|
1719
|
+
switch(state) {
|
|
1720
|
+
case SetSubtitleLanguageState.INIT:
|
|
1721
|
+
state = this._isPlaying ? SetSubtitleLanguageState.STOPPED : SetSubtitleLanguageState.SET;
|
|
1722
|
+
break;
|
|
1723
|
+
case SetSubtitleLanguageState.STOPPED:
|
|
1724
|
+
//sdkLogger.error("BEFORE STOP BEFORE SET SUBTITLE");
|
|
1725
|
+
await lifecycle.moveToForeground();
|
|
1726
|
+
//sdkLogger.error("AFTER STOP BEFORE SET SUBTITLE");
|
|
1727
|
+
state = SetSubtitleLanguageState.SET;
|
|
1728
|
+
break;
|
|
1729
|
+
case SetSubtitleLanguageState.SET:
|
|
1730
|
+
initialSubtitleLanguage = this._pendingSubtitleLanguage;
|
|
1731
|
+
previousPendingSubtitleLanguage = this._selectedSubtitleTrack;
|
|
1732
|
+
res = await this._selectTextTrackV3(initialSubtitleLanguage, previousPendingSubtitleLanguage);
|
|
1733
|
+
//sdkLogger.error("BEFORE PLAY AFTER SET SUBTITLE 1");
|
|
1734
|
+
state = SetSubtitleLanguageState.DONE;
|
|
1735
|
+
break;
|
|
1736
|
+
}
|
|
1737
|
+
} catch (error) {
|
|
1738
|
+
sdkLogger.error(`Error during set subtitle process: ${error.message}`);
|
|
1739
|
+
state = SetSubtitleLanguageState.DONE;
|
|
1740
|
+
res = Promise.reject(error);
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
if (!this._abortSetSubtitleLanguage) {
|
|
1745
|
+
//sdkLogger.error("TARGET PLAYING STATE", this._targetSetSubtitlePlayingState);
|
|
1746
|
+
if (this._targetSetSubtitlePlayingState === TargetPlayingState.PLAYING_UI) {
|
|
1747
|
+
//sdkLogger.error("BEFORE PLAY AFTER SET SUBTITLE 2");
|
|
1748
|
+
this._play();
|
|
1749
|
+
} else if (this._targetSetSubtitlePlayingState === TargetPlayingState.PLAYING_ABR) {
|
|
1750
|
+
//sdkLogger.error("BEFORE MOVE_TO_BACKGROUND AFTER SET SUBTITLE");
|
|
1751
|
+
lifecycle._moveToBackground();
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
this._isSetSubtitleByApplication = false;
|
|
1755
|
+
sdkLogger.info("SetSubtitleLanguage: local video element set subtitle end");
|
|
1756
|
+
return res
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1679
1759
|
async _atomicSetAudioLanguage() {
|
|
1680
|
-
sdkLogger.info("
|
|
1760
|
+
sdkLogger.info("SetAudioLanguage: local video element set start while isPLaying=", this._isPlaying);
|
|
1681
1761
|
|
|
1762
|
+
this._targetSetAudioPlayingState = this._isPlaying ? TargetPlayingState.PLAYING_UI : TargetPlayingState.PAUSED;
|
|
1682
1763
|
this._abortSetAudioLanguage = false;
|
|
1683
1764
|
this._isSetAudioByApplication = true;
|
|
1684
1765
|
|
|
@@ -1703,21 +1784,30 @@ class RemotePlayer extends EventTarget {
|
|
|
1703
1784
|
initialAudioLanguage = this._pendingAudioLanguage;
|
|
1704
1785
|
previousPendingAudioLanguage = this._selectedAudioTrack;
|
|
1705
1786
|
res = await this._selectAudioTrackV3(initialAudioLanguage, previousPendingAudioLanguage);
|
|
1787
|
+
//sdkLogger.error("BEFORE PLAY AFTER SET AUDIO 1");
|
|
1706
1788
|
state = SetAudioLanguageState.DONE;
|
|
1707
1789
|
break;
|
|
1708
1790
|
}
|
|
1709
1791
|
} catch (error) {
|
|
1710
|
-
sdkLogger.error(`Error during
|
|
1711
|
-
state =
|
|
1792
|
+
sdkLogger.error(`Error during set audio process: ${error.message}`);
|
|
1793
|
+
state = SetAudioLanguageState.DONE;
|
|
1712
1794
|
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
1795
|
}
|
|
1720
|
-
}
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
if (!this._abortSetAudioLanguage) {
|
|
1799
|
+
//sdkLogger.error("TARGET PLAYING STATE", this._targetSetAudioPlayingState);
|
|
1800
|
+
if (this._targetSetAudioPlayingState === TargetPlayingState.PLAYING_UI) {
|
|
1801
|
+
//sdkLogger.error("BEFORE PLAY AFTER SET AUDIO 2");
|
|
1802
|
+
this._play();
|
|
1803
|
+
} else if (this._targetSetAudioPlayingState === TargetPlayingState.PLAYING_ABR) {
|
|
1804
|
+
//sdkLogger.error("BEFORE MOVE_TO_BACKGROUND AFTER SET AUDIO");
|
|
1805
|
+
lifecycle._moveToBackground();
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
this._isSetAudioByApplication = false;
|
|
1810
|
+
sdkLogger.info("SetAudioLanguage: local video element set audio end");
|
|
1721
1811
|
return res
|
|
1722
1812
|
}
|
|
1723
1813
|
}
|
package/src/utils.js
CHANGED
|
@@ -164,6 +164,15 @@ export const SetAudioLanguageState = Object.freeze({
|
|
|
164
164
|
DONE: "done"
|
|
165
165
|
});
|
|
166
166
|
|
|
167
|
+
export const SetSubtitleLanguageState = Object.freeze({
|
|
168
|
+
INIT: "init",
|
|
169
|
+
STOPPED: "stopped",
|
|
170
|
+
SET: "set",
|
|
171
|
+
MULTI_SET: "multiSet",
|
|
172
|
+
WAITING: "waiting",
|
|
173
|
+
DONE: "done"
|
|
174
|
+
});
|
|
175
|
+
|
|
167
176
|
export const iso6393to1 = {
|
|
168
177
|
"aar": "aa",
|
|
169
178
|
"abk": "ab",
|