shaka-player 4.10.11 → 4.10.13
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/README.md +1 -0
- package/dist/deps.js +3 -3
- package/dist/locales.js +34 -34
- package/dist/shaka-player.compiled.d.ts +1 -1
- package/dist/shaka-player.compiled.debug.d.ts +1 -1
- package/dist/shaka-player.compiled.debug.externs.js +4 -3
- package/dist/shaka-player.compiled.debug.js +318 -316
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +4 -3
- package/dist/shaka-player.compiled.js +1187 -1185
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +1 -1
- package/dist/shaka-player.ui.debug.d.ts +1 -1
- package/dist/shaka-player.ui.debug.externs.js +4 -3
- package/dist/shaka-player.ui.debug.js +74 -72
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.externs.js +4 -3
- package/dist/shaka-player.ui.js +1408 -1406
- package/dist/shaka-player.ui.map +3 -3
- package/lib/cea/mp4_cea_parser.js +10 -5
- package/lib/config/codec_switching_strategy.js +14 -10
- package/lib/dash/dash_parser.js +83 -48
- package/lib/hls/hls_parser.js +3 -0
- package/lib/media/content_workarounds.js +12 -0
- package/lib/media/segment_utils.js +6 -2
- package/lib/media/streaming_engine.js +30 -36
- package/lib/player.js +24 -8
- package/lib/util/mime_utils.js +6 -0
- package/lib/util/periods.js +16 -9
- package/lib/util/stream_utils.js +2 -0
- package/lib/util/tXml.js +66 -26
- package/package.json +1 -1
package/lib/util/periods.js
CHANGED
|
@@ -890,26 +890,33 @@ shaka.util.PeriodCombiner = class {
|
|
|
890
890
|
// Create a fresh output stream for trick-mode playback.
|
|
891
891
|
output.trickModeVideo = shaka.util.PeriodCombiner.cloneStream_(
|
|
892
892
|
input.trickModeVideo);
|
|
893
|
-
|
|
894
|
-
// The trick-mode tracks in multi-period content should have trick-mode
|
|
895
|
-
// segment indexes whenever available, rather than only regular-mode
|
|
896
|
-
// segment indexes.
|
|
893
|
+
output.trickModeVideo.matchedStreams = [];
|
|
897
894
|
output.trickModeVideo.createSegmentIndex = () => {
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
895
|
+
if (output.trickModeVideo.segmentIndex) {
|
|
896
|
+
return Promise.resolve();
|
|
897
|
+
}
|
|
898
|
+
const segmentIndex = new shaka.media.MetaSegmentIndex();
|
|
899
|
+
goog.asserts.assert(output.trickModeVideo.matchedStreams,
|
|
900
|
+
'trickmode matched streams should exist');
|
|
901
|
+
for (const stream of output.trickModeVideo.matchedStreams) {
|
|
902
|
+
goog.asserts.assert(stream.segmentIndex,
|
|
903
|
+
'trickmode segment index should exist');
|
|
904
|
+
segmentIndex.appendSegmentIndex(stream.segmentIndex);
|
|
905
|
+
}
|
|
906
|
+
output.trickModeVideo.segmentIndex = segmentIndex;
|
|
907
|
+
|
|
903
908
|
return Promise.resolve();
|
|
904
909
|
};
|
|
905
910
|
}
|
|
906
911
|
|
|
907
912
|
// Concatenate the trick mode input onto the trick mode output.
|
|
913
|
+
output.trickModeVideo.matchedStreams.push(input.trickModeVideo);
|
|
908
914
|
shaka.util.PeriodCombiner.concatenateStreams_(
|
|
909
915
|
output.trickModeVideo, input.trickModeVideo);
|
|
910
916
|
} else if (output.trickModeVideo) {
|
|
911
917
|
// We have a trick mode output, but no input from this Period. Fill it in
|
|
912
918
|
// from the standard input Stream.
|
|
919
|
+
output.trickModeVideo.matchedStreams.push(input);
|
|
913
920
|
shaka.util.PeriodCombiner.concatenateStreams_(
|
|
914
921
|
output.trickModeVideo, input);
|
|
915
922
|
}
|
package/lib/util/stream_utils.js
CHANGED
package/lib/util/tXml.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
goog.provide('shaka.util.TXml');
|
|
8
8
|
|
|
9
|
+
goog.require('shaka.util.ObjectUtils');
|
|
9
10
|
goog.require('shaka.util.StringUtils');
|
|
10
11
|
goog.require('shaka.log');
|
|
11
12
|
|
|
@@ -71,24 +72,37 @@ shaka.util.TXml = class {
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
/**
|
|
74
|
-
*
|
|
75
|
+
* Get namespace based on schema
|
|
75
76
|
* @param {string} schema
|
|
76
77
|
* @return {string}
|
|
77
78
|
*/
|
|
78
79
|
static getKnownNameSpace(schema) {
|
|
79
|
-
if (shaka.util.TXml.
|
|
80
|
-
return shaka.util.TXml.
|
|
80
|
+
if (shaka.util.TXml.uriToNameSpace_.has(schema)) {
|
|
81
|
+
return shaka.util.TXml.uriToNameSpace_.get(schema);
|
|
81
82
|
}
|
|
82
83
|
return '';
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
/**
|
|
86
|
-
*
|
|
87
|
+
* Get schema based on namespace
|
|
88
|
+
* @param {string} NS
|
|
89
|
+
* @return {string}
|
|
90
|
+
*/
|
|
91
|
+
static getKnownSchema(NS) {
|
|
92
|
+
if (shaka.util.TXml.nameSpaceToUri_.has(NS)) {
|
|
93
|
+
return shaka.util.TXml.nameSpaceToUri_.get(NS);
|
|
94
|
+
}
|
|
95
|
+
return '';
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Sets NS <-> schema bidirectional mapping
|
|
87
100
|
* @param {string} schema
|
|
88
101
|
* @param {string} NS
|
|
89
102
|
*/
|
|
90
103
|
static setKnownNameSpace(schema, NS) {
|
|
91
|
-
shaka.util.TXml.
|
|
104
|
+
shaka.util.TXml.uriToNameSpace_.set(schema, NS);
|
|
105
|
+
shaka.util.TXml.nameSpaceToUri_.set(NS, schema);
|
|
92
106
|
}
|
|
93
107
|
|
|
94
108
|
/**
|
|
@@ -869,43 +883,69 @@ shaka.util.TXml = class {
|
|
|
869
883
|
/**
|
|
870
884
|
* Converts a tXml node to DOM element.
|
|
871
885
|
* @param {shaka.extern.xml.Node} node
|
|
872
|
-
* @param {boolean=} doParents
|
|
873
|
-
* @param {boolean=} doChildren
|
|
874
886
|
* @return {!Element}
|
|
875
887
|
*/
|
|
876
|
-
static txmlNodeToDomElement(node
|
|
888
|
+
static txmlNodeToDomElement(node) {
|
|
877
889
|
const TXml = shaka.util.TXml;
|
|
878
|
-
|
|
890
|
+
let namespace = '';
|
|
891
|
+
const parts = node.tagName.split(':');
|
|
892
|
+
if (parts.length > 0) {
|
|
893
|
+
namespace = TXml.getKnownSchema(parts[0]);
|
|
894
|
+
}
|
|
895
|
+
const element = document.createElementNS(namespace, node.tagName);
|
|
879
896
|
|
|
880
897
|
for (const k in node.attributes) {
|
|
881
898
|
const v = node.attributes[k];
|
|
882
899
|
element.setAttribute(k, v);
|
|
883
900
|
}
|
|
884
901
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
if (doChildren) {
|
|
892
|
-
for (const child of node.children) {
|
|
893
|
-
let childElement;
|
|
894
|
-
if (typeof child == 'string') {
|
|
895
|
-
childElement = new Text(child);
|
|
896
|
-
} else {
|
|
897
|
-
childElement = TXml.txmlNodeToDomElement(
|
|
898
|
-
child, /* doParents= */ false, /* doChildren= */ true);
|
|
899
|
-
}
|
|
900
|
-
element.appendChild(childElement);
|
|
902
|
+
for (const child of node.children) {
|
|
903
|
+
let childElement;
|
|
904
|
+
if (typeof child == 'string') {
|
|
905
|
+
childElement = new Text(child);
|
|
906
|
+
} else {
|
|
907
|
+
childElement = TXml.txmlNodeToDomElement(child);
|
|
901
908
|
}
|
|
909
|
+
element.appendChild(childElement);
|
|
902
910
|
}
|
|
903
911
|
|
|
904
912
|
return element;
|
|
905
913
|
}
|
|
914
|
+
|
|
915
|
+
/**
|
|
916
|
+
* Clones node and its children recursively. Skips parent.
|
|
917
|
+
* @param {?shaka.extern.xml.Node} node
|
|
918
|
+
* @return {?shaka.extern.xml.Node}
|
|
919
|
+
*/
|
|
920
|
+
static cloneNode(node) {
|
|
921
|
+
if (!node) {
|
|
922
|
+
return null;
|
|
923
|
+
}
|
|
924
|
+
/** @type {!shaka.extern.xml.Node} */
|
|
925
|
+
const clone = {
|
|
926
|
+
tagName: node.tagName,
|
|
927
|
+
attributes: shaka.util.ObjectUtils.shallowCloneObject(node.attributes),
|
|
928
|
+
children: [],
|
|
929
|
+
parent: null,
|
|
930
|
+
};
|
|
931
|
+
for (const child of node.children) {
|
|
932
|
+
if (typeof child === 'string') {
|
|
933
|
+
clone.children.push(child);
|
|
934
|
+
} else {
|
|
935
|
+
const clonedChild = shaka.util.TXml.cloneNode(child);
|
|
936
|
+
clonedChild.parent = clone;
|
|
937
|
+
clone.children.push(clonedChild);
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
return clone;
|
|
941
|
+
}
|
|
906
942
|
};
|
|
907
943
|
|
|
908
|
-
|
|
944
|
+
/** @private {!Map<string, string>} */
|
|
945
|
+
shaka.util.TXml.uriToNameSpace_ = new Map();
|
|
946
|
+
|
|
947
|
+
/** @private {!Map<string, string>} */
|
|
948
|
+
shaka.util.TXml.nameSpaceToUri_ = new Map();
|
|
909
949
|
|
|
910
950
|
|
|
911
951
|
/**
|