shaka-player 3.3.13 → 3.3.14

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.
Files changed (36) hide show
  1. package/AUTHORS +1 -0
  2. package/CHANGELOG.md +19 -0
  3. package/CONTRIBUTORS +1 -0
  4. package/dist/deps.js +1 -1
  5. package/dist/locales.js +32 -32
  6. package/dist/shaka-player.compiled.debug.js +105 -98
  7. package/dist/shaka-player.compiled.debug.map +3 -3
  8. package/dist/shaka-player.compiled.js +707 -705
  9. package/dist/shaka-player.compiled.map +3 -3
  10. package/dist/shaka-player.ui.debug.js +193 -186
  11. package/dist/shaka-player.ui.debug.map +3 -3
  12. package/dist/shaka-player.ui.js +813 -812
  13. package/dist/shaka-player.ui.map +3 -3
  14. package/docs/tutorials/welcome.md +2 -2
  15. package/externs/shaka/player.js +2 -1
  16. package/lib/cea/cea708_window.js +2 -2
  17. package/lib/dash/segment_template.js +1 -1
  18. package/lib/hls/hls_parser.js +8 -1
  19. package/lib/media/content_workarounds.js +12 -0
  20. package/lib/player.js +1 -1
  21. package/lib/polyfill/media_capabilities.js +59 -9
  22. package/lib/text/ttml_text_parser.js +32 -7
  23. package/lib/text/ui_text_displayer.js +22 -5
  24. package/lib/util/platform.js +21 -2
  25. package/lib/util/stream_utils.js +30 -10
  26. package/package.json +1 -1
  27. package/test/dash/dash_parser_manifest_unit.js +1 -0
  28. package/test/hls/hls_parser_unit.js +1 -0
  29. package/test/polyfill/media_capabilities_unit.js +261 -0
  30. package/test/text/mp4_ttml_parser_unit.js +4 -4
  31. package/test/text/ttml_text_parser_unit.js +119 -86
  32. package/test/text/ui_text_displayer_unit.js +76 -0
  33. package/test/ui/text_displayer_layout_unit.js +14 -0
  34. package/test/util/stream_utils_unit.js +18 -0
  35. package/test/util/xml_utils_unit.js +6 -1
  36. package/ui/controls.js +1 -1
@@ -13,14 +13,14 @@ describe('TtmlTextParser', () => {
13
13
  it('supports no cues', () => {
14
14
  verifyHelper([],
15
15
  '<tt></tt>',
16
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
16
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
17
17
  {});
18
18
  });
19
19
 
20
20
  it('supports empty text string', () => {
21
21
  verifyHelper([],
22
22
  '',
23
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
23
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
24
24
  {});
25
25
  });
26
26
 
@@ -28,7 +28,7 @@ describe('TtmlTextParser', () => {
28
28
  verifyHelper(
29
29
  [],
30
30
  '<tt><body><div> \r\n </div></body></tt>',
31
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
31
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
32
32
  {});
33
33
  });
34
34
 
@@ -55,7 +55,7 @@ describe('TtmlTextParser', () => {
55
55
  },
56
56
  ],
57
57
  '<tt xml:space="default">' + ttBody + '</tt>',
58
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
58
+ {periodStart: 0, segmentStart: 60, segmentEnd: 70},
59
59
  {startTime: 62.03, endTime: 62.05});
60
60
  // When xml:space="preserve", take them into account.
61
61
  verifyHelper(
@@ -81,7 +81,7 @@ describe('TtmlTextParser', () => {
81
81
  },
82
82
  ],
83
83
  '<tt xml:space="preserve">' + ttBody + '</tt>',
84
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
84
+ {periodStart: 0, segmentStart: 60, segmentEnd: 70},
85
85
  {startTime: 62.03, endTime: 62.05});
86
86
  // The default value for xml:space is "default".
87
87
  verifyHelper(
@@ -97,7 +97,7 @@ describe('TtmlTextParser', () => {
97
97
  },
98
98
  ],
99
99
  '<tt>' + ttBody + '</tt>',
100
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
100
+ {periodStart: 0, segmentStart: 60, segmentEnd: 70},
101
101
  {startTime: 62.03, endTime: 62.05});
102
102
 
103
103
  // Any other value is rejected as an error.
@@ -128,7 +128,7 @@ describe('TtmlTextParser', () => {
128
128
  },
129
129
  ],
130
130
  '<tt>' + ttBody + '</tt>',
131
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
131
+ {periodStart: 0, segmentStart: 60, segmentEnd: 70},
132
132
  {startTime: 62.03, endTime: 62.05});
