senza-sdk 4.2.55-3686561.0 → 4.2.55-5e1095e.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/lifecycle.js +15 -6
- package/src/remotePlayer.js +66 -42
package/package.json
CHANGED
package/src/lifecycle.js
CHANGED
|
@@ -710,15 +710,24 @@ class Lifecycle extends EventTarget {
|
|
|
710
710
|
* Failure to process the moveToBackground command will result in the promise being rejected.
|
|
711
711
|
*/
|
|
712
712
|
moveToBackground() {
|
|
713
|
-
if (
|
|
714
|
-
if (
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
713
|
+
if (window.cefQuery) {
|
|
714
|
+
if (this._inTransition || this._state === this.UiState.BACKGROUND || this._state === this.UiState.IN_TRANSITION_TO_BACKGROUND) {
|
|
715
|
+
sdkLogger.warn(`lifecycle moveToBackground: No need to transition to background, state: ${this._state} transition: ${this._inTransition}`);
|
|
716
|
+
return Promise.resolve(false);
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
if (remotePlayer._isSeekingByApplication) {
|
|
719
720
|
remotePlayer._targetSeekPlayingState = TargetPlayingState.PLAYING_ABR;
|
|
720
721
|
return Promise.resolve(true);
|
|
721
722
|
}
|
|
723
|
+
if (remotePlayer._isSetSubtitlesInProgress) {
|
|
724
|
+
remotePlayer._targetSetSubtitlePlayingState = TargetPlayingState.PLAYING_ABR;
|
|
725
|
+
return Promise.resolve(true);
|
|
726
|
+
}
|
|
727
|
+
if (remotePlayer._isSetAudioInProgress) {
|
|
728
|
+
remotePlayer._targetSetAudioPlayingState = TargetPlayingState.PLAYING_ABR;
|
|
729
|
+
return Promise.resolve(true);
|
|
730
|
+
}
|
|
722
731
|
}
|
|
723
732
|
return this._moveToBackground();
|
|
724
733
|
}
|
package/src/remotePlayer.js
CHANGED
|
@@ -715,10 +715,8 @@ class RemotePlayer extends EventTarget {
|
|
|
715
715
|
};
|
|
716
716
|
let waitForResponse = false;
|
|
717
717
|
if (this._remotePlayerApiVersion >= 2) {
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
message.streamType = streamType;
|
|
721
|
-
}
|
|
718
|
+
message.switchMode = this._isAudioSyncEnabled() ? SwitchMode.SEAMLESS : SwitchMode.NON_SEAMLESS;
|
|
719
|
+
message.streamType = streamType;
|
|
722
720
|
waitForResponse = true;
|
|
723
721
|
}
|
|
724
722
|
const request = { target: "TC", waitForResponse: waitForResponse, message: JSON.stringify(message) };
|
|
@@ -1626,6 +1624,11 @@ class RemotePlayer extends EventTarget {
|
|
|
1626
1624
|
* @private
|
|
1627
1625
|
*/
|
|
1628
1626
|
async _startSeeking(playbackPosition) {
|
|
1627
|
+
if (this._isSetAudioInProgress || this._isSetSubtitlesInProgress) {
|
|
1628
|
+
sdkLogger.info("Seeking not supported while setAudioLanguage or setSubtitleLanguage are in progress.");
|
|
1629
|
+
return;
|
|
1630
|
+
}
|
|
1631
|
+
|
|
1629
1632
|
if (!this._isSeekingByPlatform) {
|
|
1630
1633
|
this._pendingSeekPosition = playbackPosition;
|
|
1631
1634
|
|
|
@@ -1756,6 +1759,10 @@ class RemotePlayer extends EventTarget {
|
|
|
1756
1759
|
sdkLogger.warn(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} already in progress, ignoring.`);
|
|
1757
1760
|
return Promise.resolve();
|
|
1758
1761
|
}
|
|
1762
|
+
if (this._isSeekingByApplication) {
|
|
1763
|
+
sdkLogger.warn(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} ignored. seeking is already in progress.`);
|
|
1764
|
+
return Promise.resolve();
|
|
1765
|
+
}
|
|
1759
1766
|
|
|
1760
1767
|
this._targetSetAudioPlayingState = this._isPlaying ? TargetPlayingState.PLAYING_UI : TargetPlayingState.PAUSED;
|
|
1761
1768
|
sdkLogger.log(`remotePlayer _atomicSetAudioLanguage: prevAudioTrack=${prevSelectedAudioTrack} audioTrackId=${audioTrackId} isPlaying=${this._isPlaying} targetState=${this._targetSetAudioPlayingState}`);
|
|
@@ -1763,48 +1770,54 @@ class RemotePlayer extends EventTarget {
|
|
|
1763
1770
|
this._abortSetAudioLanguage = false;
|
|
1764
1771
|
this._isSetAudioInProgress = true;
|
|
1765
1772
|
|
|
1766
|
-
let res;
|
|
1767
|
-
let isStopped = false; // flag to call play if selectAudioV3 fails
|
|
1768
|
-
|
|
1769
1773
|
try {
|
|
1770
1774
|
await this._stop(StreamType.AUDIO);
|
|
1771
1775
|
if (this._abortSetAudioLanguage) {
|
|
1772
1776
|
this._isSetAudioInProgress = false;
|
|
1773
1777
|
sdkLogger.warn(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} aborted.`);
|
|
1774
|
-
return
|
|
1778
|
+
return Promise.resolve();
|
|
1775
1779
|
}
|
|
1776
|
-
isStopped = true;
|
|
1777
1780
|
} catch (error) {
|
|
1778
1781
|
this._isSetAudioInProgress = false;
|
|
1779
1782
|
sdkLogger.warn(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} failed on stop. aborting.`);
|
|
1780
1783
|
return Promise.reject(error);
|
|
1781
1784
|
}
|
|
1782
1785
|
|
|
1786
|
+
let setLanguageError;
|
|
1783
1787
|
try {
|
|
1784
|
-
|
|
1785
|
-
if (this._abortSetAudioLanguage) {
|
|
1786
|
-
this._isSetAudioInProgress = false;
|
|
1787
|
-
sdkLogger.warn(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} aborted.`);
|
|
1788
|
-
return res;
|
|
1789
|
-
}
|
|
1788
|
+
await this._selectAudioTrackV3(audioTrackId);
|
|
1790
1789
|
} catch (error) {
|
|
1791
1790
|
sdkLogger.error(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} failed with error ${error.message}.`);
|
|
1792
|
-
|
|
1791
|
+
if (!this._abortSetAudioLanguage) {
|
|
1792
|
+
setLanguageError = error;
|
|
1793
|
+
}
|
|
1793
1794
|
}
|
|
1794
1795
|
|
|
1795
|
-
|
|
1796
|
-
|
|
1796
|
+
// check if load/unload were called
|
|
1797
|
+
if (this._abortSetAudioLanguage) {
|
|
1798
|
+
this._isSetAudioInProgress = false;
|
|
1799
|
+
sdkLogger.warn(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} aborted.`);
|
|
1800
|
+
return Promise.resolve();
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
try {
|
|
1804
|
+
if (this._targetSetAudioPlayingState === TargetPlayingState.PLAYING_UI) {
|
|
1805
|
+
if (!this._isAudioSyncEnabled()) {
|
|
1806
|
+
this._isSetAudioInProgress = false;
|
|
1807
|
+
return Promise.resolve(true);
|
|
1808
|
+
}
|
|
1809
|
+
// resume audio play only if _isAudioSyncEnabled
|
|
1797
1810
|
await this._play(StreamType.AUDIO);
|
|
1798
|
-
}
|
|
1799
|
-
|
|
1800
|
-
sdkLogger.error(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} failed to play with error ${error.message}.`);
|
|
1801
|
-
return Promise.reject(error);
|
|
1811
|
+
} else if (this._targetSetAudioPlayingState === TargetPlayingState.PLAYING_ABR) {
|
|
1812
|
+
await lifecycle._moveToBackground();
|
|
1802
1813
|
}
|
|
1814
|
+
} catch (error) {
|
|
1815
|
+
sdkLogger.error(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} play failed with error ${error.message}.`);
|
|
1803
1816
|
}
|
|
1804
1817
|
|
|
1805
1818
|
this._isSetAudioInProgress = false;
|
|
1806
1819
|
sdkLogger.log(`remotePlayer _atomicSetAudioLanguage: audioTrackId=${audioTrackId} ended.`);
|
|
1807
|
-
return
|
|
1820
|
+
return setLanguageError ? Promise.reject(setLanguageError) : Promise.resolve();
|
|
1808
1821
|
}
|
|
1809
1822
|
|
|
1810
1823
|
async _atomicSetSubtitleLanguage(textTrackId, prevSelectedTextTrack) {
|
|
@@ -1812,6 +1825,10 @@ class RemotePlayer extends EventTarget {
|
|
|
1812
1825
|
sdkLogger.warn(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} already in progress., ignoring.`);
|
|
1813
1826
|
return Promise.resolve();
|
|
1814
1827
|
}
|
|
1828
|
+
if (this._isSeekingByApplication) {
|
|
1829
|
+
sdkLogger.warn(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} ignored. seeking is already in progress.`);
|
|
1830
|
+
return Promise.resolve();
|
|
1831
|
+
}
|
|
1815
1832
|
|
|
1816
1833
|
this._targetSetSubtitlePlayingState = this._isPlaying ? TargetPlayingState.PLAYING_UI : TargetPlayingState.PAUSED;
|
|
1817
1834
|
sdkLogger.log(`remotePlayer _atomicSetSubtitleLanguage: prevTextTrack=${prevSelectedTextTrack} textTrackId=${textTrackId} isPlaying=${this._isPlaying} targetState=${this._targetSetSubtitlePlayingState}`);
|
|
@@ -1819,47 +1836,54 @@ class RemotePlayer extends EventTarget {
|
|
|
1819
1836
|
this._abortSetSubtitleLanguage = false;
|
|
1820
1837
|
this._isSetSubtitlesInProgress = true;
|
|
1821
1838
|
|
|
1822
|
-
let res;
|
|
1823
|
-
let isStopped = false;
|
|
1824
1839
|
try {
|
|
1825
1840
|
await this._stop(StreamType.SUBTITLE);
|
|
1826
1841
|
if (this._abortSetSubtitleLanguage) {
|
|
1827
1842
|
this._isSetSubtitlesInProgress = false;
|
|
1828
1843
|
sdkLogger.warn(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} aborted.`);
|
|
1829
|
-
return
|
|
1844
|
+
return Promise.resolve();
|
|
1830
1845
|
}
|
|
1831
|
-
isStopped = true;
|
|
1832
1846
|
} catch (error) {
|
|
1833
1847
|
this._isSetSubtitlesInProgress = false;
|
|
1834
1848
|
sdkLogger.warn(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} failed on stop. aborting.`);
|
|
1835
1849
|
return Promise.reject(error);
|
|
1836
1850
|
}
|
|
1837
1851
|
|
|
1852
|
+
let setLanguageError;
|
|
1838
1853
|
try {
|
|
1839
|
-
|
|
1840
|
-
if (this._abortSetSubtitleLanguage) {
|
|
1841
|
-
this._isSetSubtitlesInProgress = false;
|
|
1842
|
-
sdkLogger.warn(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} aborted.`);
|
|
1843
|
-
return res;
|
|
1844
|
-
}
|
|
1854
|
+
await this._selectTextTrackV3(textTrackId);
|
|
1845
1855
|
} catch (error) {
|
|
1846
1856
|
sdkLogger.error(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} failed with error ${error.message}.`);
|
|
1847
|
-
|
|
1857
|
+
if (!this._abortSetSubtitleLanguage) {
|
|
1858
|
+
setLanguageError = error;
|
|
1859
|
+
}
|
|
1848
1860
|
}
|
|
1849
1861
|
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
}
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1862
|
+
// check if load/unload were called
|
|
1863
|
+
if (this._abortSetSubtitleLanguage) {
|
|
1864
|
+
this._isSetSubtitlesInProgress = false;
|
|
1865
|
+
sdkLogger.warn(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} aborted.`);
|
|
1866
|
+
return Promise.resolve();
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
try {
|
|
1870
|
+
if (this._targetSetSubtitlePlayingState === TargetPlayingState.PLAYING_UI) {
|
|
1871
|
+
if (!this._isAudioSyncEnabled()) {
|
|
1872
|
+
this._isSetSubtitlesInProgress = false;
|
|
1873
|
+
return Promise.resolve(true);
|
|
1874
|
+
}
|
|
1875
|
+
// resume audio play only if _isAudioSyncEnabled
|
|
1876
|
+
await this._play(StreamType.AUDIO);
|
|
1877
|
+
} else if (this._targetSetSubtitlePlayingState === TargetPlayingState.PLAYING_ABR) {
|
|
1878
|
+
await lifecycle._moveToBackground();
|
|
1857
1879
|
}
|
|
1880
|
+
} catch (error) {
|
|
1881
|
+
sdkLogger.error(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} play failed with error ${error.message}.`);
|
|
1858
1882
|
}
|
|
1859
1883
|
|
|
1860
1884
|
this._isSetSubtitlesInProgress = false;
|
|
1861
1885
|
sdkLogger.log(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} ended.`);
|
|
1862
|
-
return
|
|
1886
|
+
return setLanguageError ? Promise.reject(setLanguageError) : Promise.resolve();
|
|
1863
1887
|
}
|
|
1864
1888
|
|
|
1865
1889
|
}
|