shaka-player 4.9.0 → 4.9.2
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/deps.js +1 -1
- package/dist/locales.js +33 -33
- package/dist/shaka-player.compiled.d.ts +0 -1
- package/dist/shaka-player.compiled.debug.d.ts +0 -1
- package/dist/shaka-player.compiled.debug.externs.js +0 -1
- package/dist/shaka-player.compiled.debug.js +222 -219
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +0 -1
- package/dist/shaka-player.compiled.js +961 -961
- package/dist/shaka-player.compiled.map +2 -2
- package/dist/shaka-player.ui.d.ts +0 -1
- package/dist/shaka-player.ui.debug.d.ts +0 -1
- package/dist/shaka-player.ui.debug.externs.js +0 -1
- package/dist/shaka-player.ui.debug.js +140 -135
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.externs.js +0 -1
- package/dist/shaka-player.ui.js +1229 -1228
- package/dist/shaka-player.ui.map +3 -3
- package/lib/media/content_workarounds.js +4 -2
- package/lib/media/drm_engine.js +1 -1
- package/lib/media/media_source_engine.js +66 -31
- package/lib/media/preload_manager.js +42 -62
- package/lib/player.js +25 -17
- package/lib/polyfill/mediasource.js +12 -0
- package/lib/transmuxer/aac_transmuxer.js +4 -2
- package/lib/transmuxer/ac3_transmuxer.js +2 -1
- package/lib/transmuxer/ec3_transmuxer.js +2 -1
- package/lib/transmuxer/mp3_transmuxer.js +4 -2
- package/lib/transmuxer/mpeg_ts_transmuxer.js +2 -1
- package/lib/transmuxer/mss_transmuxer.js +4 -2
- package/lib/transmuxer/ts_transmuxer.js +44 -24
- package/lib/util/config_utils.js +2 -0
- package/lib/util/error.js +10 -8
- package/lib/util/object_utils.js +1 -2
- package/lib/util/platform.js +11 -2
- package/package.json +1 -1
- package/ui/audio_language_selection.js +4 -0
- package/ui/presentation_time.js +15 -0
- package/ui/resolution_selection.js +7 -0
- package/ui/text_selection.js +4 -0
|
@@ -128,7 +128,8 @@ shaka.transmuxer.Mp3Transmuxer = class {
|
|
|
128
128
|
return Promise.reject(new shaka.util.Error(
|
|
129
129
|
shaka.util.Error.Severity.CRITICAL,
|
|
130
130
|
shaka.util.Error.Category.MEDIA,
|
|
131
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
131
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
132
|
+
reference ? reference.getUris()[0] : null));
|
|
132
133
|
}
|
|
133
134
|
if (!firstHeader) {
|
|
134
135
|
firstHeader = header;
|
|
@@ -155,7 +156,8 @@ shaka.transmuxer.Mp3Transmuxer = class {
|
|
|
155
156
|
return Promise.reject(new shaka.util.Error(
|
|
156
157
|
shaka.util.Error.Severity.CRITICAL,
|
|
157
158
|
shaka.util.Error.Category.MEDIA,
|
|
158
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
159
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
160
|
+
reference ? reference.getUris()[0] : null));
|
|
159
161
|
}
|
|
160
162
|
/** @type {number} */
|
|
161
163
|
const sampleRate = firstHeader.sampleRate;
|
|
@@ -147,7 +147,8 @@ shaka.transmuxer.MpegTsTransmuxer = class {
|
|
|
147
147
|
return Promise.reject(new shaka.util.Error(
|
|
148
148
|
shaka.util.Error.Severity.CRITICAL,
|
|
149
149
|
shaka.util.Error.Category.MEDIA,
|
|
150
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
150
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
151
|
+
reference ? reference.getUris()[0] : null));
|
|
151
152
|
}
|
|
152
153
|
|
|
153
154
|
let transmuxData = new Uint8Array([]);
|
|
@@ -226,7 +226,8 @@ shaka.transmuxer.MssTransmuxer = class {
|
|
|
226
226
|
return Promise.reject(new shaka.util.Error(
|
|
227
227
|
shaka.util.Error.Severity.CRITICAL,
|
|
228
228
|
shaka.util.Error.Category.MEDIA,
|
|
229
|
-
shaka.util.Error.Code.MSS_MISSING_DATA_FOR_TRANSMUXING
|
|
229
|
+
shaka.util.Error.Code.MSS_MISSING_DATA_FOR_TRANSMUXING,
|
|
230
|
+
reference ? reference.getUris()[0] : null));
|
|
230
231
|
}
|
|
231
232
|
try {
|
|
232
233
|
const transmuxedData = this.processMediaSegment_(
|
|
@@ -239,7 +240,8 @@ shaka.transmuxer.MssTransmuxer = class {
|
|
|
239
240
|
return Promise.reject(new shaka.util.Error(
|
|
240
241
|
shaka.util.Error.Severity.CRITICAL,
|
|
241
242
|
shaka.util.Error.Category.MEDIA,
|
|
242
|
-
shaka.util.Error.Code.MSS_TRANSMUXING_FAILED
|
|
243
|
+
shaka.util.Error.Code.MSS_TRANSMUXING_FAILED,
|
|
244
|
+
reference ? reference.getUris()[0] : null));
|
|
243
245
|
}
|
|
244
246
|
}
|
|
245
247
|
|
|
@@ -192,7 +192,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
192
192
|
return Promise.reject(new shaka.util.Error(
|
|
193
193
|
shaka.util.Error.Severity.CRITICAL,
|
|
194
194
|
shaka.util.Error.Category.MEDIA,
|
|
195
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
195
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
196
|
+
reference ? reference.getUris()[0] : null));
|
|
196
197
|
}
|
|
197
198
|
}
|
|
198
199
|
offset = id3Data.length;
|
|
@@ -209,7 +210,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
209
210
|
return Promise.reject(new shaka.util.Error(
|
|
210
211
|
shaka.util.Error.Severity.CRITICAL,
|
|
211
212
|
shaka.util.Error.Category.MEDIA,
|
|
212
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
213
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
214
|
+
reference ? reference.getUris()[0] : null));
|
|
213
215
|
}
|
|
214
216
|
|
|
215
217
|
if (!this.tsParser_) {
|
|
@@ -247,19 +249,19 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
247
249
|
break;
|
|
248
250
|
case 'ac3':
|
|
249
251
|
streamInfo =
|
|
250
|
-
this.getAc3StreamInfo_(tsParser, stream, duration);
|
|
252
|
+
this.getAc3StreamInfo_(tsParser, stream, duration, reference);
|
|
251
253
|
break;
|
|
252
254
|
case 'ec3':
|
|
253
255
|
streamInfo =
|
|
254
|
-
this.getEc3StreamInfo_(tsParser, stream, duration);
|
|
256
|
+
this.getEc3StreamInfo_(tsParser, stream, duration, reference);
|
|
255
257
|
break;
|
|
256
258
|
case 'mp3':
|
|
257
259
|
streamInfo =
|
|
258
|
-
this.getMp3StreamInfo_(tsParser, stream, duration);
|
|
260
|
+
this.getMp3StreamInfo_(tsParser, stream, duration, reference);
|
|
259
261
|
break;
|
|
260
262
|
case 'opus':
|
|
261
263
|
streamInfo =
|
|
262
|
-
this.getOpusStreamInfo_(tsParser, stream, duration);
|
|
264
|
+
this.getOpusStreamInfo_(tsParser, stream, duration, reference);
|
|
263
265
|
break;
|
|
264
266
|
}
|
|
265
267
|
if (streamInfo) {
|
|
@@ -278,7 +280,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
278
280
|
return Promise.reject(new shaka.util.Error(
|
|
279
281
|
shaka.util.Error.Severity.CRITICAL,
|
|
280
282
|
shaka.util.Error.Category.MEDIA,
|
|
281
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
283
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
284
|
+
reference ? reference.getUris()[0] : null));
|
|
282
285
|
}
|
|
283
286
|
|
|
284
287
|
const mp4Generator = new shaka.util.Mp4Generator(streamInfos);
|
|
@@ -327,7 +330,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
327
330
|
throw new shaka.util.Error(
|
|
328
331
|
shaka.util.Error.Severity.CRITICAL,
|
|
329
332
|
shaka.util.Error.Category.MEDIA,
|
|
330
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
333
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
334
|
+
reference ? reference.getUris()[0] : null);
|
|
331
335
|
}
|
|
332
336
|
stream.audioSamplingRate = info.sampleRate;
|
|
333
337
|
stream.channelsCount = info.channelCount;
|
|
@@ -370,7 +374,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
370
374
|
throw new shaka.util.Error(
|
|
371
375
|
shaka.util.Error.Severity.CRITICAL,
|
|
372
376
|
shaka.util.Error.Category.MEDIA,
|
|
373
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
377
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
378
|
+
reference ? reference.getUris()[0] : null);
|
|
374
379
|
}
|
|
375
380
|
|
|
376
381
|
firstPts = reference.startTime * timescale;
|
|
@@ -382,7 +387,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
382
387
|
throw new shaka.util.Error(
|
|
383
388
|
shaka.util.Error.Severity.CRITICAL,
|
|
384
389
|
shaka.util.Error.Category.MEDIA,
|
|
385
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
390
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
391
|
+
reference ? reference.getUris()[0] : null);
|
|
386
392
|
}
|
|
387
393
|
info = {
|
|
388
394
|
sampleRate: stream.audioSamplingRate,
|
|
@@ -395,7 +401,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
395
401
|
throw new shaka.util.Error(
|
|
396
402
|
shaka.util.Error.Severity.CRITICAL,
|
|
397
403
|
shaka.util.Error.Category.MEDIA,
|
|
398
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
404
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
405
|
+
reference ? reference.getUris()[0] : null);
|
|
399
406
|
}
|
|
400
407
|
const segmentDuration =
|
|
401
408
|
(reference.endTime - reference.startTime) * timescale;
|
|
@@ -451,10 +458,11 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
451
458
|
* @param {shaka.util.TsParser} tsParser
|
|
452
459
|
* @param {shaka.extern.Stream} stream
|
|
453
460
|
* @param {number} duration
|
|
461
|
+
* @param {?shaka.media.SegmentReference} reference
|
|
454
462
|
* @return {shaka.util.Mp4Generator.StreamInfo}
|
|
455
463
|
* @private
|
|
456
464
|
*/
|
|
457
|
-
getAc3StreamInfo_(tsParser, stream, duration) {
|
|
465
|
+
getAc3StreamInfo_(tsParser, stream, duration, reference) {
|
|
458
466
|
const Ac3 = shaka.transmuxer.Ac3;
|
|
459
467
|
const timescale = shaka.util.TsParser.Timescale;
|
|
460
468
|
|
|
@@ -511,7 +519,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
511
519
|
throw new shaka.util.Error(
|
|
512
520
|
shaka.util.Error.Severity.CRITICAL,
|
|
513
521
|
shaka.util.Error.Category.MEDIA,
|
|
514
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
522
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
523
|
+
reference ? reference.getUris()[0] : null);
|
|
515
524
|
}
|
|
516
525
|
|
|
517
526
|
|
|
@@ -544,10 +553,11 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
544
553
|
* @param {shaka.util.TsParser} tsParser
|
|
545
554
|
* @param {shaka.extern.Stream} stream
|
|
546
555
|
* @param {number} duration
|
|
556
|
+
* @param {?shaka.media.SegmentReference} reference
|
|
547
557
|
* @return {shaka.util.Mp4Generator.StreamInfo}
|
|
548
558
|
* @private
|
|
549
559
|
*/
|
|
550
|
-
getEc3StreamInfo_(tsParser, stream, duration) {
|
|
560
|
+
getEc3StreamInfo_(tsParser, stream, duration, reference) {
|
|
551
561
|
const Ec3 = shaka.transmuxer.Ec3;
|
|
552
562
|
const timescale = shaka.util.TsParser.Timescale;
|
|
553
563
|
|
|
@@ -604,7 +614,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
604
614
|
throw new shaka.util.Error(
|
|
605
615
|
shaka.util.Error.Severity.CRITICAL,
|
|
606
616
|
shaka.util.Error.Category.MEDIA,
|
|
607
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
617
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
618
|
+
reference ? reference.getUris()[0] : null);
|
|
608
619
|
}
|
|
609
620
|
|
|
610
621
|
|
|
@@ -637,10 +648,11 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
637
648
|
* @param {shaka.util.TsParser} tsParser
|
|
638
649
|
* @param {shaka.extern.Stream} stream
|
|
639
650
|
* @param {number} duration
|
|
651
|
+
* @param {?shaka.media.SegmentReference} reference
|
|
640
652
|
* @return {shaka.util.Mp4Generator.StreamInfo}
|
|
641
653
|
* @private
|
|
642
654
|
*/
|
|
643
|
-
getMp3StreamInfo_(tsParser, stream, duration) {
|
|
655
|
+
getMp3StreamInfo_(tsParser, stream, duration, reference) {
|
|
644
656
|
const MpegAudio = shaka.transmuxer.MpegAudio;
|
|
645
657
|
const timescale = shaka.util.TsParser.Timescale;
|
|
646
658
|
|
|
@@ -692,7 +704,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
692
704
|
throw new shaka.util.Error(
|
|
693
705
|
shaka.util.Error.Severity.CRITICAL,
|
|
694
706
|
shaka.util.Error.Category.MEDIA,
|
|
695
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
707
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
708
|
+
reference ? reference.getUris()[0] : null);
|
|
696
709
|
}
|
|
697
710
|
/** @type {number} */
|
|
698
711
|
const sampleRate = firstHeader.sampleRate;
|
|
@@ -725,10 +738,11 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
725
738
|
* @param {shaka.util.TsParser} tsParser
|
|
726
739
|
* @param {shaka.extern.Stream} stream
|
|
727
740
|
* @param {number} duration
|
|
741
|
+
* @param {?shaka.media.SegmentReference} reference
|
|
728
742
|
* @return {shaka.util.Mp4Generator.StreamInfo}
|
|
729
743
|
* @private
|
|
730
744
|
*/
|
|
731
|
-
getOpusStreamInfo_(tsParser, stream, duration) {
|
|
745
|
+
getOpusStreamInfo_(tsParser, stream, duration, reference) {
|
|
732
746
|
const Opus = shaka.transmuxer.Opus;
|
|
733
747
|
const timescale = shaka.util.TsParser.Timescale;
|
|
734
748
|
|
|
@@ -744,7 +758,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
744
758
|
throw new shaka.util.Error(
|
|
745
759
|
shaka.util.Error.Severity.CRITICAL,
|
|
746
760
|
shaka.util.Error.Category.MEDIA,
|
|
747
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
761
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
762
|
+
reference ? reference.getUris()[0] : null);
|
|
748
763
|
}
|
|
749
764
|
|
|
750
765
|
/** @type {!Uint8Array} */
|
|
@@ -798,7 +813,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
798
813
|
throw new shaka.util.Error(
|
|
799
814
|
shaka.util.Error.Severity.CRITICAL,
|
|
800
815
|
shaka.util.Error.Category.MEDIA,
|
|
801
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
816
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
817
|
+
reference ? reference.getUris()[0] : null);
|
|
802
818
|
}
|
|
803
819
|
|
|
804
820
|
stream.audioSamplingRate = opusMetadata.sampleRate;
|
|
@@ -854,7 +870,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
854
870
|
throw new shaka.util.Error(
|
|
855
871
|
shaka.util.Error.Severity.CRITICAL,
|
|
856
872
|
shaka.util.Error.Category.MEDIA,
|
|
857
|
-
shaka.util.Error.Code.TRANSMUXING_NO_VIDEO_DATA
|
|
873
|
+
shaka.util.Error.Code.TRANSMUXING_NO_VIDEO_DATA,
|
|
874
|
+
reference ? reference.getUris()[0] : null);
|
|
858
875
|
}
|
|
859
876
|
for (let i = 0; i < videoData.length; i++) {
|
|
860
877
|
const pes = videoData[i];
|
|
@@ -897,7 +914,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
897
914
|
throw new shaka.util.Error(
|
|
898
915
|
shaka.util.Error.Severity.CRITICAL,
|
|
899
916
|
shaka.util.Error.Category.MEDIA,
|
|
900
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
917
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
918
|
+
reference ? reference.getUris()[0] : null);
|
|
901
919
|
}
|
|
902
920
|
stream.height = info.height;
|
|
903
921
|
stream.width = info.width;
|
|
@@ -948,7 +966,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
948
966
|
throw new shaka.util.Error(
|
|
949
967
|
shaka.util.Error.Severity.CRITICAL,
|
|
950
968
|
shaka.util.Error.Category.MEDIA,
|
|
951
|
-
shaka.util.Error.Code.TRANSMUXING_NO_VIDEO_DATA
|
|
969
|
+
shaka.util.Error.Code.TRANSMUXING_NO_VIDEO_DATA,
|
|
970
|
+
reference ? reference.getUris()[0] : null);
|
|
952
971
|
}
|
|
953
972
|
for (let i = 0; i < videoData.length; i++) {
|
|
954
973
|
const pes = videoData[i];
|
|
@@ -991,7 +1010,8 @@ shaka.transmuxer.TsTransmuxer = class {
|
|
|
991
1010
|
throw new shaka.util.Error(
|
|
992
1011
|
shaka.util.Error.Severity.CRITICAL,
|
|
993
1012
|
shaka.util.Error.Category.MEDIA,
|
|
994
|
-
shaka.util.Error.Code.TRANSMUXING_FAILED
|
|
1013
|
+
shaka.util.Error.Code.TRANSMUXING_FAILED,
|
|
1014
|
+
reference ? reference.getUris()[0] : null);
|
|
995
1015
|
}
|
|
996
1016
|
stream.height = info.height;
|
|
997
1017
|
stream.width = info.width;
|
package/lib/util/config_utils.js
CHANGED
|
@@ -211,6 +211,8 @@ shaka.util.ConfigUtils = class {
|
|
|
211
211
|
delete obj[key];
|
|
212
212
|
} else if (isArrayEmpty(obj[key])) {
|
|
213
213
|
delete obj[key];
|
|
214
|
+
} else if (typeof obj[key] == 'function') {
|
|
215
|
+
delete obj[key];
|
|
214
216
|
} else if (isObject(obj[key])) {
|
|
215
217
|
removeEmpty(obj[key]);
|
|
216
218
|
}
|
package/lib/util/error.js
CHANGED
|
@@ -456,6 +456,7 @@ shaka.util.Error.Code = {
|
|
|
456
456
|
/**
|
|
457
457
|
* A MediaSource operation failed.
|
|
458
458
|
* <br> error.data[0] is a MediaError code from the video element.
|
|
459
|
+
* <br> error.data[1] is the segment URI that triggered the error, if any.
|
|
459
460
|
*/
|
|
460
461
|
'MEDIA_SOURCE_OPERATION_FAILED': 3014,
|
|
461
462
|
|
|
@@ -463,6 +464,7 @@ shaka.util.Error.Code = {
|
|
|
463
464
|
* A MediaSource operation threw an exception.
|
|
464
465
|
* <br> error.data[0] is the exception that was thrown.
|
|
465
466
|
* <br> error.data[1] is the error object from the video element.
|
|
467
|
+
* <br> error.data[2] is the segment URI that triggered the error, if any.
|
|
466
468
|
*/
|
|
467
469
|
'MEDIA_SOURCE_OPERATION_THREW': 3015,
|
|
468
470
|
|
|
@@ -485,37 +487,37 @@ shaka.util.Error.Code = {
|
|
|
485
487
|
'QUOTA_EXCEEDED_ERROR': 3017,
|
|
486
488
|
|
|
487
489
|
/**
|
|
488
|
-
*
|
|
490
|
+
* Transmuxing with our internal transmuxer failed.
|
|
491
|
+
* <br> error.data[0] is the segment URI that triggered the error, if any.
|
|
489
492
|
*/
|
|
490
493
|
'TRANSMUXING_FAILED': 3018,
|
|
491
494
|
|
|
492
495
|
/**
|
|
493
496
|
* Content transformations required by the platform could not be performed for
|
|
494
497
|
* some reason (unsupported container, etc.)
|
|
495
|
-
*
|
|
496
|
-
*
|
|
498
|
+
* <br> @see https://github.com/shaka-project/shaka-player/issues/2759
|
|
499
|
+
* <br> error.data[0] is the segment URI that triggered the error, if any.
|
|
497
500
|
*/
|
|
498
501
|
'CONTENT_TRANSFORMATION_FAILED': 3019,
|
|
499
502
|
|
|
500
503
|
/**
|
|
501
504
|
* Important data is missing to be able to do the transmuxing of MSS.
|
|
505
|
+
* <br> error.data[0] is the segment URI that triggered the error, if any.
|
|
502
506
|
*/
|
|
503
507
|
'MSS_MISSING_DATA_FOR_TRANSMUXING': 3020,
|
|
504
508
|
|
|
505
|
-
|
|
506
|
-
* MSS transmuing failed for unknown codec.
|
|
507
|
-
* <br> error.data[0] is a unknown codec.
|
|
508
|
-
*/
|
|
509
|
-
'MSS_TRANSMUXING_CODEC_UNKNOWN': 3021,
|
|
509
|
+
// RETIRED: 'MSS_TRANSMUXING_CODEC_UNKNOWN': 3021,
|
|
510
510
|
|
|
511
511
|
/**
|
|
512
512
|
* MSS transmuing failed for unknown reason.
|
|
513
|
+
* <br> error.data[0] is the segment URI that triggered the error, if any.
|
|
513
514
|
*/
|
|
514
515
|
'MSS_TRANSMUXING_FAILED': 3022,
|
|
515
516
|
|
|
516
517
|
/**
|
|
517
518
|
* An internal error which indicates that transmuxing operation has no video
|
|
518
519
|
* data. This should not be seen by applications.
|
|
520
|
+
* <br> error.data[0] is the segment URI that triggered the error, if any.
|
|
519
521
|
*/
|
|
520
522
|
'TRANSMUXING_NO_VIDEO_DATA': 3023,
|
|
521
523
|
|
package/lib/util/object_utils.js
CHANGED
|
@@ -41,8 +41,7 @@ shaka.util.ObjectUtils = class {
|
|
|
41
41
|
|
|
42
42
|
// This covers Uint8Array and friends, even without a TypedArray
|
|
43
43
|
// base-class constructor.
|
|
44
|
-
const isTypedArray =
|
|
45
|
-
val.buffer && val.buffer.constructor == ArrayBuffer;
|
|
44
|
+
const isTypedArray = val.buffer instanceof ArrayBuffer;
|
|
46
45
|
if (isTypedArray) {
|
|
47
46
|
return val;
|
|
48
47
|
}
|
package/lib/util/platform.js
CHANGED
|
@@ -299,7 +299,8 @@ shaka.util.Platform = class {
|
|
|
299
299
|
!shaka.util.Platform.isOrange() &&
|
|
300
300
|
!shaka.util.Platform.isPS4() &&
|
|
301
301
|
!shaka.util.Platform.isAmazonFireTV() &&
|
|
302
|
-
!shaka.util.Platform.isWPE()
|
|
302
|
+
!shaka.util.Platform.isWPE() &&
|
|
303
|
+
!shaka.util.Platform.isZenterio();
|
|
303
304
|
}
|
|
304
305
|
|
|
305
306
|
/**
|
|
@@ -362,6 +363,14 @@ shaka.util.Platform = class {
|
|
|
362
363
|
return shaka.util.Platform.userAgentContains_('WPE');
|
|
363
364
|
}
|
|
364
365
|
|
|
366
|
+
/**
|
|
367
|
+
* Check if the current platform is Deutsche Telecom Zenterio STB.
|
|
368
|
+
* @return {boolean}
|
|
369
|
+
*/
|
|
370
|
+
static isZenterio() {
|
|
371
|
+
return shaka.util.Platform.userAgentContains_('DT_STB_BCM');
|
|
372
|
+
}
|
|
373
|
+
|
|
365
374
|
/**
|
|
366
375
|
* Returns a major version number for Safari, or Safari-based iOS browsers.
|
|
367
376
|
*
|
|
@@ -519,7 +528,7 @@ shaka.util.Platform = class {
|
|
|
519
528
|
Platform.isEOS() || Platform.isAPL() ||
|
|
520
529
|
Platform.isVirginMedia() || Platform.isOrange() ||
|
|
521
530
|
Platform.isWPE() || Platform.isChromecast() ||
|
|
522
|
-
Platform.isHisense()) {
|
|
531
|
+
Platform.isHisense() || Platform.isZenterio()) {
|
|
523
532
|
return true;
|
|
524
533
|
}
|
|
525
534
|
return false;
|
package/package.json
CHANGED
|
@@ -46,6 +46,10 @@ shaka.ui.AudioLanguageSelection = class extends shaka.ui.SettingsMenu {
|
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
|
|
49
|
+
this.eventManager.listen(this.player, 'loading', () => {
|
|
50
|
+
this.onTracksChanged_();
|
|
51
|
+
});
|
|
52
|
+
|
|
49
53
|
this.eventManager.listen(this.player, 'trackschanged', () => {
|
|
50
54
|
this.onTracksChanged_();
|
|
51
55
|
});
|
package/ui/presentation_time.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
goog.provide('shaka.ui.PresentationTimeTracker');
|
|
9
9
|
|
|
10
|
+
goog.require('shaka.ads.AdManager');
|
|
10
11
|
goog.require('shaka.ui.Controls');
|
|
11
12
|
goog.require('shaka.ui.Element');
|
|
12
13
|
goog.require('shaka.ui.Locales');
|
|
@@ -40,6 +41,10 @@ shaka.ui.PresentationTimeTracker = class extends shaka.ui.Element {
|
|
|
40
41
|
}
|
|
41
42
|
});
|
|
42
43
|
|
|
44
|
+
this.eventManager.listen(this.player, 'loading', () => {
|
|
45
|
+
shaka.ui.Utils.setDisplay(this.currentTime_, true);
|
|
46
|
+
});
|
|
47
|
+
|
|
43
48
|
this.eventManager.listen(this.controls, 'timeandseekrangeupdated', () => {
|
|
44
49
|
this.updateTime_();
|
|
45
50
|
});
|
|
@@ -47,6 +52,16 @@ shaka.ui.PresentationTimeTracker = class extends shaka.ui.Element {
|
|
|
47
52
|
this.eventManager.listen(this.player, 'trackschanged', () => {
|
|
48
53
|
this.onTracksChanged_();
|
|
49
54
|
});
|
|
55
|
+
|
|
56
|
+
this.eventManager.listen(
|
|
57
|
+
this.adManager, shaka.ads.AdManager.AD_STARTED, () => {
|
|
58
|
+
shaka.ui.Utils.setDisplay(this.currentTime_, false);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
this.eventManager.listen(
|
|
62
|
+
this.adManager, shaka.ads.AdManager.AD_STOPPED, () => {
|
|
63
|
+
shaka.ui.Utils.setDisplay(this.currentTime_, true);
|
|
64
|
+
});
|
|
50
65
|
}
|
|
51
66
|
|
|
52
67
|
/** @private */
|
|
@@ -50,6 +50,10 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
|
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
this.eventManager.listen(this.player, 'loading', () => {
|
|
54
|
+
this.updateResolutionSelection_();
|
|
55
|
+
});
|
|
56
|
+
|
|
53
57
|
this.eventManager.listen(this.player, 'variantchanged', () => {
|
|
54
58
|
this.updateResolutionSelection_();
|
|
55
59
|
});
|
|
@@ -136,6 +140,9 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
|
|
|
136
140
|
tracks.sort((t1, t2) => {
|
|
137
141
|
goog.asserts.assert(t1.height != null, 'Null height');
|
|
138
142
|
goog.asserts.assert(t2.height != null, 'Null height');
|
|
143
|
+
if (t2.height == t1.height) {
|
|
144
|
+
return t2.bandwidth - t1.bandwidth;
|
|
145
|
+
}
|
|
139
146
|
return t2.height - t1.height;
|
|
140
147
|
});
|
|
141
148
|
}
|
package/ui/text_selection.js
CHANGED
|
@@ -64,6 +64,10 @@ shaka.ui.TextSelection = class extends shaka.ui.SettingsMenu {
|
|
|
64
64
|
this.updateTextLanguages_();
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
+
this.eventManager.listen(this.player, 'loading', () => {
|
|
68
|
+
this.onTracksChanged_();
|
|
69
|
+
});
|
|
70
|
+
|
|
67
71
|
this.eventManager.listen(this.player, 'texttrackvisibility', () => {
|
|
68
72
|
this.onCaptionStateChange_();
|
|
69
73
|
this.updateTextLanguages_();
|