133
133
  });
134
134
 
@@ -198,7 +198,7 @@ describe('TtmlTextParser', () => {
198
198
  '<span>First cue</span><br /><span>Second cue</span>' +
199
199
  '</p>' +
200
200
  '</div></body></tt>',
201
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
201
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
202
202
  {startTime: 62.05, endTime: 3723.2});
203
203
  });
204
204
 
@@ -234,7 +234,7 @@ describe('TtmlTextParser', () => {
234
234
  'First cue<br />Second cue' +
235
235
  '</p>' +
236
236
  '</div></body></tt>',
237
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
237
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
238
238
  {startTime: 62.05, endTime: 3723.2});
239
239
  });
240
240
 
@@ -293,7 +293,7 @@ describe('TtmlTextParser', () => {
293
293
  '</span>' +
294
294
  '</p>' +
295
295
  '</div></body></tt>',
296
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
296
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
297
297
  {startTime: 62.05, endTime: 3723.2});
298
298
  });
299
299
 
@@ -312,7 +312,7 @@ describe('TtmlTextParser', () => {
312
312
  '<div><p begin="01:02.05" end="01:02:03.200">' +
313
313
  '<span>Test</span></p></div>' +
314
314
  '</body></tt>',
315
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
315
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
316
316
  {startTime: 62.05, endTime: 3723.2});
317
317
  });
318
318
 
@@ -342,7 +342,7 @@ describe('TtmlTextParser', () => {
342
342
  '<p><div begin="01:02.05" end="01:02:03.200" ' +
343
343
  'smpte:backgroundImage="#img_0"></div></p>' +
344
344
  '</div></body></tt>',
345
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
345
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
346
346
  {startTime: 62.05, endTime: 3723.2});
347
347
  });
348
348
 
@@ -354,7 +354,7 @@ describe('TtmlTextParser', () => {
354
354
  '<tt><body><div>' +
355
355
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
356
356
  '</div></body></tt>',
357
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
357
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
358
358
  {startTime: 62.05, endTime: 3723.2});
359
359
  });
360
360
 
@@ -366,7 +366,7 @@ describe('TtmlTextParser', () => {
366
366
  '<tt><body><div>' +
367
367
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
368
368
  '</div></body></tt>',
369
- {periodStart: 7, segmentStart: 0, segmentEnd: 0},
369
+ {periodStart: 7, segmentStart: 60, segmentEnd: 3740},
370
370
  {startTime: 69.05, endTime: 3730.2});
371
371
  });
372
372
 
@@ -389,7 +389,7 @@ describe('TtmlTextParser', () => {
389
389
  '<tt><body><div>' +
390
390
  '<p begin="01:02.05" end="01:02:03.200"><span>Nested cue</span></p>' +
391
391
  '</div></body></tt>',
392
- {periodStart: 7, segmentStart: 0, segmentEnd: 0},
392
+ {periodStart: 7, segmentStart: 60, segmentEnd: 3740},
393
393
  {startTime: 69.05, endTime: 3730.2});
394
394
  });
395
395
 
@@ -401,7 +401,7 @@ describe('TtmlTextParser', () => {
401
401
  '<tt><body><div>' +
402
402
  '<p begin="59.45m30ms" end="1.5h2.3s">Test</p>' +
403
403
  '</div></body></tt>',
404
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
404
+ {periodStart: 0, segmentStart: 3560, segmentEnd: 5410},
405
405
  {startTime: 3567.03, endTime: 5402.3});
406
406
  });
407
407
 
@@ -415,7 +415,7 @@ describe('TtmlTextParser', () => {
415
415
  '<body><div>' +
416
416
  '<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
417
417
  '</div></body></tt>',
418
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
418
+ {periodStart: 0, segmentStart: 610, segmentEnd: 670},
419
419
  {startTime: 615.5, endTime: 663});
420
420
  });
421
421
 
@@ -429,7 +429,7 @@ describe('TtmlTextParser', () => {
429
429
  '<body><div>' +
430
430
  '<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
431
431
  '</div></body></tt>',
432
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
432
+ {periodStart: 0, segmentStart: 610, segmentEnd: 670},
433
433
  {startTime: 615.5, endTime: 663});
434
434
  });
435
435
 
@@ -447,7 +447,7 @@ describe('TtmlTextParser', () => {
447
447
  '<body><div>' +
448
448
  '<p begin="00:10:15:15.1" end="00:11:02:29.2">Test</p>' +
449
449
  '</div></body></tt>',
450
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
450
+ {periodStart: 0, segmentStart: 610, segmentEnd: 670},
451
451
  {startTime: Util.closeTo(615.5 + 1 / 60), endTime: 663});
452
452
  });
453
453
 
@@ -461,7 +461,7 @@ describe('TtmlTextParser', () => {
461
461
  '<body><div>' +
462
462
  '<p begin="75f" end="300.3f">Test</p>' +
463
463
  '</div></body></tt>',
464
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
464
+ {periodStart: 0, segmentStart: 0, segmentEnd: 20},
465
465
  {startTime: 2.5, endTime: Util.closeTo(10.01)});
466
466
  });
467
467
 
@@ -475,7 +475,7 @@ describe('TtmlTextParser', () => {
475
475
  '<body><div>' +
476
476
  '<p begin="50t" end="60.2t">Test</p>' +
477
477
  '</div></body></tt>',
478
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
478
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
479
479
  {startTime: 5, endTime: Util.closeTo(6.02)});
480
480
  });
481
481
 
@@ -487,7 +487,7 @@ describe('TtmlTextParser', () => {
487
487
  '<tt><body><div>' +
488
488
  '<p begin="01:02.05" dur="5s">Test</p>' +
489
489
  '</div></body></tt>',
490
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
490
+ {periodStart: 0, segmentStart: 60, segmentEnd: 70},
491
491
  {startTime: 62.05, endTime: 67.05});
492
492
  });
493
493
 
@@ -497,7 +497,7 @@ describe('TtmlTextParser', () => {
497
497
  '<tt><body><div>' +
498
498
  '<!-- text-based TTML -->' +
499
499
  '</div></body></tt>',
500
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
500
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
501
501
  {});
502
502
  });
503
503
 
@@ -517,7 +517,7 @@ describe('TtmlTextParser', () => {
517
517
  '<body region="subtitleArea"><div>' +
518
518
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
519
519
  '</div></body></tt>',
520
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
520
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
521
521
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
522
522
  {startTime: 62.05, endTime: 3723.2});
523
523
  });
@@ -539,7 +539,7 @@ describe('TtmlTextParser', () => {
539
539
  '<body region="subtitleArea"><div>' +
540
540
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
541
541
  '</div></body></tt>',
542
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
542
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
543
543
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
544
544
  {startTime: 62.05, endTime: 3723.2});
545
545
  });
@@ -561,7 +561,7 @@ describe('TtmlTextParser', () => {
561
561
  '<body region="subtitleArea"><div>' +
562
562
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
563
563
  '</div></body></tt>',
564
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
564
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
565
565
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
566
566
  {startTime: 62.05, endTime: 3723.2});
567
567
  });
@@ -586,7 +586,7 @@ describe('TtmlTextParser', () => {
586
586
  '<body region="subtitleArea"><div>' +
587
587
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
588
588
  '</div></body></tt>',
589
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
589
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
590
590
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
591
591
  {startTime: 62.05, endTime: 3723.2});
592
592
  });
@@ -611,7 +611,7 @@ describe('TtmlTextParser', () => {
611
611
  '<body region="subtitleArea"><div>' +
612
612
  '<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
613
613
  '</div></body></tt>',
614
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
614
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
615
615
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
616
616
  {startTime: 62.05, endTime: 3723.2});
617
617
  });
@@ -632,7 +632,7 @@ describe('TtmlTextParser', () => {
632
632
  '<body region="subtitleArea"><div>' +
633
633
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
634
634
  '</div></body></tt>',
635
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
635
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
636
636
  {
637
637
  region: {
638
638
  id: 'subtitleArea',
@@ -661,7 +661,7 @@ describe('TtmlTextParser', () => {
661
661
  '<body region="subtitleArea"><div>' +
662
662
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
663
663
  '</div></body></tt>',
664
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
664
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
665
665
  {
666
666
  region: {
667
667
  viewportAnchorX: 50,
@@ -689,7 +689,7 @@ describe('TtmlTextParser', () => {
689
689
  '<body region="subtitleArea"><div>' +
690
690
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
691
691
  '</div></body></tt>',
692
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
692
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
693
693
  {
694
694
  region: {
695
695
  viewportAnchorX: 50,
@@ -718,7 +718,7 @@ describe('TtmlTextParser', () => {
718
718
  '<body region="subtitleArea"><div>' +
719
719
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
720
720
  '</div></body></tt>',
721
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
721
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
722
722
  {
723
723
  region: {
724
724
  id: 'subtitleArea',
@@ -754,7 +754,7 @@ describe('TtmlTextParser', () => {
754
754
  '<body region="subtitleArea"><div>' +
755
755
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
756
756
  '</div></body></tt>',
757
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
757
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
758
758
  {
759
759
  region: {
760
760
  id: 'subtitleArea',
@@ -790,7 +790,7 @@ describe('TtmlTextParser', () => {
790
790
  '<body region="subtitleArea"><div>' +
791
791
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
792
792
  '</div></body></tt>',
793
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
793
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
794
794
  {
795
795
  region: {
796
796
  id: 'subtitleArea',
@@ -827,7 +827,7 @@ describe('TtmlTextParser', () => {
827
827
  '<body region="subtitleArea"><div>' +
828
828
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
829
829
  '</div></body></tt>',
830
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
830
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
831
831
  {
832
832
  region: {
833
833
  id: 'subtitleArea',
@@ -864,7 +864,7 @@ describe('TtmlTextParser', () => {
864
864
  '<body region="subtitleArea"><div>' +
865
865
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
866
866
  '</div></body></tt>',
867
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
867
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
868
868
  {
869
869
  region: {
870
870
  id: 'subtitleArea',
@@ -902,7 +902,7 @@ describe('TtmlTextParser', () => {
902
902
  '<body region="subtitleArea"><div>' +
903
903
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
904
904
  '</div></body></tt>',
905
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
905
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
906
906
  {
907
907
  region: {
908
908
  id: 'subtitleArea',
@@ -939,7 +939,7 @@ describe('TtmlTextParser', () => {
939
939
  '<body region="subtitleArea"><div>' +
940
940
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
941
941
  '</div></body></tt>',
942
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
942
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
943
943
  {
944
944
  region: {
945
945
  id: 'subtitleArea',
@@ -968,7 +968,7 @@ describe('TtmlTextParser', () => {
968
968
  '<body region="subtitleArea"><div>' +
969
969
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
970
970
  '</div></body></tt>',
971
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
971
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
972
972
  {
973
973
  region: {
974
974
  viewportAnchorX: 50,
@@ -996,7 +996,7 @@ describe('TtmlTextParser', () => {
996
996
  '<body region="subtitleArea"><div>' +
997
997
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
998
998
  '</div></body></tt>',
999
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
999
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1000
1000
  {
1001
1001
  region: {
1002
1002
  viewportAnchorX: 50,
@@ -1026,7 +1026,7 @@ describe('TtmlTextParser', () => {
1026
1026
  '<body region="subtitleArea"><div>' +
1027
1027
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1028
1028
  '</div></body></tt>',
1029
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1029
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1030
1030
  {
1031
1031
  region: {
1032
1032
  id: 'subtitleArea',
@@ -1058,7 +1058,7 @@ describe('TtmlTextParser', () => {
1058
1058
  '<body region="subtitleArea"><div>' +
1059
1059
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1060
1060
  '</div></body></tt>',
1061
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1061
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1062
1062
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1063
1063
  {startTime: 62.05, endTime: 3723.2});
1064
1064
 
@@ -1079,7 +1079,7 @@ describe('TtmlTextParser', () => {
1079
1079
  '<body region="subtitleArea"><div>' +
1080
1080
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1081
1081
  '</div></body></tt>',
1082
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1082
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1083
1083
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1084
1084
  {startTime: 62.05, endTime: 3723.2});
1085
1085
 
@@ -1100,7 +1100,7 @@ describe('TtmlTextParser', () => {
1100
1100
  '<body region="subtitleArea"><div>' +
1101
1101
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1102
1102
  '</div></body></tt>',
1103
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1103
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1104
1104
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1105
1105
  {startTime: 62.05, endTime: 3723.2});
1106
1106
 
@@ -1121,7 +1121,7 @@ describe('TtmlTextParser', () => {
1121
1121
  '<body region="subtitleArea"><div>' +
1122
1122
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1123
1123
  '</div></body></tt>',
1124
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1124
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1125
1125
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1126
1126
  {startTime: 62.05, endTime: 3723.2});
1127
1127
 
@@ -1142,7 +1142,7 @@ describe('TtmlTextParser', () => {
1142
1142
  '<body region="subtitleArea"><div>' +
1143
1143
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1144
1144
  '</div></body></tt>',
1145
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1145
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1146
1146
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1147
1147
  {startTime: 62.05, endTime: 3723.2});
1148
1148
  });
@@ -1160,7 +1160,7 @@ describe('TtmlTextParser', () => {
1160
1160
  '<div></div>' +
1161
1161
  '</body>' +
1162
1162
  '</tt>',
1163
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1163
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1164
1164
  {startTime: 62.05, endTime: 3723.2});
1165
1165
 
1166
1166
  verifyHelper(
@@ -1175,7 +1175,7 @@ describe('TtmlTextParser', () => {
1175
1175
  '</div>' +
1176
1176
  '</body>' +
1177
1177
  '</tt>',
1178
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1178
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1179
1179
  {startTime: 62.05, endTime: 3723.2});
1180
1180
 
1181
1181
  verifyHelper(
@@ -1188,7 +1188,7 @@ describe('TtmlTextParser', () => {
1188
1188
  '<div></div>' +
1189
1189
  '</body>' +
1190
1190
  '</tt>',
1191
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1191
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1192
1192
  {});
1193
1193
  });
1194
1194
 
@@ -1205,7 +1205,7 @@ describe('TtmlTextParser', () => {
1205
1205
  '</div>' +
1206
1206
  '</body>' +
1207
1207
  '</tt>',
1208
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1208
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1209
1209
  {startTime: 62.05, endTime: 3723.2});
1210
1210
  });
1211
1211
 
@@ -1228,7 +1228,7 @@ describe('TtmlTextParser', () => {
1228
1228
  '<body><div smpte:backgroundImage="#img_0">' +
1229
1229
  '<p begin="01:02.05" end="01:02:03.200"></p>' +
1230
1230
  '</div></body></tt>',
1231
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1231
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1232
1232
  {startTime: 62.05, endTime: 3723.2},
1233
1233
  {
1234
1234
  startTime: 62.05,
@@ -1251,7 +1251,7 @@ describe('TtmlTextParser', () => {
1251
1251
  '<body><div begin="00:00.00" end="01:02.05" '+
1252
1252
  'smpte:backgroundImage="#img_0"></div>' +
1253
1253
  '</body></tt>',
1254
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1254
+ {periodStart: 0, segmentStart: 0, segmentEnd: 70},
1255
1255
  {startTime: 0, endTime: 62.05},
1256
1256
  {
1257
1257
  startTime: 0,
@@ -1282,7 +1282,7 @@ describe('TtmlTextParser', () => {
1282
1282
  '<p begin="01:02.05" end="01:02:03.200" ' +
1283
1283
  'smpte:backgroundImage="#img_0" />' +
1284
1284
  '</div></body></tt>',
1285
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1285
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1286
1286
  {startTime: 62.05, endTime: 3723.2});
1287
1287
  });
1288
1288
 
@@ -1311,7 +1311,7 @@ describe('TtmlTextParser', () => {
1311
1311
  '<tt><body><div>' +
1312
1312
  '<p begin="01:02.05" end="01:02:03.200">Line1<br/>Line2</p>' +
1313
1313
  '</div></body></tt>',
1314
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1314
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1315
1315
  {startTime: 62.05, endTime: 3723.2});
1316
1316
 
1317
1317
  verifyHelper(
@@ -1345,7 +1345,7 @@ describe('TtmlTextParser', () => {
1345
1345
  '<span>Line1<br/>Line2</span>' +
1346
1346
  '</p>' +
1347
1347
  '</div></body></tt>',
1348
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1348
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1349
1349
  {startTime: 62.05, endTime: 3723.2});
1350
1350
  });
1351
1351
 
@@ -1373,7 +1373,7 @@ describe('TtmlTextParser', () => {
1373
1373
  '<body><div>' +
1374
1374
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1375
1375
  '</div></body></tt>',
1376
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1376
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1377
1377
  {startTime: 1, endTime: 2});
1378
1378
  });
1379
1379
 
@@ -1399,7 +1399,7 @@ describe('TtmlTextParser', () => {
1399
1399
  '<body region="subtitleArea"><div>' +
1400
1400
  '<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
1401
1401
  '</div></body></tt>',
1402
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1402
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1403
1403
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1404
1404
  {startTime: 62.05, endTime: 3723.2});
1405
1405
  });
@@ -1447,7 +1447,7 @@ describe('TtmlTextParser', () => {
1447
1447
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1448
1448
  '<p begin="00:02.00" end="00:04.00" style="s2">Test 2</p>' +
1449
1449
  '</div></body></tt>',
1450
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1450
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1451
1451
  {startTime: 1, endTime: 4, region: {id: 'subtitleArea'}},
1452
1452
  {startTime: 1, endTime: 4});
1453
1453
  });
@@ -1472,7 +1472,7 @@ describe('TtmlTextParser', () => {
1472
1472
  '<body region="subtitleArea"><div>' +
1473
1473
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1474
1474
  '</div></body></tt>',
1475
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1475
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1476
1476
  {startTime: 1, endTime: 2});
1477
1477
  });
1478
1478
 
@@ -1494,7 +1494,7 @@ describe('TtmlTextParser', () => {
1494
1494
  '<body region="subtitleArea"><div>' +
1495
1495
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1496
1496
  '</div></body></tt>',
1497
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1497
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1498
1498
  {startTime: 1, endTime: 2});
1499
1499
  });
1500
1500
 
@@ -1531,7 +1531,7 @@ describe('TtmlTextParser', () => {
1531
1531
  '<span style="s1">Test</span>' +
1532
1532
  '</p>' +
1533
1533
  '</div></body></tt>',
1534
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1534
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1535
1535
  {startTime: 1, endTime: 2});
1536
1536
  });
1537
1537
 
@@ -1551,7 +1551,7 @@ describe('TtmlTextParser', () => {
1551
1551
  '<span style="s1">Test</span>' +
1552
1552
  '</p>' +
1553
1553
  '</div></body></tt>',
1554
- {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1554
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1555
1555
  // The body must have these properties:
1556
1556
  {backgroundColor: 'transparent'},
1557
1557
  // The div must have these properties:
@@ -1574,7 +1574,7 @@ describe('TtmlTextParser', () => {
1574
1574
  '<span>Test</span>' +
1575
1575
  '</p>' +
1576
1576
  '</div></body></tt>',
1577
- {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1577
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1578
1578
  // The body must have these properties:
1579
1579
  {backgroundColor: 'black'},
1580
1580
  // The div must have these properties:
@@ -1601,7 +1601,7 @@ describe('TtmlTextParser', () => {
1601
1601
  '<body region="subtitleArea"><div>' +
1602
1602
  '<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
1603
1603
  '</div></body></tt>',
1604
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1604
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1605
1605
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1606
1606
  {startTime: 62.05, endTime: 3723.2});
1607
1607
  });
@@ -1629,7 +1629,7 @@ describe('TtmlTextParser', () => {
1629
1629
  '<body region="subtitleArea"><div>' +
1630
1630
  '<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
1631
1631
  '</div></body></tt>',
1632
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1632
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1633
1633
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1634
1634
  {startTime: 62.05, endTime: 3723.2});
1635
1635
  });
@@ -1654,7 +1654,7 @@ describe('TtmlTextParser', () => {
1654
1654
  '<body><div>' +
1655
1655
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1656
1656
  '</div></body></tt>',
1657
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1657
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1658
1658
  {startTime: 1, endTime: 2});
1659
1659
  });
1660
1660
 
@@ -1682,7 +1682,7 @@ describe('TtmlTextParser', () => {
1682
1682
  '<body><div>' +
1683
1683
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1684
1684
  '</div></body></tt>',
1685
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1685
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1686
1686
  {startTime: 1, endTime: 2});
1687
1687
  });
1688
1688
 
@@ -1711,7 +1711,7 @@ describe('TtmlTextParser', () => {
1711
1711
  '<body><div>' +
1712
1712
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1713
1713
  '</div></body></tt>',
1714
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1714
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1715
1715
  {startTime: 1, endTime: 2});
1716
1716
  });
1717
1717
 
@@ -1736,7 +1736,7 @@ describe('TtmlTextParser', () => {
1736
1736
  '<body region="subtitleArea"><div>' +
1737
1737
  '<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
1738
1738
  '</div></body></tt>',
1739
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1739
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1740
1740
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1741
1741
  {startTime: 62.05, endTime: 3723.2});
1742
1742
  });
@@ -1751,7 +1751,7 @@ describe('TtmlTextParser', () => {
1751
1751
  '<p begin="00:01.00" end="00:02.00">First cue</p>' +
1752
1752
  '<p begin="00:03.00" end="00:04.00">Second cue</p>' +
1753
1753
  '</div></body></tt>',
1754
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1754
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1755
1755
  {startTime: 1, endTime: 4});
1756
1756
  });
1757
1757
 
@@ -1775,7 +1775,7 @@ describe('TtmlTextParser', () => {
1775
1775
  '<tt><body><div>' +
1776
1776
  '<p begin="01:02.05" end="01:02:03.200"><span>äöü</span></p>' +
1777
1777
  '</div></body></tt>',
1778
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1778
+ {periodStart: 0, segmentStart: 60, segmentEnd: 3730},
1779
1779
  {startTime: 62.05, endTime: 3723.2});
1780
1780
  });
1781
1781
 
@@ -1792,9 +1792,10 @@ describe('TtmlTextParser', () => {
1792
1792
  '<p begin="3s" end="4s">First cue</p>' +
1793
1793
  '<p begin="4s" end="5s">Second cue</p>' +
1794
1794
  '</div></body></tt>',
1795
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1796
- {startTime: 1, endTime: Infinity},
1797
- {startTime: 3, endTime: Infinity});
1795
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10},
1796
+ // Capped to segment end time.
1797
+ {startTime: 1, endTime: 10},
1798
+ {startTime: 3, endTime: 10});
1798
1799
 
1799
1800
  verifyHelper(
1800
1801
  [{
@@ -1817,9 +1818,10 @@ describe('TtmlTextParser', () => {
1817
1818
  '<span begin="5s" end="6s">Second cue</span>' +
1818
1819
  '</p>' +
1819
1820
  '</div></body></tt>',
1820
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1821
- {startTime: 1, endTime: Infinity},
1822
- {startTime: 3, endTime: Infinity});
1821
+ {periodStart: 0, segmentStart: 0, segmentEnd: 20},
1822
+ // Capped to segment end time.
1823
+ {startTime: 1, endTime: 20},
1824
+ {startTime: 3, endTime: 20});
1823
1825
  });
1824
1826
 
1825
1827
  it('gets end time from parent directly if missing', () => {
@@ -1833,7 +1835,7 @@ describe('TtmlTextParser', () => {
1833
1835
  '<p begin="3s" end="4s">First cue</p>' +
1834
1836
  '<p begin="4s">Second cue</p>' +
1835
1837
  '</div></body></tt>',
1836
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1838
+ {periodStart: 0, segmentStart: 0, segmentEnd: 30},
1837
1839
  {startTime: 1, endTime: 30},
1838
1840
  {startTime: 3, endTime: 30});
1839
1841
  });
@@ -1841,15 +1843,17 @@ describe('TtmlTextParser', () => {
1841
1843
  it('supports never-ending cues', () => {
1842
1844
  verifyHelper(
1843
1845
  [
1844
- {startTime: 1, endTime: Infinity, payload: 'First cue'},
1845
- {startTime: 2, endTime: Infinity, payload: 'Second cue'},
1846
+ // Capped to segment end time.
1847
+ {startTime: 1, endTime: 9000, payload: 'First cue'},
1848
+ {startTime: 2, endTime: 9000, payload: 'Second cue'},
1846
1849
  ],
1847
1850
  '<tt><body><div>' +
1848
1851
  '<p begin="1s">First cue</p>' +
1849
1852
  '<p begin="2s">Second cue</p>' +
1850
1853
  '</div></body></tt>',
1851
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1852
- {startTime: 1, endTime: Infinity});
1854
+ {periodStart: 0, segmentStart: 0, segmentEnd: 9000},
1855
+ // Capped to segment end time.
1856
+ {startTime: 1, endTime: 9000});
1853
1857
  });
1854
1858
 
1855
1859
  // Regression test for b/159050711
@@ -1920,7 +1924,7 @@ describe('TtmlTextParser', () => {
1920
1924
  ' <span style="spanStyle">Test with spanStyle</span>' +
1921
1925
  ' </p>' +
1922
1926
  '</div></body></tt>',
1923
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1927
+ {periodStart: 0, segmentStart: 0, segmentEnd: 60},
1924
1928
  {startTime: 0, endTime: 60});
1925
1929
  });
1926
1930
 
@@ -1952,7 +1956,7 @@ describe('TtmlTextParser', () => {
1952
1956
  '<body><div><p begin="00:00" end="01:00" region="r1">' +
1953
1957
  '<span>Hello!</span>' +
1954
1958
  '</p></div></body></tt>',
1955
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1959
+ {periodStart: 0, segmentStart: 0, segmentEnd: 60},
1956
1960
  {startTime: 0, endTime: 60},
1957
1961
  );
1958
1962
  });
@@ -2014,10 +2018,39 @@ describe('TtmlTextParser', () => {
2014
2018
  ' A<br/>B' +
2015
2019
  ' </p>' +
2016
2020
  '</div></body></tt>',
2017
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
2021
+ {periodStart: 0, segmentStart: 0, segmentEnd: 60},
2018
2022
  {startTime: 0, endTime: 60});
2019
2023
  });
2020
2024
 
2025
+ // Test for https://github.com/shaka-project/shaka-player/issues/4631
2026
+ it('trims cues to segment boundaries', () => {
2027
+ verifyHelper(
2028
+ [
2029
+ // Capped to segment end time.
2030
+ {startTime: 168, endTime: 170},
2031
+ ],
2032
+ '<tt><body><div>' +
2033
+ ' <p begin="00:02:48.00" end="00:02:50.92" xml:id="sub22">' +
2034
+ ' <span style="s1">Emo look.<br/>I mean listen.</span>' +
2035
+ ' </p>' +
2036
+ '</div></body></tt>',
2037
+ {periodStart: 0, segmentStart: 160, segmentEnd: 170},
2038
+ {});
2039
+
2040
+ verifyHelper(
2041
+ [
2042
+ // Capped to segment start time.
2043
+ {startTime: 170, endTime: Util.closeTo(170.92)},
2044
+ ],
2045
+ '<tt><body><div>' +
2046
+ ' <p begin="00:02:48.00" end="00:02:50.92" xml:id="sub22">' +
2047
+ ' <span style="s1">Emo look.<br/>I mean listen.</span>' +
2048
+ ' </p>' +
2049
+ '</div></body></tt>',
2050
+ {periodStart: 0, segmentStart: 170, segmentEnd: 180},
2051
+ {});
2052
+ });
2053
+
2021
2054
  /**
2022
2055
  * @param {!Array} cues
2023
2056
  * @param {string} text
@@ -2055,7 +2088,7 @@ describe('TtmlTextParser', () => {
2055
2088
  expect(() => {
2056
2089
  new shaka.text.TtmlTextParser().parseMedia(
2057
2090
  shaka.util.BufferUtils.toUint8(data),
2058
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
2091
+ {periodStart: 0, segmentStart: 0, segmentEnd: 10});
2059
2092
  }).toThrow(error);
2060
2093
  }
2061
2094
  });