shaka-player 2.5.4 → 2.5.5

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 (102) hide show
  1. package/.csslintrc +13 -0
  2. package/CHANGELOG.md +56 -0
  3. package/build/build.py +4 -1
  4. package/build/check.py +17 -0
  5. package/build/compiler.py +40 -0
  6. package/build/types/core +1 -0
  7. package/build/types/ui +4 -1
  8. package/demo/asset_card.js +41 -11
  9. package/demo/cast_receiver/receiver_app.css +19 -13
  10. package/demo/close_button.js +0 -6
  11. package/demo/common/asset.js +6 -1
  12. package/demo/common/assets.js +72 -14
  13. package/demo/demo.less +105 -16
  14. package/demo/index.html +8 -5
  15. package/demo/load.js +5 -7
  16. package/demo/main.js +81 -16
  17. package/dist/.csslintstamp +0 -0
  18. package/dist/controls.css +1 -1
  19. package/dist/controls.css.map +1 -1
  20. package/dist/demo.compiled.debug.js +46 -39
  21. package/dist/demo.compiled.debug.map +3 -3
  22. package/dist/demo.compiled.js +46 -39
  23. package/dist/demo.compiled.map +3 -3
  24. package/dist/demo.css +1 -1
  25. package/dist/demo.css.map +1 -1
  26. package/dist/deps.js +11 -7
  27. package/dist/receiver.compiled.debug.js +10 -6
  28. package/dist/receiver.compiled.debug.map +3 -3
  29. package/dist/receiver.compiled.js +10 -6
  30. package/dist/receiver.compiled.map +3 -3
  31. package/dist/shaka-player.compiled.debug.externs.js +123 -92
  32. package/dist/shaka-player.compiled.debug.js +113 -105
  33. package/dist/shaka-player.compiled.debug.map +4 -4
  34. package/dist/shaka-player.compiled.externs.js +123 -92
  35. package/dist/shaka-player.compiled.js +551 -548
  36. package/dist/shaka-player.compiled.map +4 -4
  37. package/dist/shaka-player.ui.debug.externs.js +170 -101
  38. package/dist/shaka-player.ui.debug.js +187 -188
  39. package/dist/shaka-player.ui.debug.map +4 -4
  40. package/dist/shaka-player.ui.externs.js +170 -101
  41. package/dist/shaka-player.ui.js +651 -651
  42. package/dist/shaka-player.ui.map +3 -3
  43. package/docs/tutorials/drm-config.md +1 -0
  44. package/docs/tutorials/fairplay.md +77 -0
  45. package/docs/tutorials/index.json +1 -0
  46. package/docs/tutorials/ui-customization.md +3 -0
  47. package/docs/tutorials/ui.md +3 -1
  48. package/externs/mediasession.js +16 -1
  49. package/externs/shaka/net.js +5 -1
  50. package/externs/shaka/player.js +136 -90
  51. package/externs/webkitmediakeys.js +4 -0
  52. package/lib/dash/content_protection.js +33 -1
  53. package/lib/dash/dash_parser.js +12 -4
  54. package/lib/hls/hls_parser.js +20 -4
  55. package/lib/media/drm_engine.js +29 -2
  56. package/lib/media/media_source_engine.js +7 -3
  57. package/lib/media/playhead.js +8 -3
  58. package/lib/media/streaming_engine.js +24 -8
  59. package/lib/media/video_wrapper.js +8 -3
  60. package/lib/net/networking_engine.js +1 -0
  61. package/lib/player.js +3 -2
  62. package/lib/polyfill/patchedmediakeys_apple.js +2 -72
  63. package/lib/util/error.js +12 -0
  64. package/lib/util/fairplay_utils.js +122 -0
  65. package/lib/util/player_configuration.js +5 -0
  66. package/lib/util/pssh.js +41 -0
  67. package/package.json +4 -3
  68. package/shaka-player.uncompiled.js +5 -1
  69. package/test/dash/dash_parser_content_protection_unit.js +35 -1
  70. package/test/dash/dash_parser_manifest_unit.js +31 -0
  71. package/test/hls/hls_live_unit.js +7 -1
  72. package/test/hls/hls_parser_unit.js +50 -0
  73. package/test/media/media_source_engine_integration.js +12 -0
  74. package/test/media/playhead_unit.js +2 -0
  75. package/test/player_external.js +3 -2
  76. package/test/player_integration.js +75 -0
  77. package/test/test/externs/jasmine.js +6 -0
  78. package/test/test/util/test_scheme.js +32 -1
  79. package/test/test/util/ui_utils.js +41 -0
  80. package/test/ui/ui_unit.js +129 -3
  81. package/ui/audio_language_selection.js +17 -96
  82. package/ui/big_play_button.js +61 -0
  83. package/ui/controls.js +111 -86
  84. package/ui/controls.less +3 -5
  85. package/ui/externs/ui.js +14 -2
  86. package/ui/fullscreen_button.js +2 -52
  87. package/ui/less/buttons.less +8 -8
  88. package/ui/less/containers.less +21 -21
  89. package/ui/less/general.less +11 -0
  90. package/ui/less/other_elements.less +2 -1
  91. package/ui/less/overflow_menu.less +11 -10
  92. package/ui/less/range_elements.less +6 -0
  93. package/ui/less/spinner.less +2 -0
  94. package/ui/pip_button.js +1 -1
  95. package/ui/{play_pause_button.js → play_button.js} +17 -47
  96. package/ui/resolution_selection.js +41 -104
  97. package/ui/seek_bar.js +15 -17
  98. package/ui/settings_menu.js +113 -0
  99. package/ui/small_play_button.js +73 -0
  100. package/ui/text_displayer.js +2 -2
  101. package/ui/text_selection.js +39 -105
  102. package/ui/ui.js +12 -0
@@ -107,9 +107,9 @@ shaka.util.Error.Code={UNSUPPORTED_SCHEME:1E3,BAD_HTTP_STATUS:1001,HTTP_ERROR:10
107
107
  EBML_OVERFLOW:3002,EBML_BAD_FLOATING_POINT_SIZE:3003,MP4_SIDX_WRONG_BOX_TYPE:3004,MP4_SIDX_INVALID_TIMESCALE:3005,MP4_SIDX_TYPE_NOT_SUPPORTED:3006,WEBM_CUES_ELEMENT_MISSING:3007,WEBM_EBML_HEADER_ELEMENT_MISSING:3008,WEBM_SEGMENT_ELEMENT_MISSING:3009,WEBM_INFO_ELEMENT_MISSING:3010,WEBM_DURATION_ELEMENT_MISSING:3011,WEBM_CUE_TRACK_POSITIONS_ELEMENT_MISSING:3012,WEBM_CUE_TIME_ELEMENT_MISSING:3013,MEDIA_SOURCE_OPERATION_FAILED:3014,MEDIA_SOURCE_OPERATION_THREW:3015,VIDEO_ERROR:3016,QUOTA_EXCEEDED_ERROR:3017,
108
108
  TRANSMUXING_FAILED:3018,UNABLE_TO_GUESS_MANIFEST_TYPE:4E3,DASH_INVALID_XML:4001,DASH_NO_SEGMENT_INFO:4002,DASH_EMPTY_ADAPTATION_SET:4003,DASH_EMPTY_PERIOD:4004,DASH_WEBM_MISSING_INIT:4005,DASH_UNSUPPORTED_CONTAINER:4006,DASH_PSSH_BAD_ENCODING:4007,DASH_NO_COMMON_KEY_SYSTEM:4008,DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED:4009,DASH_CONFLICTING_KEY_IDS:4010,UNPLAYABLE_PERIOD:4011,RESTRICTIONS_CANNOT_BE_MET:4012,NO_PERIODS:4014,HLS_PLAYLIST_HEADER_MISSING:4015,INVALID_HLS_TAG:4016,HLS_INVALID_PLAYLIST_HIERARCHY:4017,
109
109
  DASH_DUPLICATE_REPRESENTATION_ID:4018,HLS_MULTIPLE_MEDIA_INIT_SECTIONS_FOUND:4020,HLS_COULD_NOT_GUESS_MIME_TYPE:4021,HLS_MASTER_PLAYLIST_NOT_PROVIDED:4022,HLS_REQUIRED_ATTRIBUTE_MISSING:4023,HLS_REQUIRED_TAG_MISSING:4024,HLS_COULD_NOT_GUESS_CODECS:4025,HLS_KEYFORMATS_NOT_SUPPORTED:4026,DASH_UNSUPPORTED_XLINK_ACTUATE:4027,DASH_XLINK_DEPTH_LIMIT:4028,HLS_COULD_NOT_PARSE_SEGMENT_START_TIME:4030,CONTENT_UNSUPPORTED_BY_BROWSER:4032,CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM:4033,HLS_AES_128_ENCRYPTION_NOT_SUPPORTED:4034,
110
- INVALID_STREAMS_CHOSEN:5005,NO_RECOGNIZED_KEY_SYSTEMS:6E3,REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE:6001,FAILED_TO_CREATE_CDM:6002,FAILED_TO_ATTACH_TO_VIDEO:6003,INVALID_SERVER_CERTIFICATE:6004,FAILED_TO_CREATE_SESSION:6005,FAILED_TO_GENERATE_LICENSE_REQUEST:6006,LICENSE_REQUEST_FAILED:6007,LICENSE_RESPONSE_REJECTED:6008,ENCRYPTED_CONTENT_WITHOUT_DRM_INFO:6010,NO_LICENSE_SERVER_GIVEN:6012,OFFLINE_SESSION_REMOVED:6013,EXPIRED:6014,LOAD_INTERRUPTED:7E3,OPERATION_ABORTED:7001,NO_VIDEO_ELEMENT:7002,CAST_API_UNAVAILABLE:8E3,
111
- NO_CAST_RECEIVERS:8001,ALREADY_CASTING:8002,UNEXPECTED_CAST_ERROR:8003,CAST_CANCELED_BY_USER:8004,CAST_CONNECTION_TIMED_OUT:8005,CAST_RECEIVER_APP_UNAVAILABLE:8006,CAST_RECEIVER_APP_ID_MISSING:8007,STORAGE_NOT_SUPPORTED:9E3,INDEXED_DB_ERROR:9001,DEPRECATED_OPERATION_ABORTED:9002,REQUESTED_ITEM_NOT_FOUND:9003,MALFORMED_OFFLINE_URI:9004,CANNOT_STORE_LIVE_OFFLINE:9005,STORE_ALREADY_IN_PROGRESS:9006,NO_INIT_DATA_FOR_OFFLINE:9007,LOCAL_PLAYER_INSTANCE_REQUIRED:9008,NEW_KEY_OPERATION_NOT_SUPPORTED:9011,
112
- KEY_NOT_FOUND:9012,MISSING_STORAGE_CELL:9013};goog.exportProperty(shaka.util.Error,"Code",shaka.util.Error.Code);shaka.util.PublicPromise=function(){var a,b,c=new Promise(function(c,e){a=c;b=e});c.resolve=a;c.reject=b;return c};shaka.util.PublicPromise.prototype.resolve=function(a){};shaka.util.PublicPromise.prototype.reject=function(a){};shaka.util.AbortableOperation=function(a,b){this.promise=a;this.onAbort_=b;this.aborted_=!1};goog.exportSymbol("shaka.util.AbortableOperation",shaka.util.AbortableOperation);shaka.util.AbortableOperation.failed=function(a){return new shaka.util.AbortableOperation(Promise.reject(a),function(){return Promise.resolve()})};goog.exportProperty(shaka.util.AbortableOperation,"failed",shaka.util.AbortableOperation.failed);
110
+ INVALID_STREAMS_CHOSEN:5005,NO_RECOGNIZED_KEY_SYSTEMS:6E3,REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE:6001,FAILED_TO_CREATE_CDM:6002,FAILED_TO_ATTACH_TO_VIDEO:6003,INVALID_SERVER_CERTIFICATE:6004,FAILED_TO_CREATE_SESSION:6005,FAILED_TO_GENERATE_LICENSE_REQUEST:6006,LICENSE_REQUEST_FAILED:6007,LICENSE_RESPONSE_REJECTED:6008,ENCRYPTED_CONTENT_WITHOUT_DRM_INFO:6010,NO_LICENSE_SERVER_GIVEN:6012,OFFLINE_SESSION_REMOVED:6013,EXPIRED:6014,SERVER_CERTIFICATE_REQUIRED:6015,INIT_DATA_TRANSFORM_ERROR:6016,LOAD_INTERRUPTED:7E3,
111
+ OPERATION_ABORTED:7001,NO_VIDEO_ELEMENT:7002,CAST_API_UNAVAILABLE:8E3,NO_CAST_RECEIVERS:8001,ALREADY_CASTING:8002,UNEXPECTED_CAST_ERROR:8003,CAST_CANCELED_BY_USER:8004,CAST_CONNECTION_TIMED_OUT:8005,CAST_RECEIVER_APP_UNAVAILABLE:8006,CAST_RECEIVER_APP_ID_MISSING:8007,STORAGE_NOT_SUPPORTED:9E3,INDEXED_DB_ERROR:9001,DEPRECATED_OPERATION_ABORTED:9002,REQUESTED_ITEM_NOT_FOUND:9003,MALFORMED_OFFLINE_URI:9004,CANNOT_STORE_LIVE_OFFLINE:9005,STORE_ALREADY_IN_PROGRESS:9006,NO_INIT_DATA_FOR_OFFLINE:9007,LOCAL_PLAYER_INSTANCE_REQUIRED:9008,
112
+ NEW_KEY_OPERATION_NOT_SUPPORTED:9011,KEY_NOT_FOUND:9012,MISSING_STORAGE_CELL:9013};goog.exportProperty(shaka.util.Error,"Code",shaka.util.Error.Code);shaka.util.PublicPromise=function(){var a,b,c=new Promise(function(c,e){a=c;b=e});c.resolve=a;c.reject=b;return c};shaka.util.PublicPromise.prototype.resolve=function(a){};shaka.util.PublicPromise.prototype.reject=function(a){};shaka.util.AbortableOperation=function(a,b){this.promise=a;this.onAbort_=b;this.aborted_=!1};goog.exportSymbol("shaka.util.AbortableOperation",shaka.util.AbortableOperation);shaka.util.AbortableOperation.failed=function(a){return new shaka.util.AbortableOperation(Promise.reject(a),function(){return Promise.resolve()})};goog.exportProperty(shaka.util.AbortableOperation,"failed",shaka.util.AbortableOperation.failed);
113
113
  shaka.util.AbortableOperation.aborted=function(){var a=Promise.reject(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.PLAYER,shaka.util.Error.Code.OPERATION_ABORTED));a["catch"](function(){});return new shaka.util.AbortableOperation(a,function(){return Promise.resolve()})};goog.exportProperty(shaka.util.AbortableOperation,"aborted",shaka.util.AbortableOperation.aborted);
114
114
  shaka.util.AbortableOperation.completed=function(a){return new shaka.util.AbortableOperation(Promise.resolve(a),function(){return Promise.resolve()})};goog.exportProperty(shaka.util.AbortableOperation,"completed",shaka.util.AbortableOperation.completed);shaka.util.AbortableOperation.notAbortable=function(a){return new shaka.util.AbortableOperation(a,function(){return a["catch"](function(){})})};goog.exportProperty(shaka.util.AbortableOperation,"notAbortable",shaka.util.AbortableOperation.notAbortable);
115
115
  shaka.util.AbortableOperation.prototype.abort=function(){this.aborted_=!0;return this.onAbort_()};goog.exportProperty(shaka.util.AbortableOperation.prototype,"abort",shaka.util.AbortableOperation.prototype.abort);shaka.util.AbortableOperation.all=function(a){return new shaka.util.AbortableOperation(Promise.all(a.map(function(a){return a.promise})),function(){return Promise.all(a.map(function(a){return a.abort()}))})};goog.exportProperty(shaka.util.AbortableOperation,"all",shaka.util.AbortableOperation.all);
@@ -126,7 +126,7 @@ shaka.net.NetworkingEngine.registerScheme=function(a,b,c){goog.asserts.assert(vo
126
126
  goog.exportProperty(shaka.net.NetworkingEngine,"unregisterScheme",shaka.net.NetworkingEngine.unregisterScheme);shaka.net.NetworkingEngine.prototype.registerRequestFilter=function(a){this.requestFilters_.add(a)};goog.exportProperty(shaka.net.NetworkingEngine.prototype,"registerRequestFilter",shaka.net.NetworkingEngine.prototype.registerRequestFilter);shaka.net.NetworkingEngine.prototype.unregisterRequestFilter=function(a){this.requestFilters_["delete"](a)};
127
127
  goog.exportProperty(shaka.net.NetworkingEngine.prototype,"unregisterRequestFilter",shaka.net.NetworkingEngine.prototype.unregisterRequestFilter);shaka.net.NetworkingEngine.prototype.clearAllRequestFilters=function(){this.requestFilters_.clear()};goog.exportProperty(shaka.net.NetworkingEngine.prototype,"clearAllRequestFilters",shaka.net.NetworkingEngine.prototype.clearAllRequestFilters);shaka.net.NetworkingEngine.prototype.registerResponseFilter=function(a){this.responseFilters_.add(a)};
128
128
  goog.exportProperty(shaka.net.NetworkingEngine.prototype,"registerResponseFilter",shaka.net.NetworkingEngine.prototype.registerResponseFilter);shaka.net.NetworkingEngine.prototype.unregisterResponseFilter=function(a){this.responseFilters_["delete"](a)};goog.exportProperty(shaka.net.NetworkingEngine.prototype,"unregisterResponseFilter",shaka.net.NetworkingEngine.prototype.unregisterResponseFilter);shaka.net.NetworkingEngine.prototype.clearAllResponseFilters=function(){this.responseFilters_.clear()};
129
- goog.exportProperty(shaka.net.NetworkingEngine.prototype,"clearAllResponseFilters",shaka.net.NetworkingEngine.prototype.clearAllResponseFilters);shaka.net.NetworkingEngine.defaultRetryParameters=shaka.net.Backoff.defaultRetryParameters;shaka.net.NetworkingEngine.makeRequest=function(a,b){return{uris:a,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:b,licenseRequestType:null}};
129
+ goog.exportProperty(shaka.net.NetworkingEngine.prototype,"clearAllResponseFilters",shaka.net.NetworkingEngine.prototype.clearAllResponseFilters);shaka.net.NetworkingEngine.defaultRetryParameters=shaka.net.Backoff.defaultRetryParameters;shaka.net.NetworkingEngine.makeRequest=function(a,b){return{uris:a,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:b,licenseRequestType:null,sessionId:null}};
130
130
  shaka.net.NetworkingEngine.prototype.destroy=function(){this.destroyed_=!0;this.requestFilters_.clear();this.responseFilters_.clear();return this.operationManager_.destroy()};goog.exportProperty(shaka.net.NetworkingEngine.prototype,"destroy",shaka.net.NetworkingEngine.prototype.destroy);
131
131
  shaka.net.NetworkingEngine.prototype.request=function(a,b){var c=this,d=shaka.util.ObjectUtils,e=new shaka.net.NetworkingEngine.NumBytesRemainingClass;if(this.destroyed_)return d=Promise.reject(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.PLAYER,shaka.util.Error.Code.OPERATION_ABORTED)),d["catch"](function(){}),new shaka.net.NetworkingEngine.PendingRequest(d,function(){return Promise.resolve()},e);goog.asserts.assert(b.uris&&b.uris.length,"Request without URIs!");
132
132
  b.method=b.method||"GET";b.headers=b.headers||{};b.retryParameters=b.retryParameters?d.cloneObject(b.retryParameters):shaka.net.NetworkingEngine.defaultRetryParameters();b.uris=d.cloneObject(b.uris);d=this.filterRequest_(a,b);var f=d.chain(function(){return c.makeRequestWithRetry_(a,b,e)}),g=f.chain(function(b){return c.filterResponse_(a,b)}),h=Date.now(),k=0;d.promise.then(function(){k=Date.now()-h},function(){});var l=0;f.promise.then(function(){l=Date.now()},function(){});d=g.chain(function(b){var d=
@@ -148,7 +148,9 @@ shaka.util.EventManager.prototype.unlisten=function(a,b,c){if(this.bindingMap_){
148
148
  shaka.util.EventManager.prototype.removeAll=function(){if(this.bindingMap_){var a=this.bindingMap_.getAll();a=$jscomp.makeIterator(a);for(var b=a.next();!b.done;b=a.next())b.value.unlisten();this.bindingMap_.clear()}};goog.exportProperty(shaka.util.EventManager.prototype,"removeAll",shaka.util.EventManager.prototype.removeAll);
149
149
  shaka.util.EventManager.Binding_=function(a,b,c,d){this.target=a;this.type=b;this.listener=c;this.options=shaka.util.EventManager.Binding_.convertOptions_(a,d);this.target.addEventListener(b,c,this.options)};shaka.util.EventManager.Binding_.prototype.unlisten=function(){goog.asserts.assert(this.target,"Missing target");this.target.removeEventListener(this.type,this.listener,this.options);this.listener=this.target=null;this.options=!1};
150
150
  goog.exportProperty(shaka.util.EventManager.Binding_.prototype,"unlisten",shaka.util.EventManager.Binding_.prototype.unlisten);shaka.util.EventManager.Binding_.convertOptions_=function(a,b){if(void 0==b)return!1;if("boolean"==typeof b)return b;var c=new Set(["passive","capture"]),d=Object.keys(b).filter(function(a){return!c.has(a)});goog.asserts.assert(0==d.length,"Unsupported flag(s) to addEventListener: "+d.join(","));return shaka.util.EventManager.Binding_.doesSupportObject_(a)?b:b.capture||!1};
151
- shaka.util.EventManager.Binding_.doesSupportObject_=function(a){var b=shaka.util.EventManager.Binding_.supportsObject_;if(void 0==b){b=!1;try{var c={},d={get:function(){b=!0;return!1}};Object.defineProperty(c,"passive",d);Object.defineProperty(c,"capture",d);d=function(){};a.addEventListener("test",d,c);a.removeEventListener("test",d,c)}catch(e){b=!1}shaka.util.EventManager.Binding_.supportsObject_=b}return b||!1};shaka.util.EventManager.Binding_.supportsObject_=void 0;shaka.util.Iterables=function(){};shaka.util.Iterables.map=function(a,b){for(var c=[],d=$jscomp.makeIterator(a),e=d.next();!e.done;e=d.next())c.push(b(e.value));return c};shaka.util.Iterables.every=function(a,b){for(var c=$jscomp.makeIterator(a),d=c.next();!d.done;d=c.next())if(!b(d.value))return!1;return!0};shaka.util.Iterables.some=function(a,b){for(var c=$jscomp.makeIterator(a),d=c.next();!d.done;d=c.next())if(b(d.value))return!0;return!1};
151
+ shaka.util.EventManager.Binding_.doesSupportObject_=function(a){var b=shaka.util.EventManager.Binding_.supportsObject_;if(void 0==b){b=!1;try{var c={},d={get:function(){b=!0;return!1}};Object.defineProperty(c,"passive",d);Object.defineProperty(c,"capture",d);d=function(){};a.addEventListener("test",d,c);a.removeEventListener("test",d,c)}catch(e){b=!1}shaka.util.EventManager.Binding_.supportsObject_=b}return b||!1};shaka.util.EventManager.Binding_.supportsObject_=void 0;shaka.util.FairPlayUtils=function(){};shaka.util.FairPlayUtils.defaultGetContentId=function(a){a=new Uint8Array(a);if((new DataView(a.buffer,a.byteOffset,a.byteLength)).getUint32(0,!0)+4!=a.byteLength)throw new RangeError("Malformed FairPlay init data");a=shaka.util.StringUtils.fromUTF16(a.subarray(4),!0);return(new goog.Uri(a)).getDomain()};goog.exportSymbol("shaka.util.FairPlayUtils.defaultGetContentId",shaka.util.FairPlayUtils.defaultGetContentId);
152
+ shaka.util.FairPlayUtils.initDataTransform=function(a,b,c){if(!c||!c.byteLength)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.SERVER_CERTIFICATE_REQUIRED);b="string"==typeof b?new Uint8Array(shaka.util.StringUtils.toUTF16(b,!0)):new Uint8Array(b);var d=new Uint8Array(8+a.byteLength+b.byteLength+c.byteLength),e=0,f=function(a){d.set(a,e);e+=a.byteLength},g=function(a){(new DataView(d.buffer)).setUint32(e,a.byteLength,!0);e+=4;f(a)};
153
+ f(new Uint8Array(a));g(b);g(new Uint8Array(c));return d};goog.exportSymbol("shaka.util.FairPlayUtils.initDataTransform",shaka.util.FairPlayUtils.initDataTransform);shaka.util.Iterables=function(){};shaka.util.Iterables.map=function(a,b){for(var c=[],d=$jscomp.makeIterator(a),e=d.next();!e.done;e=d.next())c.push(b(e.value));return c};shaka.util.Iterables.every=function(a,b){for(var c=$jscomp.makeIterator(a),d=c.next();!d.done;d=c.next())if(!b(d.value))return!1;return!0};shaka.util.Iterables.some=function(a,b){for(var c=$jscomp.makeIterator(a),d=c.next();!d.done;d=c.next())if(b(d.value))return!0;return!1};
152
154
  shaka.util.Iterables.filter=function(a,b){for(var c=[],d=$jscomp.makeIterator(a),e=d.next();!e.done;e=d.next())e=e.value,b(e)&&c.push(e);return c};shaka.util.MapUtils={};shaka.util.MapUtils.asMap=function(a){var b=new Map;Object.keys(a).forEach(function(c){b.set(c,a[c])});return b};shaka.util.MapUtils.asObject=function(a){var b={};a.forEach(function(a,d){b[d]=a});return b};shaka.util.MimeUtils=function(){};shaka.util.MimeUtils.getFullType=function(a,b){var c=a;b&&(c+='; codecs="'+b+'"');return c};shaka.util.MimeUtils.getExtendedType=function(a){var b=[a.mimeType];shaka.util.MimeUtils.EXTENDED_MIME_PARAMETERS_.forEach(function(c,d){var e=a[d];e&&b.push(c+'="'+e+'"')});return b.join(";")};shaka.util.MimeUtils.splitCodecs=function(a){return a.split(",")};shaka.util.MimeUtils.getCodecBase=function(a){return shaka.util.MimeUtils.getCodecParts_(a)[0]};
153
155
  shaka.util.MimeUtils.getCodecParts_=function(a){var b=a.split(".");a=b[0];b.pop();b=b.join(".");return[a,b]};shaka.util.MimeUtils.EXTENDED_MIME_PARAMETERS_=(new Map).set("codecs","codecs").set("frameRate","framerate").set("bandwidth","bitrate").set("width","width").set("height","height").set("channelsCount","channels");shaka.util.MimeUtils.CLOSED_CAPTION_MIMETYPE="application/cea-608";shaka.util.Platform=function(){};shaka.util.Platform.supportsMediaSource=function(){return window.MediaSource&&MediaSource.isTypeSupported?!0:!1};shaka.util.Platform.supportsMediaType=function(a){return""!=shaka.util.Platform.anyMediaElement_().canPlayType(a)};shaka.util.Platform.isEdge=function(){return shaka.util.Platform.userAgentContains_("Edge/")};shaka.util.Platform.isIE=function(){return shaka.util.Platform.userAgentContains_("Trident/")};shaka.util.Platform.isTizen=function(){return shaka.util.Platform.userAgentContains_("Tizen")};
154
156
  shaka.util.Platform.isTizen3=function(){return shaka.util.Platform.userAgentContains_("Tizen 3")};shaka.util.Platform.isWebOS=function(){return shaka.util.Platform.userAgentContains_("Web0S")};shaka.util.Platform.isChromecast=function(){return shaka.util.Platform.userAgentContains_("CrKey")};shaka.util.Platform.isChrome=function(){return shaka.util.Platform.userAgentContains_("Chrome")&&!shaka.util.Platform.isEdge()};shaka.util.Platform.isApple=function(){return!!navigator.vendor&&navigator.vendor.includes("Apple")};
@@ -198,13 +200,14 @@ licenseServerUri:"data:application/json;base64,"+window.btoa(a),distinctiveIdent
198
200
  shaka.media.DrmEngine.prototype.loadOfflineSession_=function(a){try{shaka.log.v1("Attempting to load an offline session",a);var b=this.mediaKeys_.createSession("persistent-license")}catch(e){var c=new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.FAILED_TO_CREATE_SESSION,e.message);this.onError_(c);return Promise.reject(c)}this.eventManager_.listen(b,"message",this.onSessionMessage_.bind(this));this.eventManager_.listen(b,"keystatuseschange",
199
201
  this.onKeyStatusesChange_.bind(this));var d={initData:null,loaded:!1,oldExpiration:Infinity,updatePromise:null};this.activeSessions_.set(b,d);return b.load(a).then(function(c){if(this.isDestroying_)return Promise.reject();shaka.log.v2("Loaded offline session",a,c);if(c)return d.loaded=!0,this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve(),b;this.activeSessions_["delete"](b);this.onError_(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.OFFLINE_SESSION_REMOVED))}.bind(this),
200
202
  function(a){this.isDestroying_||(this.activeSessions_["delete"](b),this.onError_(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.FAILED_TO_CREATE_SESSION,a.message)))}.bind(this))};
201
- shaka.media.DrmEngine.prototype.createTemporarySession_=function(a,b){var c=this;try{if(this.usePersistentLicenses_){shaka.log.v1("Creating new persistent session");var d=this.mediaKeys_.createSession("persistent-license")}else shaka.log.v1("Creating new temporary session"),d=this.mediaKeys_.createSession()}catch(e){this.onError_(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.FAILED_TO_CREATE_SESSION,e.message));return}this.eventManager_.listen(d,
202
- "message",this.onSessionMessage_.bind(this));this.eventManager_.listen(d,"keystatuseschange",this.onKeyStatusesChange_.bind(this));this.activeSessions_.set(d,{initData:b,loaded:!1,oldExpiration:Infinity,updatePromise:null});d.generateRequest(a,b.buffer)["catch"](function(a){if(!c.isDestroying_){c.activeSessions_["delete"](d);if(a.errorCode&&a.errorCode.systemCode){var b=a.errorCode.systemCode;0>b&&(b+=Math.pow(2,32));b="0x"+b.toString(16)}c.onError_(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
203
- shaka.util.Error.Category.DRM,shaka.util.Error.Code.FAILED_TO_GENERATE_LICENSE_REQUEST,a.message,a,b))}})};shaka.media.DrmEngine.prototype.onSessionMessage_=function(a){this.delayLicenseRequest_()?this.mediaKeyMessageEvents_.push(a):this.sendLicenseRequest_(a)};shaka.media.DrmEngine.prototype.delayLicenseRequest_=function(){return this.config_.delayLicenseRequestUntilPlayed&&this.video_.paused&&!this.initialRequestsSent_};
203
+ shaka.media.DrmEngine.prototype.createTemporarySession_=function(a,b){var c=this;try{if(this.usePersistentLicenses_){shaka.log.v1("Creating new persistent session");var d=this.mediaKeys_.createSession("persistent-license")}else shaka.log.v1("Creating new temporary session"),d=this.mediaKeys_.createSession()}catch(g){this.onError_(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.FAILED_TO_CREATE_SESSION,g.message));return}this.eventManager_.listen(d,
204
+ "message",this.onSessionMessage_.bind(this));this.eventManager_.listen(d,"keystatuseschange",this.onKeyStatusesChange_.bind(this));this.activeSessions_.set(d,{initData:b,loaded:!1,oldExpiration:Infinity,updatePromise:null});try{if(this.config_.initDataTransform)b=this.config_.initDataTransform(b);else if(this.keySystem().startsWith("com.apple.fps")){var e=this.currentDrmInfo_.serverCertificate,f=shaka.util.FairPlayUtils.defaultGetContentId(b);b=shaka.util.FairPlayUtils.initDataTransform(b,f,e)}}catch(g){e=
205
+ g;g instanceof shaka.util.Error||(e=new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.INIT_DATA_TRANSFORM_ERROR,g));this.onError_(e);return}d.generateRequest(a,b.buffer)["catch"](function(a){if(!c.isDestroying_){c.activeSessions_["delete"](d);if(a.errorCode&&a.errorCode.systemCode){var b=a.errorCode.systemCode;0>b&&(b+=Math.pow(2,32));b="0x"+b.toString(16)}c.onError_(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,
206
+ shaka.util.Error.Code.FAILED_TO_GENERATE_LICENSE_REQUEST,a.message,a,b))}})};shaka.media.DrmEngine.prototype.onSessionMessage_=function(a){this.delayLicenseRequest_()?this.mediaKeyMessageEvents_.push(a):this.sendLicenseRequest_(a)};shaka.media.DrmEngine.prototype.delayLicenseRequest_=function(){return this.config_.delayLicenseRequestUntilPlayed&&this.video_.paused&&!this.initialRequestsSent_};
204
207
  shaka.media.DrmEngine.prototype.sendLicenseRequest_=function(a){var b=a.target;shaka.log.v2("Sending license request for session",b.sessionId);var c=this.activeSessions_.get(b),d=this.currentDrmInfo_.licenseServerUri,e=this.config_.advanced[this.currentDrmInfo_.keySystem];"individualization-request"==a.messageType&&e&&e.individualizationServer&&(d=e.individualizationServer);e=shaka.net.NetworkingEngine.RequestType.LICENSE;d=shaka.net.NetworkingEngine.makeRequest([d],this.config_.retryParameters);
205
- d.body=a.message;d.method="POST";d.licenseRequestType=a.messageType;"com.microsoft.playready"!=this.currentDrmInfo_.keySystem&&"com.chromecast.playready"!=this.currentDrmInfo_.keySystem||this.unpackPlayReadyRequest_(d);this.currentDrmInfo_.keySystem.startsWith("com.apple.fps")&&this.formatFairPlayRequest_(d);this.playerInterface_.netEngine.request(e,d).promise.then(function(a){if(this.isDestroying_)return Promise.reject();this.currentDrmInfo_.keySystem.startsWith("com.apple.fps")&&this.parseFairPlayResponse_(a);
206
- return b.update(a.data).then(function(){var a=this,b=new shaka.util.FakeEvent("drmsessionupdate");this.playerInterface_.onEvent(b);c&&(c.updatePromise&&c.updatePromise.resolve(),(new shaka.util.Timer(function(){c.loaded=!0;a.areAllSessionsLoaded_()&&a.allSessionsLoaded_.resolve()})).tickAfter(shaka.media.DrmEngine.SESSION_LOAD_TIMEOUT_))}.bind(this))}.bind(this),function(a){this.isDestroying_||(goog.asserts.assert(a instanceof shaka.util.Error,"Wrong NetworkingEngine error type!"),a=new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
207
- shaka.util.Error.Category.DRM,shaka.util.Error.Code.LICENSE_REQUEST_FAILED,a),this.onError_(a),c&&c.updatePromise&&c.updatePromise.reject(a))}.bind(this))["catch"](function(a){this.isDestroying_||(a=new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.LICENSE_RESPONSE_REJECTED,a.message),this.onError_(a),c&&c.updatePromise&&c.updatePromise.reject(a))}.bind(this))};
208
+ d.body=a.message;d.method="POST";d.licenseRequestType=a.messageType;d.sessionId=b.sessionId;"com.microsoft.playready"!=this.currentDrmInfo_.keySystem&&"com.chromecast.playready"!=this.currentDrmInfo_.keySystem||this.unpackPlayReadyRequest_(d);this.currentDrmInfo_.keySystem.startsWith("com.apple.fps")&&this.config_.fairPlayTransform&&this.formatFairPlayRequest_(d);this.playerInterface_.netEngine.request(e,d).promise.then(function(a){if(this.isDestroying_)return Promise.reject();this.currentDrmInfo_.keySystem.startsWith("com.apple.fps")&&
209
+ this.config_.fairPlayTransform&&this.parseFairPlayResponse_(a);return b.update(a.data).then(function(){var a=this,b=new shaka.util.FakeEvent("drmsessionupdate");this.playerInterface_.onEvent(b);c&&(c.updatePromise&&c.updatePromise.resolve(),(new shaka.util.Timer(function(){c.loaded=!0;a.areAllSessionsLoaded_()&&a.allSessionsLoaded_.resolve()})).tickAfter(shaka.media.DrmEngine.SESSION_LOAD_TIMEOUT_))}.bind(this))}.bind(this),function(a){this.isDestroying_||(goog.asserts.assert(a instanceof shaka.util.Error,
210
+ "Wrong NetworkingEngine error type!"),a=new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.LICENSE_REQUEST_FAILED,a),this.onError_(a),c&&c.updatePromise&&c.updatePromise.reject(a))}.bind(this))["catch"](function(a){this.isDestroying_||(a=new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.DRM,shaka.util.Error.Code.LICENSE_RESPONSE_REJECTED,a.message),this.onError_(a),c&&c.updatePromise&&c.updatePromise.reject(a))}.bind(this))};
208
211
  shaka.media.DrmEngine.prototype.unpackPlayReadyRequest_=function(a){var b=shaka.util.StringUtils.fromUTF16(a.body,!0,!0);if(b.includes("PlayReadyKeyMessage")){shaka.log.debug("Unwrapping PlayReady request.");b=(new DOMParser).parseFromString(b,"application/xml");for(var c=b.getElementsByTagName("HttpHeader"),d=0;d<c.length;++d){var e=c[d].querySelector("name"),f=c[d].querySelector("value");goog.asserts.assert(e&&f,"Malformed PlayReady headers!");a.headers[e.textContent]=f.textContent}b=b.querySelector("Challenge");
209
212
  goog.asserts.assert(b,"Malformed PlayReady challenge!");goog.asserts.assert("base64encoded"==b.getAttribute("encoding"),"Unexpected PlayReady challenge encoding!");a.body=shaka.util.Uint8ArrayUtils.fromBase64(b.textContent).buffer}else shaka.log.debug("PlayReady request is already unwrapped."),a.headers["Content-Type"]="text/xml; charset=utf-8"};
210
213
  shaka.media.DrmEngine.prototype.formatFairPlayRequest_=function(a){var b=new Uint8Array(a.body);b=shaka.util.Uint8ArrayUtils.toBase64(b);a.headers["Content-Type"]="application/x-www-form-urlencoded";a.body=shaka.util.StringUtils.toUTF8("spc="+b)};shaka.media.DrmEngine.prototype.parseFairPlayResponse_=function(a){try{var b=shaka.util.StringUtils.fromUTF8(a.data)}catch(c){return}b=b.trim();"<ckc>"===b.substr(0,5)&&"</ckc>"===b.substr(-6)&&(b=b.slice(5,-6));try{b=JSON.parse(b).ckc}catch(c){}a.data=shaka.util.Uint8ArrayUtils.fromBase64(b).buffer};
@@ -279,10 +282,11 @@ shaka.media.MediaSourceEngine.prototype.setSelectedClosedCaptionId=function(a){v
279
282
  shaka.media.MediaSourceEngine.prototype.remove=function(a,b,c){goog.asserts.assert(c<Number.MAX_VALUE,"remove() with MAX_VALUE or Infinity is not IE-compatible!");return a==shaka.util.ManifestParserUtils.ContentType.TEXT?this.textEngine_.remove(b,c):this.enqueueOperation_(a,this.remove_.bind(this,a,b,c))};
280
283
  shaka.media.MediaSourceEngine.prototype.clear=function(a){if(a==shaka.util.ManifestParserUtils.ContentType.TEXT){if(!this.textEngine_)return Promise.resolve();this.captionParser_.reset();return this.textEngine_.remove(0,Infinity)}return this.enqueueOperation_(a,this.remove_.bind(this,a,0,this.mediaSource_.duration))};shaka.media.MediaSourceEngine.prototype.flush=function(a){return a==shaka.util.ManifestParserUtils.ContentType.TEXT?Promise.resolve():this.enqueueOperation_(a,this.flush_.bind(this,a))};
281
284
  shaka.media.MediaSourceEngine.prototype.setStreamProperties=function(a,b,c,d){return a==shaka.util.ManifestParserUtils.ContentType.TEXT?(this.textEngine_.setTimestampOffset(b),this.textEngine_.setAppendWindow(c,d),Promise.resolve()):Promise.all([this.enqueueOperation_(a,this.abort_.bind(this,a)),this.enqueueOperation_(a,this.setTimestampOffset_.bind(this,a,b)),this.enqueueOperation_(a,this.setAppendWindow_.bind(this,a,c,d))])};
282
- shaka.media.MediaSourceEngine.prototype.endOfStream=function(a){return this.enqueueBlockingOperation_(function(){a?this.mediaSource_.endOfStream(a):this.mediaSource_.endOfStream()}.bind(this))};shaka.media.MediaSourceEngine.prototype.setDuration=function(a){goog.asserts.assert(isNaN(this.mediaSource_.duration)||this.mediaSource_.duration<=a,"duration cannot decrease: "+this.mediaSource_.duration+" -> "+a);return this.enqueueBlockingOperation_(function(){this.mediaSource_.duration=a}.bind(this))};
283
- shaka.media.MediaSourceEngine.prototype.getDuration=function(){return this.mediaSource_.duration};shaka.media.MediaSourceEngine.prototype.append_=function(a,b){this.sourceBuffers_[a].appendBuffer(b)};shaka.media.MediaSourceEngine.prototype.remove_=function(a,b,c){if(c<=b)this.onUpdateEnd_(a);else this.sourceBuffers_[a].remove(b,c)};
284
- shaka.media.MediaSourceEngine.prototype.abort_=function(a){var b=this.sourceBuffers_[a].appendWindowStart,c=this.sourceBuffers_[a].appendWindowEnd;this.sourceBuffers_[a].abort();this.sourceBuffers_[a].appendWindowStart=b;this.sourceBuffers_[a].appendWindowEnd=c;this.onUpdateEnd_(a)};shaka.media.MediaSourceEngine.prototype.flush_=function(a){goog.asserts.assert(0==this.video_.buffered.length,"MediaSourceEngine.flush_ should only be used after clearing all data!");this.video_.currentTime-=.001;this.onUpdateEnd_(a)};
285
- shaka.media.MediaSourceEngine.prototype.setTimestampOffset_=function(a,b){0>b&&(b+=.001);this.sourceBuffers_[a].timestampOffset=b;this.onUpdateEnd_(a)};shaka.media.MediaSourceEngine.prototype.setAppendWindow_=function(a,b,c){this.sourceBuffers_[a].appendWindowStart=0;this.sourceBuffers_[a].appendWindowEnd=c;this.sourceBuffers_[a].appendWindowStart=b;this.onUpdateEnd_(a)};
285
+ shaka.media.MediaSourceEngine.prototype.endOfStream=function(a){return this.enqueueBlockingOperation_(function(){this.ended()||(a?this.mediaSource_.endOfStream(a):this.mediaSource_.endOfStream())}.bind(this))};
286
+ shaka.media.MediaSourceEngine.prototype.setDuration=function(a){goog.asserts.assert(isNaN(this.mediaSource_.duration)||this.mediaSource_.duration<=a,"duration cannot decrease: "+this.mediaSource_.duration+" -> "+a);return this.enqueueBlockingOperation_(function(){this.mediaSource_.duration=a}.bind(this))};shaka.media.MediaSourceEngine.prototype.getDuration=function(){return this.mediaSource_.duration};shaka.media.MediaSourceEngine.prototype.append_=function(a,b){this.sourceBuffers_[a].appendBuffer(b)};
287
+ shaka.media.MediaSourceEngine.prototype.remove_=function(a,b,c){if(c<=b)this.onUpdateEnd_(a);else this.sourceBuffers_[a].remove(b,c)};shaka.media.MediaSourceEngine.prototype.abort_=function(a){var b=this.sourceBuffers_[a].appendWindowStart,c=this.sourceBuffers_[a].appendWindowEnd;this.sourceBuffers_[a].abort();this.sourceBuffers_[a].appendWindowStart=b;this.sourceBuffers_[a].appendWindowEnd=c;this.onUpdateEnd_(a)};
288
+ shaka.media.MediaSourceEngine.prototype.flush_=function(a){goog.asserts.assert(0==this.video_.buffered.length,"MediaSourceEngine.flush_ should only be used after clearing all data!");this.video_.currentTime-=.001;this.onUpdateEnd_(a)};shaka.media.MediaSourceEngine.prototype.setTimestampOffset_=function(a,b){0>b&&(b+=.001);this.sourceBuffers_[a].timestampOffset=b;this.onUpdateEnd_(a)};
289
+ shaka.media.MediaSourceEngine.prototype.setAppendWindow_=function(a,b,c){this.sourceBuffers_[a].appendWindowStart=0;this.sourceBuffers_[a].appendWindowEnd=c;this.sourceBuffers_[a].appendWindowStart=b;this.onUpdateEnd_(a)};
286
290
  shaka.media.MediaSourceEngine.prototype.onError_=function(a,b){var c=this.queues_[a][0];goog.asserts.assert(c,"Spurious error event!");goog.asserts.assert(!this.sourceBuffers_[a].updating,"SourceBuffer should not be updating on error!");c.p.reject(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.MEDIA_SOURCE_OPERATION_FAILED,this.video_.error?this.video_.error.code:0))};
287
291
  shaka.media.MediaSourceEngine.prototype.onUpdateEnd_=function(a){var b=this.queues_[a][0];goog.asserts.assert(b,"Spurious updateend event!");b&&(goog.asserts.assert(!this.sourceBuffers_[a].updating,"SourceBuffer should not be updating on updateend!"),b.p.resolve(),this.popFromQueue_(a))};
288
292
  shaka.media.MediaSourceEngine.prototype.enqueueOperation_=function(a,b){if(this.destroyed_)return Promise.reject();var c={start:b,p:new shaka.util.PublicPromise};this.queues_[a].push(c);if(1==this.queues_[a].length)try{c.start()}catch(d){"QuotaExceededError"==d.name?c.p.reject(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.QUOTA_EXCEEDED_ERROR,a)):c.p.reject(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,
@@ -404,7 +408,27 @@ this.sendMediaStatus_(0));break;case "STOP":this.player_.unload().then(function(
404
408
  this.startUpdatingUpdateNumber_=!1;a=b.media;c=b.currentTime;d=this.contentIdCallback_(a.contentId);e=b.autoplay||!0;this.appDataCallback_(a.customData);e&&(this.video_.autoplay=!0);this.player_.load(d,c).then(function(){this.player_&&this.sendMediaInfoMessage_()}.bind(this))["catch"](function(a){var c="LOAD_FAILED";a.category==shaka.util.Error.Category.PLAYER&&a.code==shaka.util.Error.Code.LOAD_INTERRUPTED&&(c="LOAD_CANCELLED");this.sendMessage_({requestId:Number(b.requestId),type:c},this.genericBus_)}.bind(this));
405
409
  break;default:shaka.log.warning("Unrecognized message type from the generic Chromecast controller!",b.type),this.sendMessage_({requestId:Number(b.requestId),type:"INVALID_REQUEST",reason:"INVALID_COMMAND"},this.genericBus_)}};shaka.cast.CastReceiver.prototype.sendAsyncComplete_=function(a,b,c){this.player_&&this.sendMessage_({type:"asyncComplete",id:b,error:c},this.shakaBus_,a)};
406
410
  shaka.cast.CastReceiver.prototype.sendMessage_=function(a,b,c){this.isConnected_&&(a=shaka.cast.CastUtils.serialize(a),c?b.getCastChannel(c).send(a):b.broadcast(a))};shaka.cast.CastReceiver.prototype.getPlayState_=function(){var a=shaka.cast.CastReceiver.PLAY_STATE;return this.isIdle_?a.IDLE:this.player_.isBuffering()?a.BUFFERING:this.video_.paused?a.PAUSED:a.PLAYING};
407
- shaka.cast.CastReceiver.prototype.sendMediaStatus_=function(a,b){var c={mediaSessionId:0,playbackRate:this.video_.playbackRate,playerState:this.getPlayState_(),currentTime:this.video_.currentTime,supportedMediaCommands:15,volume:{level:this.video_.volume,muted:this.video_.muted}};b&&(c.media=b);this.sendMessage_({requestId:a,type:"MEDIA_STATUS",status:[c]},this.genericBus_)};shaka.cast.CastReceiver.PLAY_STATE={IDLE:"IDLE",PLAYING:"PLAYING",BUFFERING:"BUFFERING",PAUSED:"PAUSED"};shaka.util.XmlUtils={};shaka.util.XmlUtils.findChild=function(a,b){var c=shaka.util.XmlUtils.findChildren(a,b);return 1!=c.length?null:c[0]};shaka.util.XmlUtils.findChildNS=function(a,b,c){a=shaka.util.XmlUtils.findChildrenNS(a,b,c);return 1!=a.length?null:a[0]};shaka.util.XmlUtils.findChildren=function(a,b){return Array.prototype.filter.call(a.childNodes,function(a){return a instanceof Element&&a.tagName==b})};
411
+ shaka.cast.CastReceiver.prototype.sendMediaStatus_=function(a,b){var c={mediaSessionId:0,playbackRate:this.video_.playbackRate,playerState:this.getPlayState_(),currentTime:this.video_.currentTime,supportedMediaCommands:15,volume:{level:this.video_.volume,muted:this.video_.muted}};b&&(c.media=b);this.sendMessage_({requestId:a,type:"MEDIA_STATUS",status:[c]},this.genericBus_)};shaka.cast.CastReceiver.PLAY_STATE={IDLE:"IDLE",PLAYING:"PLAYING",BUFFERING:"BUFFERING",PAUSED:"PAUSED"};shaka.util.DataViewReader=function(a,b){this.dataView_=a;this.littleEndian_=b==shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN;this.position_=0};goog.exportSymbol("shaka.util.DataViewReader",shaka.util.DataViewReader);shaka.util.DataViewReader.Endianness={BIG_ENDIAN:0,LITTLE_ENDIAN:1};goog.exportProperty(shaka.util.DataViewReader,"Endianness",shaka.util.DataViewReader.Endianness);shaka.util.DataViewReader.prototype.hasMoreData=function(){return this.position_<this.dataView_.byteLength};
412
+ goog.exportProperty(shaka.util.DataViewReader.prototype,"hasMoreData",shaka.util.DataViewReader.prototype.hasMoreData);shaka.util.DataViewReader.prototype.getPosition=function(){return this.position_};goog.exportProperty(shaka.util.DataViewReader.prototype,"getPosition",shaka.util.DataViewReader.prototype.getPosition);shaka.util.DataViewReader.prototype.getLength=function(){return this.dataView_.byteLength};goog.exportProperty(shaka.util.DataViewReader.prototype,"getLength",shaka.util.DataViewReader.prototype.getLength);
413
+ shaka.util.DataViewReader.prototype.readUint8=function(){try{var a=this.dataView_.getUint8(this.position_);this.position_+=1;return a}catch(b){this.throwOutOfBounds_()}};goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint8",shaka.util.DataViewReader.prototype.readUint8);shaka.util.DataViewReader.prototype.readUint16=function(){try{var a=this.dataView_.getUint16(this.position_,this.littleEndian_);this.position_+=2;return a}catch(b){this.throwOutOfBounds_()}};
414
+ goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint16",shaka.util.DataViewReader.prototype.readUint16);shaka.util.DataViewReader.prototype.readUint32=function(){try{var a=this.dataView_.getUint32(this.position_,this.littleEndian_);this.position_+=4;return a}catch(b){this.throwOutOfBounds_()}};goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint32",shaka.util.DataViewReader.prototype.readUint32);
415
+ shaka.util.DataViewReader.prototype.readInt32=function(){try{var a=this.dataView_.getInt32(this.position_,this.littleEndian_);this.position_+=4;return a}catch(b){this.throwOutOfBounds_()}};goog.exportProperty(shaka.util.DataViewReader.prototype,"readInt32",shaka.util.DataViewReader.prototype.readInt32);
416
+ shaka.util.DataViewReader.prototype.readUint64=function(){try{if(this.littleEndian_){var a=this.dataView_.getUint32(this.position_,!0);var b=this.dataView_.getUint32(this.position_+4,!0)}else b=this.dataView_.getUint32(this.position_,!1),a=this.dataView_.getUint32(this.position_+4,!1)}catch(c){this.throwOutOfBounds_()}if(2097151<b)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.JS_INTEGER_OVERFLOW);this.position_+=8;return b*Math.pow(2,
417
+ 32)+a};goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint64",shaka.util.DataViewReader.prototype.readUint64);shaka.util.DataViewReader.prototype.readBytes=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.readBytes");this.position_+a>this.dataView_.byteLength&&this.throwOutOfBounds_();var b=new Uint8Array(this.dataView_.buffer,this.dataView_.byteOffset+this.position_,a);this.position_+=a;return new Uint8Array(b)};
418
+ goog.exportProperty(shaka.util.DataViewReader.prototype,"readBytes",shaka.util.DataViewReader.prototype.readBytes);shaka.util.DataViewReader.prototype.skip=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.skip");this.position_+a>this.dataView_.byteLength&&this.throwOutOfBounds_();this.position_+=a};goog.exportProperty(shaka.util.DataViewReader.prototype,"skip",shaka.util.DataViewReader.prototype.skip);
419
+ shaka.util.DataViewReader.prototype.rewind=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.rewind");this.position_<a&&this.throwOutOfBounds_();this.position_-=a};goog.exportProperty(shaka.util.DataViewReader.prototype,"rewind",shaka.util.DataViewReader.prototype.rewind);shaka.util.DataViewReader.prototype.seek=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.seek");(0>a||a>this.dataView_.byteLength)&&this.throwOutOfBounds_();this.position_=a};
420
+ goog.exportProperty(shaka.util.DataViewReader.prototype,"seek",shaka.util.DataViewReader.prototype.seek);shaka.util.DataViewReader.prototype.readTerminatedString=function(){for(var a=this.position_;this.hasMoreData()&&0!=this.dataView_.getUint8(this.position_);)this.position_+=1;a=new Uint8Array(this.dataView_.buffer,this.dataView_.byteOffset+a,this.position_-a);this.position_+=1;return shaka.util.StringUtils.fromUTF8(a)};
421
+ goog.exportProperty(shaka.util.DataViewReader.prototype,"readTerminatedString",shaka.util.DataViewReader.prototype.readTerminatedString);shaka.util.DataViewReader.prototype.throwOutOfBounds_=function(){throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.BUFFER_READ_OUT_OF_BOUNDS);};shaka.util.Mp4Parser=function(){this.headers_=[];this.boxDefinitions_=[];this.done_=!1};goog.exportSymbol("shaka.util.Mp4Parser",shaka.util.Mp4Parser);shaka.util.Mp4Parser.BoxType_={BASIC_BOX:0,FULL_BOX:1};shaka.util.Mp4Parser.prototype.box=function(a,b){var c=shaka.util.Mp4Parser.typeFromString_(a);this.headers_[c]=shaka.util.Mp4Parser.BoxType_.BASIC_BOX;this.boxDefinitions_[c]=b;return this};goog.exportProperty(shaka.util.Mp4Parser.prototype,"box",shaka.util.Mp4Parser.prototype.box);
422
+ shaka.util.Mp4Parser.prototype.fullBox=function(a,b){var c=shaka.util.Mp4Parser.typeFromString_(a);this.headers_[c]=shaka.util.Mp4Parser.BoxType_.FULL_BOX;this.boxDefinitions_[c]=b;return this};goog.exportProperty(shaka.util.Mp4Parser.prototype,"fullBox",shaka.util.Mp4Parser.prototype.fullBox);shaka.util.Mp4Parser.prototype.stop=function(){this.done_=!0};goog.exportProperty(shaka.util.Mp4Parser.prototype,"stop",shaka.util.Mp4Parser.prototype.stop);
423
+ shaka.util.Mp4Parser.prototype.parse=function(a,b){var c=new Uint8Array(a);c=new shaka.util.DataViewReader(new DataView(c.buffer,c.byteOffset,c.byteLength),shaka.util.DataViewReader.Endianness.BIG_ENDIAN);for(this.done_=!1;c.hasMoreData()&&!this.done_;)this.parseNext(0,c,b)};goog.exportProperty(shaka.util.Mp4Parser.prototype,"parse",shaka.util.Mp4Parser.prototype.parse);
424
+ shaka.util.Mp4Parser.prototype.parseNext=function(a,b,c){var d=b.getPosition(),e=b.readUint32(),f=b.readUint32(),g=shaka.util.Mp4Parser.typeToString(f);shaka.log.v2("Parsing MP4 box",g);switch(e){case 0:e=b.getLength()-d;break;case 1:e=b.readUint64()}if(g=this.boxDefinitions_[f]){var h=null,k=null;this.headers_[f]==shaka.util.Mp4Parser.BoxType_.FULL_BOX&&(k=b.readUint32(),h=k>>>24,k&=16777215);f=d+e;c&&f>b.getLength()&&(f=b.getLength());f-=b.getPosition();b=0<f?b.readBytes(f):new Uint8Array(0);b=
425
+ new shaka.util.DataViewReader(new DataView(b.buffer,b.byteOffset,b.byteLength),shaka.util.DataViewReader.Endianness.BIG_ENDIAN);g({parser:this,partialOkay:c||!1,version:h,flags:k,reader:b,size:e,start:d+a})}else a=Math.min(d+e-b.getPosition(),b.getLength()-b.getPosition()),b.skip(a)};goog.exportProperty(shaka.util.Mp4Parser.prototype,"parseNext",shaka.util.Mp4Parser.prototype.parseNext);
426
+ shaka.util.Mp4Parser.children=function(a){for(;a.reader.hasMoreData()&&!a.parser.done_;)a.parser.parseNext(a.start,a.reader,a.partialOkay)};goog.exportProperty(shaka.util.Mp4Parser,"children",shaka.util.Mp4Parser.children);shaka.util.Mp4Parser.sampleDescription=function(a){for(var b=a.reader.readUint32();0<b&&!a.parser.done_;--b)a.parser.parseNext(a.start,a.reader,a.partialOkay)};goog.exportProperty(shaka.util.Mp4Parser,"sampleDescription",shaka.util.Mp4Parser.sampleDescription);
427
+ shaka.util.Mp4Parser.allData=function(a){return function(b){var c=b.reader.getLength()-b.reader.getPosition();a(b.reader.readBytes(c))}};goog.exportProperty(shaka.util.Mp4Parser,"allData",shaka.util.Mp4Parser.allData);shaka.util.Mp4Parser.typeFromString_=function(a){goog.asserts.assert(4==a.length,"Mp4 box names must be 4 characters long");for(var b=0,c=0;c<a.length;c++)b=b<<8|a.charCodeAt(c);return b};
428
+ shaka.util.Mp4Parser.typeToString=function(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)};goog.exportProperty(shaka.util.Mp4Parser,"typeToString",shaka.util.Mp4Parser.typeToString);shaka.util.Pssh=function(a){this.systemIds=[];this.cencKeyIds=[];this.dataBoundaries=[];(new shaka.util.Mp4Parser).fullBox("pssh",this.parseBox_.bind(this)).parse(a.buffer);0==this.dataBoundaries.length&&shaka.log.warning("No pssh box found!")};
429
+ shaka.util.Pssh.prototype.parseBox_=function(a){goog.asserts.assert(null!=a.version,"PSSH boxes are full boxes and must have a valid version");goog.asserts.assert(null!=a.flags,"PSSH boxes are full boxes and must have a valid flag");if(1<a.version)shaka.log.warning("Unrecognized PSSH version found!");else{var b=shaka.util.Uint8ArrayUtils.toHex(a.reader.readBytes(16)),c=[];if(0<a.version)for(var d=a.reader.readUint32(),e=0;e<d;++e){var f=shaka.util.Uint8ArrayUtils.toHex(a.reader.readBytes(16));c.push(f)}d=
430
+ a.reader.readUint32();a.reader.skip(d);this.cencKeyIds.push.apply(this.cencKeyIds,c);this.systemIds.push(b);this.dataBoundaries.push({start:a.start,end:a.start+a.size-1});a.reader.getPosition()!=a.reader.getLength()&&shaka.log.warning("Mismatch between box size and data size!")}};
431
+ shaka.util.Pssh.createPssh=function(a,b){var c=a.length,d=12+b.length+4+c,e=new ArrayBuffer(d),f=new Uint8Array(e);e=new DataView(e);var g=0;e.setUint32(g,d);g+=4;e.setUint32(g,1886614376);g+=4;e.setUint32(g,0);g+=4;f.set(b,g);g+=b.length;e.setUint32(g,c);g+=4;f.set(a,g);goog.asserts.assert(g+c===d,"MS PRO invalid length.");return f};shaka.util.XmlUtils={};shaka.util.XmlUtils.findChild=function(a,b){var c=shaka.util.XmlUtils.findChildren(a,b);return 1!=c.length?null:c[0]};shaka.util.XmlUtils.findChildNS=function(a,b,c){a=shaka.util.XmlUtils.findChildrenNS(a,b,c);return 1!=a.length?null:a[0]};shaka.util.XmlUtils.findChildren=function(a,b){return Array.prototype.filter.call(a.childNodes,function(a){return a instanceof Element&&a.tagName==b})};
408
432
  shaka.util.XmlUtils.findChildrenNS=function(a,b,c){return Array.prototype.filter.call(a.childNodes,function(a){return a instanceof Element&&a.localName==c&&a.namespaceURI==b})};shaka.util.XmlUtils.getAttributeNS=function(a,b,c){return a.hasAttributeNS(b,c)?a.getAttributeNS(b,c):null};shaka.util.XmlUtils.getContents=function(a){return Array.prototype.every.call(a.childNodes,function(a){return a.nodeType==Node.TEXT_NODE||a.nodeType==Node.CDATA_SECTION_NODE})?a.textContent.trim():null};
409
433
  shaka.util.XmlUtils.parseAttr=function(a,b,c,d){d=void 0===d?null:d;var e=null;a=a.getAttribute(b);null!=a&&(e=c(a));return null==e?d:e};shaka.util.XmlUtils.parseDate=function(a){if(!a)return null;/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(a)&&(a+="Z");a=Date.parse(a);return isNaN(a)?null:Math.floor(a/1E3)};
410
434
  shaka.util.XmlUtils.parseDuration=function(a){if(!a)return null;var b=/^P(?:([0-9]*)Y)?(?:([0-9]*)M)?(?:([0-9]*)D)?(?:T(?:([0-9]*)H)?(?:([0-9]*)M)?(?:([0-9.]*)S)?)?$/.exec(a);if(!b)return shaka.log.warning("Invalid duration string:",a),null;a=31536E3*Number(b[1]||null)+2592E3*Number(b[2]||null)+86400*Number(b[3]||null)+3600*Number(b[4]||null)+60*Number(b[5]||null)+Number(b[6]||null);return isFinite(a)?a:null};
@@ -420,8 +444,9 @@ shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.DASH_NO_COMMON_KEY_SYST
420
444
  shaka.dash.ContentProtection.parseMsProRecords_=function(a,b){for(var c=[],d=new DataView(a);b<a.byteLength-1;){var e=d.getUint16(b,!0);b+=2;var f=d.getUint16(b,!0);b+=2;goog.asserts.assert(0===(f&1),"expected byteLength to be an even number");var g=new Uint8Array(a,b,f);c.push({type:e,value:g});b+=f}return c};
421
445
  shaka.dash.ContentProtection.parseMsPro_=function(a){var b=0,c=(new DataView(a)).getUint32(b,!0);b+=4;return c!==a.byteLength?(shaka.log.warning("PlayReady Object with invalid length encountered."),[]):shaka.dash.ContentProtection.parseMsProRecords_(a,b+2)};shaka.dash.ContentProtection.getLaurl_=function(a){return(a=a.querySelector("DATA > LA_URL"))?a.textContent:""};
422
446
  shaka.dash.ContentProtection.getPlayReadyLicenseUrl=function(a){var b=shaka.util.XmlUtils.findChildNS(a.node,"urn:microsoft:playready","pro");if(!b)return"";a=shaka.dash.ContentProtection;var c=a.PLAYREADY_RECORD_TYPES;b=shaka.util.Uint8ArrayUtils.fromBase64(b.textContent);b=a.parseMsPro_(b.buffer).filter(function(a){return a.type===c.RIGHTS_MANAGEMENT})[0];if(!b)return"";b=shaka.util.StringUtils.fromUTF16(b.value,!0);return(b=shaka.util.XmlUtils.parseXmlString(b,"WRMHEADER"))?a.getLaurl_(b):""};
423
- shaka.dash.ContentProtection.convertElements_=function(a,b,c){var d=shaka.dash.ContentProtection,e=shaka.util.ManifestParserUtils,f=d.defaultKeySystems_;d=d.licenseUrlParsers_;var g=[];c=$jscomp.makeIterator(c);for(var h=c.next();!h.done;h=c.next()){h=h.value;var k=f.get(h.schemeUri);if(k){goog.asserts.assert(!h.init||h.init.length,"Init data must be null or non-empty.");var l=e.createDrmInfo(k,h.init||a);if(k=d.get(k))l.licenseServerUri=k(h);g.push(l)}else for(goog.asserts.assert(b,"ContentProtection callback is required"),
424
- h=b(h.node)||[],h=$jscomp.makeIterator(h),l=h.next();!l.done;l=h.next())g.push(l.value)}return g};shaka.dash.ContentProtection.licenseUrlParsers_=(new Map).set("com.widevine.alpha",shaka.dash.ContentProtection.getWidevineLicenseUrl).set("com.microsoft.playready",shaka.dash.ContentProtection.getPlayReadyLicenseUrl);
447
+ shaka.dash.ContentProtection.getInitDataFromPro_=function(a){var b=shaka.util.XmlUtils.findChildNS(a.node,"urn:microsoft:playready","pro");if(!b)return null;b=shaka.util.Uint8ArrayUtils.fromBase64(b.textContent);var c=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);return[{initData:shaka.util.Pssh.createPssh(b,c),initDataType:"cenc",keyId:a.keyId}]};
448
+ shaka.dash.ContentProtection.convertElements_=function(a,b,c){var d=shaka.dash.ContentProtection,e=shaka.util.ManifestParserUtils,f=d.defaultKeySystems_,g=d.licenseUrlParsers_,h=[];c=$jscomp.makeIterator(c);for(var k=c.next();!k.done;k=c.next()){k=k.value;var l=f.get(k.schemeUri);if(l){goog.asserts.assert(!k.init||k.init.length,"Init data must be null or non-empty.");var m=d.getInitDataFromPro_(k);m=e.createDrmInfo(l,k.init||a||m);if(l=g.get(l))m.licenseServerUri=l(k);h.push(m)}else for(goog.asserts.assert(b,
449
+ "ContentProtection callback is required"),k=b(k.node)||[],k=$jscomp.makeIterator(k),l=k.next();!l.done;l=k.next())h.push(l.value)}return h};shaka.dash.ContentProtection.licenseUrlParsers_=(new Map).set("com.widevine.alpha",shaka.dash.ContentProtection.getWidevineLicenseUrl).set("com.microsoft.playready",shaka.dash.ContentProtection.getPlayReadyLicenseUrl);
425
450
  shaka.dash.ContentProtection.parseElements_=function(a){var b=[];a=$jscomp.makeIterator(a);for(var c=a.next();!c.done;c=a.next())(c=shaka.dash.ContentProtection.parseElement_(c.value))&&b.push(c);return b};
426
451
  shaka.dash.ContentProtection.parseElement_=function(a){var b=shaka.dash.ContentProtection.CencNamespaceUri_,c=a.getAttribute("schemeIdUri"),d=shaka.util.XmlUtils.getAttributeNS(a,b,"default_KID");b=shaka.util.XmlUtils.findChildrenNS(a,b,"pssh").map(shaka.util.XmlUtils.getContents);if(!c)return shaka.log.error("Missing required schemeIdUri attribute on","ContentProtection element",a),null;c=c.toLowerCase();if(d&&(d=d.replace(/-/g,"").toLowerCase(),d.includes(" ")))throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
427
452
  shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED);var e=[];try{e=b.map(function(a){return{initDataType:"cenc",initData:shaka.util.Uint8ArrayUtils.fromBase64(a),keyId:null}})}catch(f){throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.DASH_PSSH_BAD_ENCODING);}return{node:a,schemeUri:c,keyId:d,init:0<e.length?e:null}};shaka.dash.MpdUtils={};shaka.dash.MpdUtils.XlinkNamespaceUri_="http://www.w3.org/1999/xlink";
@@ -444,24 +469,7 @@ goog.exportProperty(shaka.media.InitSegmentReference.prototype,"getStartByte",sh
444
469
  shaka.media.SegmentReference=function(a,b,c,d,e,f){goog.asserts.assert(b<c,"startTime must be less than endTime");goog.asserts.assert(e<f||null==f,"startByte must be < endByte");this.position=a;this.startTime=b;this.endTime=c;this.getUris=d;this.startByte=e;this.endByte=f};goog.exportSymbol("shaka.media.SegmentReference",shaka.media.SegmentReference);shaka.media.SegmentReference.prototype.getPosition=function(){return this.position};
445
470
  goog.exportProperty(shaka.media.SegmentReference.prototype,"getPosition",shaka.media.SegmentReference.prototype.getPosition);shaka.media.SegmentReference.prototype.getStartTime=function(){return this.startTime};goog.exportProperty(shaka.media.SegmentReference.prototype,"getStartTime",shaka.media.SegmentReference.prototype.getStartTime);shaka.media.SegmentReference.prototype.getEndTime=function(){return this.endTime};goog.exportProperty(shaka.media.SegmentReference.prototype,"getEndTime",shaka.media.SegmentReference.prototype.getEndTime);
446
471
  shaka.media.SegmentReference.prototype.createUris=function(){return this.getUris()};goog.exportProperty(shaka.media.SegmentReference.prototype,"createUris",shaka.media.SegmentReference.prototype.createUris);shaka.media.SegmentReference.prototype.getStartByte=function(){return this.startByte};goog.exportProperty(shaka.media.SegmentReference.prototype,"getStartByte",shaka.media.SegmentReference.prototype.getStartByte);shaka.media.SegmentReference.prototype.getEndByte=function(){return this.endByte};
447
- goog.exportProperty(shaka.media.SegmentReference.prototype,"getEndByte",shaka.media.SegmentReference.prototype.getEndByte);shaka.media.SegmentReference.prototype.getSize=function(){return this.endByte?this.endByte-this.startByte:null};shaka.util.DataViewReader=function(a,b){this.dataView_=a;this.littleEndian_=b==shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN;this.position_=0};goog.exportSymbol("shaka.util.DataViewReader",shaka.util.DataViewReader);shaka.util.DataViewReader.Endianness={BIG_ENDIAN:0,LITTLE_ENDIAN:1};goog.exportProperty(shaka.util.DataViewReader,"Endianness",shaka.util.DataViewReader.Endianness);shaka.util.DataViewReader.prototype.hasMoreData=function(){return this.position_<this.dataView_.byteLength};
448
- goog.exportProperty(shaka.util.DataViewReader.prototype,"hasMoreData",shaka.util.DataViewReader.prototype.hasMoreData);shaka.util.DataViewReader.prototype.getPosition=function(){return this.position_};goog.exportProperty(shaka.util.DataViewReader.prototype,"getPosition",shaka.util.DataViewReader.prototype.getPosition);shaka.util.DataViewReader.prototype.getLength=function(){return this.dataView_.byteLength};goog.exportProperty(shaka.util.DataViewReader.prototype,"getLength",shaka.util.DataViewReader.prototype.getLength);
449
- shaka.util.DataViewReader.prototype.readUint8=function(){try{var a=this.dataView_.getUint8(this.position_);this.position_+=1;return a}catch(b){this.throwOutOfBounds_()}};goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint8",shaka.util.DataViewReader.prototype.readUint8);shaka.util.DataViewReader.prototype.readUint16=function(){try{var a=this.dataView_.getUint16(this.position_,this.littleEndian_);this.position_+=2;return a}catch(b){this.throwOutOfBounds_()}};
450
- goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint16",shaka.util.DataViewReader.prototype.readUint16);shaka.util.DataViewReader.prototype.readUint32=function(){try{var a=this.dataView_.getUint32(this.position_,this.littleEndian_);this.position_+=4;return a}catch(b){this.throwOutOfBounds_()}};goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint32",shaka.util.DataViewReader.prototype.readUint32);
451
- shaka.util.DataViewReader.prototype.readInt32=function(){try{var a=this.dataView_.getInt32(this.position_,this.littleEndian_);this.position_+=4;return a}catch(b){this.throwOutOfBounds_()}};goog.exportProperty(shaka.util.DataViewReader.prototype,"readInt32",shaka.util.DataViewReader.prototype.readInt32);
452
- shaka.util.DataViewReader.prototype.readUint64=function(){try{if(this.littleEndian_){var a=this.dataView_.getUint32(this.position_,!0);var b=this.dataView_.getUint32(this.position_+4,!0)}else b=this.dataView_.getUint32(this.position_,!1),a=this.dataView_.getUint32(this.position_+4,!1)}catch(c){this.throwOutOfBounds_()}if(2097151<b)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.JS_INTEGER_OVERFLOW);this.position_+=8;return b*Math.pow(2,
453
- 32)+a};goog.exportProperty(shaka.util.DataViewReader.prototype,"readUint64",shaka.util.DataViewReader.prototype.readUint64);shaka.util.DataViewReader.prototype.readBytes=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.readBytes");this.position_+a>this.dataView_.byteLength&&this.throwOutOfBounds_();var b=new Uint8Array(this.dataView_.buffer,this.dataView_.byteOffset+this.position_,a);this.position_+=a;return new Uint8Array(b)};
454
- goog.exportProperty(shaka.util.DataViewReader.prototype,"readBytes",shaka.util.DataViewReader.prototype.readBytes);shaka.util.DataViewReader.prototype.skip=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.skip");this.position_+a>this.dataView_.byteLength&&this.throwOutOfBounds_();this.position_+=a};goog.exportProperty(shaka.util.DataViewReader.prototype,"skip",shaka.util.DataViewReader.prototype.skip);
455
- shaka.util.DataViewReader.prototype.rewind=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.rewind");this.position_<a&&this.throwOutOfBounds_();this.position_-=a};goog.exportProperty(shaka.util.DataViewReader.prototype,"rewind",shaka.util.DataViewReader.prototype.rewind);shaka.util.DataViewReader.prototype.seek=function(a){goog.asserts.assert(0<=a,"Bad call to DataViewReader.seek");(0>a||a>this.dataView_.byteLength)&&this.throwOutOfBounds_();this.position_=a};
456
- goog.exportProperty(shaka.util.DataViewReader.prototype,"seek",shaka.util.DataViewReader.prototype.seek);shaka.util.DataViewReader.prototype.readTerminatedString=function(){for(var a=this.position_;this.hasMoreData()&&0!=this.dataView_.getUint8(this.position_);)this.position_+=1;a=new Uint8Array(this.dataView_.buffer,this.dataView_.byteOffset+a,this.position_-a);this.position_+=1;return shaka.util.StringUtils.fromUTF8(a)};
457
- goog.exportProperty(shaka.util.DataViewReader.prototype,"readTerminatedString",shaka.util.DataViewReader.prototype.readTerminatedString);shaka.util.DataViewReader.prototype.throwOutOfBounds_=function(){throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.BUFFER_READ_OUT_OF_BOUNDS);};shaka.util.Mp4Parser=function(){this.headers_=[];this.boxDefinitions_=[];this.done_=!1};goog.exportSymbol("shaka.util.Mp4Parser",shaka.util.Mp4Parser);shaka.util.Mp4Parser.BoxType_={BASIC_BOX:0,FULL_BOX:1};shaka.util.Mp4Parser.prototype.box=function(a,b){var c=shaka.util.Mp4Parser.typeFromString_(a);this.headers_[c]=shaka.util.Mp4Parser.BoxType_.BASIC_BOX;this.boxDefinitions_[c]=b;return this};goog.exportProperty(shaka.util.Mp4Parser.prototype,"box",shaka.util.Mp4Parser.prototype.box);
458
- shaka.util.Mp4Parser.prototype.fullBox=function(a,b){var c=shaka.util.Mp4Parser.typeFromString_(a);this.headers_[c]=shaka.util.Mp4Parser.BoxType_.FULL_BOX;this.boxDefinitions_[c]=b;return this};goog.exportProperty(shaka.util.Mp4Parser.prototype,"fullBox",shaka.util.Mp4Parser.prototype.fullBox);shaka.util.Mp4Parser.prototype.stop=function(){this.done_=!0};goog.exportProperty(shaka.util.Mp4Parser.prototype,"stop",shaka.util.Mp4Parser.prototype.stop);
459
- shaka.util.Mp4Parser.prototype.parse=function(a,b){var c=new Uint8Array(a);c=new shaka.util.DataViewReader(new DataView(c.buffer,c.byteOffset,c.byteLength),shaka.util.DataViewReader.Endianness.BIG_ENDIAN);for(this.done_=!1;c.hasMoreData()&&!this.done_;)this.parseNext(0,c,b)};goog.exportProperty(shaka.util.Mp4Parser.prototype,"parse",shaka.util.Mp4Parser.prototype.parse);
460
- shaka.util.Mp4Parser.prototype.parseNext=function(a,b,c){var d=b.getPosition(),e=b.readUint32(),f=b.readUint32(),g=shaka.util.Mp4Parser.typeToString(f);shaka.log.v2("Parsing MP4 box",g);switch(e){case 0:e=b.getLength()-d;break;case 1:e=b.readUint64()}if(g=this.boxDefinitions_[f]){var h=null,k=null;this.headers_[f]==shaka.util.Mp4Parser.BoxType_.FULL_BOX&&(k=b.readUint32(),h=k>>>24,k&=16777215);f=d+e;c&&f>b.getLength()&&(f=b.getLength());f-=b.getPosition();b=0<f?b.readBytes(f):new Uint8Array(0);b=
461
- new shaka.util.DataViewReader(new DataView(b.buffer,b.byteOffset,b.byteLength),shaka.util.DataViewReader.Endianness.BIG_ENDIAN);g({parser:this,partialOkay:c||!1,version:h,flags:k,reader:b,size:e,start:d+a})}else a=Math.min(d+e-b.getPosition(),b.getLength()-b.getPosition()),b.skip(a)};goog.exportProperty(shaka.util.Mp4Parser.prototype,"parseNext",shaka.util.Mp4Parser.prototype.parseNext);
462
- shaka.util.Mp4Parser.children=function(a){for(;a.reader.hasMoreData()&&!a.parser.done_;)a.parser.parseNext(a.start,a.reader,a.partialOkay)};goog.exportProperty(shaka.util.Mp4Parser,"children",shaka.util.Mp4Parser.children);shaka.util.Mp4Parser.sampleDescription=function(a){for(var b=a.reader.readUint32();0<b&&!a.parser.done_;--b)a.parser.parseNext(a.start,a.reader,a.partialOkay)};goog.exportProperty(shaka.util.Mp4Parser,"sampleDescription",shaka.util.Mp4Parser.sampleDescription);
463
- shaka.util.Mp4Parser.allData=function(a){return function(b){var c=b.reader.getLength()-b.reader.getPosition();a(b.reader.readBytes(c))}};goog.exportProperty(shaka.util.Mp4Parser,"allData",shaka.util.Mp4Parser.allData);shaka.util.Mp4Parser.typeFromString_=function(a){goog.asserts.assert(4==a.length,"Mp4 box names must be 4 characters long");for(var b=0,c=0;c<a.length;c++)b=b<<8|a.charCodeAt(c);return b};
464
- shaka.util.Mp4Parser.typeToString=function(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)};goog.exportProperty(shaka.util.Mp4Parser,"typeToString",shaka.util.Mp4Parser.typeToString);shaka.media.Mp4SegmentIndexParser=function(a,b,c,d){var e=shaka.media.Mp4SegmentIndexParser,f,g=(new shaka.util.Mp4Parser).fullBox("sidx",function(a){f=e.parseSIDX_(b,d,c,a)});a&&g.parse(a);if(f)return f;shaka.log.error('Invalid box type, expected "sidx".');throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.MP4_SIDX_WRONG_BOX_TYPE);};
472
+ goog.exportProperty(shaka.media.SegmentReference.prototype,"getEndByte",shaka.media.SegmentReference.prototype.getEndByte);shaka.media.SegmentReference.prototype.getSize=function(){return this.endByte?this.endByte-this.startByte:null};shaka.media.Mp4SegmentIndexParser=function(a,b,c,d){var e=shaka.media.Mp4SegmentIndexParser,f,g=(new shaka.util.Mp4Parser).fullBox("sidx",function(a){f=e.parseSIDX_(b,d,c,a)});a&&g.parse(a);if(f)return f;shaka.log.error('Invalid box type, expected "sidx".');throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.MP4_SIDX_WRONG_BOX_TYPE);};
465
473
  shaka.media.Mp4SegmentIndexParser.parseSIDX_=function(a,b,c,d){goog.asserts.assert(null!=d.version,"SIDX is a full box and should have a valid version.");var e=[];d.reader.skip(4);var f=d.reader.readUint32();if(0==f)throw shaka.log.error("Invalid timescale."),new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.MP4_SIDX_INVALID_TIMESCALE);if(0==d.version){var g=d.reader.readUint32();var h=d.reader.readUint32()}else g=d.reader.readUint64(),h=
466
474
  d.reader.readUint64();d.reader.skip(2);var k=d.reader.readUint16();a=a+d.size+h;for(h=0;h<k;h++){var l=d.reader.readUint32(),m=(l&2147483648)>>>31;l&=2147483647;var n=d.reader.readUint32();d.reader.skip(4);if(1==m)throw shaka.log.error("Heirarchical SIDXs are not supported."),new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MEDIA,shaka.util.Error.Code.MP4_SIDX_TYPE_NOT_SUPPORTED);e.push(new shaka.media.SegmentReference(e.length,g/f-b,(g+n)/f-b,function(){return c},
467
475
  a,a+l-1));g+=n;a+=l}d.parser.stop();return e};shaka.media.SegmentIndex=function(a){goog.DEBUG&&shaka.media.SegmentIndex.assertCorrectReferences_(a);this.references_=a};goog.exportSymbol("shaka.media.SegmentIndex",shaka.media.SegmentIndex);shaka.media.SegmentIndex.prototype.destroy=function(){this.references_=null;return Promise.resolve()};goog.exportProperty(shaka.media.SegmentIndex.prototype,"destroy",shaka.media.SegmentIndex.prototype.destroy);
@@ -560,10 +568,10 @@ shaka.dash.DashParser.prototype.update=function(){this.requestManifest_()["catch
560
568
  shaka.dash.DashParser.prototype.requestManifest_=function(){var a=this,b=shaka.net.NetworkingEngine.RequestType.MANIFEST,c=shaka.net.NetworkingEngine.makeRequest(this.manifestUris_,this.config_.retryParameters),d=this.playerInterface_.networkingEngine,e=Date.now();b=d.request(b,c);this.operationManager_.manage(b);return b.promise.then(function(b){if(a.playerInterface_)return b.uri&&!a.manifestUris_.includes(b.uri)&&a.manifestUris_.unshift(b.uri),a.parseManifest_(b.data,b.uri)}).then(function(){var b=
561
569
  (Date.now()-e)/1E3;a.averageUpdateDuration_.sample(1,b);return b})};
562
570
  shaka.dash.DashParser.prototype.parseManifest_=function(a,b){var c=this,d=shaka.util.Error,e=shaka.dash.MpdUtils,f=shaka.util.XmlUtils.parseXml(a,"MPD");if(!f)throw new d(d.Severity.CRITICAL,d.Category.MANIFEST,d.Code.DASH_INVALID_XML,b);d=e.processXlinks(f,this.config_.retryParameters,this.config_.dash.xlinkFailGracefully,b,this.playerInterface_.networkingEngine);this.operationManager_.manage(d);return d.promise.then(function(a){return c.processManifest_(a,b)})};
563
- shaka.dash.DashParser.prototype.processManifest_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var f,g,h,k,l,m,n,p,q,t,r,u,w,x,v,B,D,E,y,A,z,F,C,G;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:f=shaka.util.Functional;g=shaka.util.XmlUtils;h=[b];k=g.findChildren(a,"Location").map(g.getContents).filter(f.isNotNull);0<k.length&&(l=shaka.util.ManifestParserUtils.resolveUris(h,k),h=c.manifestUris_=l);m=g.findChildren(a,"BaseURL").map(g.getContents);
564
- n=shaka.util.ManifestParserUtils.resolveUris(h,m);p=c.config_.dash.ignoreMinBufferTime;q=0;p||(q=g.parseAttr(a,"minBufferTime",g.parseDuration));c.updatePeriod_=g.parseAttr(a,"minimumUpdatePeriod",g.parseDuration,-1);t=g.parseAttr(a,"availabilityStartTime",g.parseDate);r=g.parseAttr(a,"timeShiftBufferDepth",g.parseDuration);u=g.parseAttr(a,"suggestedPresentationDelay",g.parseDuration);w=g.parseAttr(a,"maxSegmentDuration",g.parseDuration);x=a.getAttribute("type")||"static";c.manifest_?v=c.manifest_.presentationTimeline:
565
- (B=Math.max(c.config_.dash.defaultPresentationDelay,1.5*q),D=null!=u?u:B,v=new shaka.media.PresentationTimeline(t,D,c.config_.dash.autoCorrectDrift));E={dynamic:"static"!=x,presentationTimeline:v,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1};y=c.parsePeriods_(E,n,a);A=y.duration;z=y.periods;v.setStatic("static"==x);"static"!=x&&y.durationDerivedFromPeriods||v.setDuration(A||Infinity);(F=v.isLive())&&!isNaN(c.config_.availabilityWindowOverride)&&
566
- (r=c.config_.availabilityWindowOverride);null==r&&(r=Infinity);v.setSegmentAvailabilityDuration(r);v.notifyMaxSegmentDuration(w||1);goog.DEBUG&&v.assertIsValid();if(c.manifest_){e.jumpTo(0);break}c.manifest_={presentationTimeline:v,periods:z,offlineSessionIds:[],minBufferTime:q||0};if(!v.usingPresentationStartTime()){e.jumpTo(0);break}C=g.findChildren(a,"UTCTiming");return e.yield(c.parseUtcTiming_(n,C),4);case 4:G=e.yieldResult;if(!c.playerInterface_)return e["return"]();v.setClockOffset(G);e.jumpToEnd()}})})};
571
+ shaka.dash.DashParser.prototype.processManifest_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var f,g,h,k,l,m,n,p,q,t,r,u,v,x,w,z,D,E,y,B,A,F,C,G;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:f=shaka.util.Functional;g=shaka.util.XmlUtils;h=[b];k=g.findChildren(a,"Location").map(g.getContents).filter(f.isNotNull);0<k.length&&(l=shaka.util.ManifestParserUtils.resolveUris(h,k),h=c.manifestUris_=l);m=g.findChildren(a,"BaseURL").map(g.getContents);
572
+ n=shaka.util.ManifestParserUtils.resolveUris(h,m);p=c.config_.dash.ignoreMinBufferTime;q=0;p||(q=g.parseAttr(a,"minBufferTime",g.parseDuration));c.updatePeriod_=g.parseAttr(a,"minimumUpdatePeriod",g.parseDuration,-1);t=g.parseAttr(a,"availabilityStartTime",g.parseDate);r=g.parseAttr(a,"timeShiftBufferDepth",g.parseDuration);u=g.parseAttr(a,"suggestedPresentationDelay",g.parseDuration);v=g.parseAttr(a,"maxSegmentDuration",g.parseDuration);x=a.getAttribute("type")||"static";c.manifest_?w=c.manifest_.presentationTimeline:
573
+ (z=Math.max(c.config_.dash.defaultPresentationDelay,1.5*q),D=null!=u?u:z,w=new shaka.media.PresentationTimeline(t,D,c.config_.dash.autoCorrectDrift));E={dynamic:"static"!=x,presentationTimeline:w,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1};y=c.parsePeriods_(E,n,a);B=y.duration;A=y.periods;w.setStatic("static"==x);"static"!=x&&y.durationDerivedFromPeriods||w.setDuration(B||Infinity);(F=w.isLive())&&!isNaN(c.config_.availabilityWindowOverride)&&
574
+ (r=c.config_.availabilityWindowOverride);null==r&&(r=Infinity);w.setSegmentAvailabilityDuration(r);w.notifyMaxSegmentDuration(v||1);goog.DEBUG&&w.assertIsValid();if(c.manifest_){e.jumpTo(0);break}c.manifest_={presentationTimeline:w,periods:A,offlineSessionIds:[],minBufferTime:q||0};if(!w.usingPresentationStartTime()){e.jumpTo(0);break}C=g.findChildren(a,"UTCTiming");return e.yield(c.parseUtcTiming_(n,C),4);case 4:G=e.yieldResult;if(!c.playerInterface_)return e["return"]();w.setClockOffset(G);e.jumpToEnd()}})})};
567
575
  shaka.dash.DashParser.prototype.parsePeriods_=function(a,b,c){var d=shaka.util.XmlUtils,e=d.parseAttr(c,"mediaPresentationDuration",d.parseDuration),f=[],g=0;c=d.findChildren(c,"Period");for(var h=0;h<c.length;h++){var k=c[h];g=d.parseAttr(k,"start",d.parseDuration,g);var l=d.parseAttr(k,"duration",d.parseDuration),m=null;if(h!=c.length-1){var n=d.parseAttr(c[h+1],"start",d.parseDuration);null!=n&&(m=n-g)}else null!=e&&(m=e-g);n=shaka.util.ManifestParserUtils.GAP_OVERLAP_TOLERANCE_SECONDS;m&&l&&Math.abs(m-
568
576
  l)>n&&shaka.log.warning("There is a gap/overlap between Periods",k);null==m&&(m=l);k=this.parsePeriod_(a,b,{start:g,duration:m,node:k,isLastPeriod:null==m||h==c.length-1});f.push(k);l=a.period.id;goog.asserts.assert(l,"Period IDs should not be null!");this.periodIds_.includes(l)||(this.periodIds_.push(l),this.manifest_&&(this.playerInterface_.filterNewPeriod(k),this.manifest_.periods.push(k)));if(null==m){h!=c.length-1&&shaka.log.warning("Skipping Period",h+1,"and any subsequent Periods:","Period",
569
577
  h+1,"does not have a valid start time.",f[h+1]);g=null;break}g+=m}null==this.manifest_&&this.playerInterface_.filterAllPeriods(f);return null!=e?(g!=e&&shaka.log.warning("@mediaPresentationDuration does not match the total duration of all","Periods."),{periods:f,duration:e,durationDerivedFromPeriods:!1}):{periods:f,duration:g,durationDerivedFromPeriods:!0}};
@@ -573,11 +581,12 @@ a.streams[0],c=a.trickModeFor;h.forEach(function(a){a.id==c&&a.streams.forEach(f
573
581
  a=[];for(d=0;d<f.length;d++)a.push.apply(a,f[d].streams);return{startTime:c.start,textStreams:a,variants:b}};shaka.dash.DashParser.prototype.getSetsOfType_=function(a,b){return a.filter(function(a){return a.contentType==b})};
574
582
  shaka.dash.DashParser.prototype.createVariants_=function(a,b,c){var d=shaka.util.ManifestParserUtils.ContentType;goog.asserts.assert(!a||a.contentType==d.AUDIO,"Audio parameter mismatch!");goog.asserts.assert(!b||b.contentType==d.VIDEO,"Video parameter mismatch!");if(a||b)if(a&&b){if(d=shaka.media.DrmEngine,d.areDrmCompatible(a.drmInfos,b.drmInfos))for(var e=d.getCommonDrmInfos(a.drmInfos,b.drmInfos),f=0;f<a.streams.length;f++)for(var g=0;g<b.streams.length;g++)d=(b.streams[g].bandwidth||0)+(a.streams[f].bandwidth||
575
583
  0),d={id:this.globalId_++,language:a.language,primary:a.main||b.main,audio:a.streams[f],video:b.streams[g],bandwidth:d,drmInfos:e,allowedByApplication:!0,allowedByKeySystem:!0},c.push(d)}else for(e=a||b,f=0;f<e.streams.length;f++)d=e.streams[f].bandwidth||0,d={id:this.globalId_++,language:e.language||"und",primary:e.main,audio:a?e.streams[f]:null,video:b?e.streams[f]:null,bandwidth:d,drmInfos:e.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0},c.push(d)};
576
- shaka.dash.DashParser.prototype.parseAdaptationSet_=function(a,b){var c=shaka.util.XmlUtils,d=shaka.util.Functional,e=shaka.util.ManifestParserUtils,f=e.ContentType;a.adaptationSet=this.createFrame_(b,a.period,null);var g=!1,h=c.findChildren(b,"Role"),k=h.map(function(a){return a.getAttribute("value")}).filter(d.isNotNull),l=void 0;if(d=a.adaptationSet.contentType==e.ContentType.TEXT)l=e.TextStreamKind.SUBTITLE;for(e=0;e<h.length;e++){var m=h[e].getAttribute("schemeIdUri");if(null==m||"urn:mpeg:dash:role:2011"==
577
- m)switch(m=h[e].getAttribute("value"),m){case "main":g=!0;break;case "caption":case "subtitle":l=m}}var n=null,p=!1;c.findChildren(b,"EssentialProperty").forEach(function(a){"http://dashif.org/guidelines/trickmode"==a.getAttribute("schemeIdUri")?n=a.getAttribute("value"):p=!0});e=c.findChildren(b,"Accessibility");var q=shaka.util.LanguageUtils,t=new Map;h={};e=$jscomp.makeIterator(e);for(m=e.next();!m.done;h={channelId:h.channelId},m=e.next()){m=m.value;var r=m.getAttribute("schemeIdUri");if("urn:scte:dash:cc:cea-608:2015"==
578
- r||"urn:scte:dash:cc:cea-708:2015"==r)h.channelId=1,m=m.getAttribute("value"),null!=m?m.split(";").forEach(function(a){return function(b){if(b.includes("=")){b=b.split("=");var c=b[0].startsWith("CC")?b[0]:"CC"+b[0];b=b[1].split(",")[0].split(":").pop()}else c="CC"+a.channelId,a.channelId+=2;t.set(c,q.normalize(b))}}(h)):t.set("CC1","und")}if(p)return null;h=c.findChildren(b,"ContentProtection");var u=shaka.dash.ContentProtection.parseFromAdaptationSet(h,this.config_.dash.customScheme,this.config_.dash.ignoreDrmInfo);
579
- h=shaka.util.LanguageUtils.normalize(b.getAttribute("lang")||"und");e=b.getAttribute("label");c=c.findChildren(b,"Representation");k=c.map(this.parseRepresentation_.bind(this,a,u,l,h,e,g,k,t)).filter(function(a){return!!a});if(0==k.length){if(d)return null;throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.DASH_EMPTY_ADAPTATION_SET);}a.adaptationSet.contentType&&a.adaptationSet.contentType!=f.APPLICATION||(a.adaptationSet.contentType=
580
- shaka.dash.DashParser.guessContentType_(k[0].mimeType,k[0].codecs),k.forEach(function(b){b.type=a.adaptationSet.contentType}));k.forEach(function(a){u.drmInfos.forEach(function(b){a.keyId&&b.keyIds.push(a.keyId)})});f=c.map(function(a){return a.getAttribute("id")}).filter(shaka.util.Functional.isNotNull);return{id:a.adaptationSet.id||"__fake__"+this.globalId_++,contentType:a.adaptationSet.contentType,language:h,main:g,streams:k,drmInfos:u.drmInfos,trickModeFor:n,representationIds:f}};
584
+ shaka.dash.DashParser.prototype.parseAdaptationSet_=function(a,b){var c=shaka.util.XmlUtils,d=shaka.util.Functional,e=shaka.util.ManifestParserUtils,f=e.ContentType;a.adaptationSet=this.createFrame_(b,a.period,null);var g=!1,h=c.findChildren(b,"Role"),k=h.map(function(a){return a.getAttribute("value")}).filter(d.isNotNull),l=void 0;if(d=a.adaptationSet.contentType==e.ContentType.TEXT)l=e.TextStreamKind.SUBTITLE;for(var m=0;m<h.length;m++){var n=h[m].getAttribute("schemeIdUri");if(null==n||"urn:mpeg:dash:role:2011"==
585
+ n)switch(n=h[m].getAttribute("value"),n){case "main":g=!0;break;case "caption":case "subtitle":l=n}}var p=null,q=!1;c.findChildren(b,"EssentialProperty").forEach(function(a){"http://dashif.org/guidelines/trickmode"==a.getAttribute("schemeIdUri")?p=a.getAttribute("value"):q=!0});m=c.findChildren(b,"Accessibility");var t=shaka.util.LanguageUtils,r=new Map;h={};m=$jscomp.makeIterator(m);for(n=m.next();!n.done;h={channelId:h.channelId},n=m.next()){var u=n.value;n=u.getAttribute("schemeIdUri");u=u.getAttribute("value");
586
+ "urn:scte:dash:cc:cea-608:2015"==n||"urn:scte:dash:cc:cea-708:2015"==n?(h.channelId=1,null!=u?u.split(";").forEach(function(a){return function(b){if(b.includes("=")){b=b.split("=");var c=b[0].startsWith("CC")?b[0]:"CC"+b[0];b=b[1].split(",")[0].split(":").pop()}else c="CC"+a.channelId,a.channelId+=2;r.set(c,t.normalize(b))}}(h)):r.set("CC1","und")):"urn:mpeg:dash:role:2011"==n&&null!=u&&(k.push(u),"captions"==u&&(l=e.TextStreamKind.CLOSED_CAPTION))}if(q)return null;e=c.findChildren(b,"ContentProtection");
587
+ var v=shaka.dash.ContentProtection.parseFromAdaptationSet(e,this.config_.dash.customScheme,this.config_.dash.ignoreDrmInfo);e=shaka.util.LanguageUtils.normalize(b.getAttribute("lang")||"und");h=b.getAttribute("label");c=c.findChildren(b,"Representation");k=c.map(this.parseRepresentation_.bind(this,a,v,l,e,h,g,k,r)).filter(function(a){return!!a});if(0==k.length){if(d)return null;throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.DASH_EMPTY_ADAPTATION_SET);
588
+ }a.adaptationSet.contentType&&a.adaptationSet.contentType!=f.APPLICATION||(a.adaptationSet.contentType=shaka.dash.DashParser.guessContentType_(k[0].mimeType,k[0].codecs),k.forEach(function(b){b.type=a.adaptationSet.contentType}));k.forEach(function(a){v.drmInfos.forEach(function(b){a.keyId&&b.keyIds.push(a.keyId)})});f=c.map(function(a){return a.getAttribute("id")}).filter(shaka.util.Functional.isNotNull);return{id:a.adaptationSet.id||"__fake__"+this.globalId_++,contentType:a.adaptationSet.contentType,
589
+ language:e,main:g,streams:k,drmInfos:v.drmInfos,trickModeFor:p,representationIds:f}};
581
590
  shaka.dash.DashParser.prototype.parseRepresentation_=function(a,b,c,d,e,f,g,h,k){var l=shaka.util.XmlUtils,m=shaka.util.ManifestParserUtils.ContentType;a.representation=this.createFrame_(k,a.adaptationSet,null);if(!this.verifyRepresentation_(a.representation))return shaka.log.warning("Skipping Representation",a.representation),null;a.bandwidth=l.parseAttr(k,"bandwidth",l.parsePositiveInt)||0;var n=a.representation.contentType;m=n==m.TEXT||n==m.APPLICATION;try{var p=this.requestInitSegment_.bind(this);
582
591
  if(a.representation.segmentBase)var q=shaka.dash.SegmentBase.createStream(a,p);else if(a.representation.segmentList)q=shaka.dash.SegmentList.createStream(a,this.segmentIndexMap_);else if(a.representation.segmentTemplate)q=shaka.dash.SegmentTemplate.createStream(a,p,this.segmentIndexMap_,!!this.manifest_);else{goog.asserts.assert(m,"Must have Segment* with non-text streams.");var t=a.representation.baseUris,r=a.periodInfo.duration||0;q={createSegmentIndex:Promise.resolve.bind(Promise),findSegmentPosition:function(a){return 0<=
583
592
  a&&a<r?1:null},getSegmentReference:function(a){return 1!=a?null:new shaka.media.SegmentReference(1,0,r,function(){return t},0,null)},initSegmentReference:null,scaledPresentationTimeOffset:0}}}catch(u){if(m&&u.code==shaka.util.Error.Code.DASH_NO_SEGMENT_INFO)return null;throw u;}k=l.findChildren(k,"ContentProtection");k=shaka.dash.ContentProtection.parseFromRepresentation(k,this.config_.dash.customScheme,b,this.config_.dash.ignoreDrmInfo);return{id:this.globalId_++,originalId:a.representation.id,createSegmentIndex:q.createSegmentIndex,
@@ -625,18 +634,19 @@ shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_INVALID_PLAYLIST_HI
625
634
  d.jumpToEnd()}})})};shaka.hls.HlsParser.prototype.onExpirationUpdated=function(a,b){};
626
635
  shaka.hls.HlsParser.prototype.parseManifest_=function(a){var b=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function d(){var e,f,g,h,k,l,m,n,p,q,t,r,u;return $jscomp.generator.createGenerator(d,function(d){switch(d.nextAddress){case 1:goog.asserts.assert(b.masterPlaylistUri_,"Master playlist URI must be set before calling parseManifest_!");e=b.manifestTextParser_.parsePlaylist(a,b.masterPlaylistUri_);if(e.type!=shaka.hls.PlaylistType.MASTER)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
627
636
  shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_MASTER_PLAYLIST_NOT_PROVIDED);return d.yield(b.createPeriod_(e),2);case 2:f=d.yieldResult;if(!b.playerInterface_)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.PLAYER,shaka.util.Error.Code.OPERATION_ABORTED);if(b.aesEncrypted_&&0==f.variants.length)throw shaka.log.info("No stream is created, because we don't support AES-128","encryption yet"),new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
628
- shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_AES_128_ENCRYPTION_NOT_SUPPORTED);b.playerInterface_.filterAllPeriods([f]);g=Infinity;k=h=0;l=Infinity;for(var w=$jscomp.makeIterator(b.uriToStreamInfosMap_.values()),v=w.next();!v.done;v=w.next())m=v.value,g=Math.min(g,m.minTimestamp),h=Math.max(h,m.minTimestamp),k=Math.max(k,m.maxTimestamp),"text"!=m.stream.type&&(l=Math.min(l,m.duration));goog.asserts.assert(null==b.presentationTimeline_,"Presentation timeline created early!");b.createPresentationTimeline_(k);
637
+ shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_AES_128_ENCRYPTION_NOT_SUPPORTED);b.playerInterface_.filterAllPeriods([f]);g=Infinity;k=h=0;l=Infinity;for(var v=$jscomp.makeIterator(b.uriToStreamInfosMap_.values()),w=v.next();!w.done;w=v.next())m=w.value,g=Math.min(g,m.minTimestamp),h=Math.max(h,m.minTimestamp),k=Math.max(k,m.maxTimestamp),"text"!=m.stream.type&&(l=Math.min(l,m.duration));goog.asserts.assert(null==b.presentationTimeline_,"Presentation timeline created early!");b.createPresentationTimeline_(k);
629
638
  goog.asserts.assert(b.presentationTimeline_,"Presentation timeline not created!");if(b.isLive_()){b.updatePlaylistDelay_=b.minTargetDuration_;n=shaka.hls.HlsParser.PresentationType_;b.presentationType_==n.LIVE&&(p=b.presentationTimeline_.getDelay(),isNaN(b.config_.availabilityWindowOverride)||(p=b.config_.availabilityWindowOverride),b.presentationTimeline_.setSegmentAvailabilityDuration(p));q=shaka.hls.HlsParser.TS_ROLLOVER_/shaka.hls.HlsParser.TS_TIMESCALE_;for(t=0;h>=q;)t+=q,h-=q;if(t)for(shaka.log.debug("Offsetting live streams by",
630
- t,"to compensate for rollover"),w=$jscomp.makeIterator(b.uriToStreamInfosMap_.values()),v=w.next();!v.done;v=w.next())r=v.value,r.minTimestamp<q?(shaka.log.v1("Offset applied to",r.stream.type),r.stream.presentationTimeOffset=-t,r.segmentIndex.offset(t)):shaka.log.v1("Offset NOT applied to",r.stream.type)}else for(b.presentationTimeline_.setDuration(l),b.presentationTimeline_.offset(-g),w=$jscomp.makeIterator(b.uriToStreamInfosMap_.values()),v=w.next();!v.done;v=w.next())u=v.value,u.stream.presentationTimeOffset=
639
+ t,"to compensate for rollover"),v=$jscomp.makeIterator(b.uriToStreamInfosMap_.values()),w=v.next();!w.done;w=v.next())r=w.value,r.minTimestamp<q?(shaka.log.v1("Offset applied to",r.stream.type),r.stream.presentationTimeOffset=-t,r.segmentIndex.offset(t)):shaka.log.v1("Offset NOT applied to",r.stream.type)}else for(b.presentationTimeline_.setDuration(l),b.presentationTimeline_.offset(-g),v=$jscomp.makeIterator(b.uriToStreamInfosMap_.values()),w=v.next();!w.done;w=v.next())u=w.value,u.stream.presentationTimeOffset=
631
640
  g,u.segmentIndex.offset(-g),u.segmentIndex.fit(l);b.manifest_={presentationTimeline:b.presentationTimeline_,periods:[f],offlineSessionIds:[],minBufferTime:0};d.jumpToEnd()}})})};
632
- shaka.hls.HlsParser.prototype.createPeriod_=function(a){var b=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function d(){var e,f,g,h,k,l,m,n,p,q,t,r;return $jscomp.generator.createGenerator(d,function(d){switch(d.nextAddress){case 1:return e=shaka.hls.Utils,f=shaka.util.Functional,g=a.tags,h=e.filterTagsByName(a.tags,"EXT-X-MEDIA"),k=h.filter(function(a){return"SUBTITLES"==shaka.hls.HlsParser.getRequiredAttributeValue_(a,"TYPE")}.bind(b)),l=k.map(function(b){return this.createTextStream_(b,
633
- a)}.bind(b)),m=h.filter(function(a){return"CLOSED-CAPTIONS"==shaka.hls.HlsParser.getRequiredAttributeValue_(a,"TYPE")}),b.parseClosedCaptions_(m),d.yield(Promise.all(l),2);case 2:return n=d.yieldResult,p=e.filterTagsByName(g,"EXT-X-STREAM-INF"),q=p.map(function(b){return this.createVariantsForTag_(b,a)}.bind(b)),d.yield(Promise.all(q),3);case 3:return t=d.yieldResult,r=t.reduce(f.collapseArrays,[]),r=r.filter(function(a){return null!=a}),d["return"]({startTime:0,variants:r,textStreams:n})}})})};
634
- shaka.hls.HlsParser.prototype.createVariantsForTag_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var f,g,h,k,l,m,n,p,q,t,r,u,w,x,v,B,D,E,y,A,z,F,C,G,H,I,J;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:goog.asserts.assert("EXT-X-STREAM-INF"==a.name,"Should only be called on variant tags!");f=shaka.util.ManifestParserUtils.ContentType;g=shaka.hls.Utils;h=a.getAttributeValue("CODECS","avc1.42E01E,mp4a.40.2");k=shaka.hls.HlsParser.filterDuplicateCodecs_(h.split(/\s*,\s*/));
635
- l=a.getAttribute("RESOLUTION");n=m=null;p=a.getAttributeValue("FRAME-RATE");q=Number(shaka.hls.HlsParser.getRequiredAttributeValue_(a,"BANDWIDTH"));l&&(t=l.value.split("x"),m=t[0],n=t[1]);r=g.filterTagsByName(b.tags,"EXT-X-MEDIA");r=r.filter(function(a){return"CLOSED-CAPTIONS"!=shaka.hls.HlsParser.getRequiredAttributeValue_(a,"TYPE")});r=r.filter(function(a){var b=a.getAttributeValue("URI")||"";return"SUBTITLES"==(a.getAttributeValue("TYPE")||"")||""!=b});u=a.getAttributeValue("AUDIO");w=a.getAttributeValue("VIDEO");
636
- goog.asserts.assert(null==u||null==w,"Unexpected: both video and audio described by media tags!");u?r=g.findMediaTags(r,"AUDIO",u):w&&(r=g.findMediaTags(r,"VIDEO",w));if(x=c.guessCodecsSafe_(f.TEXT,k)){if(v=a.getAttributeValue("SUBTITLES"))B=g.findMediaTags(r,"SUBTITLES",v),goog.asserts.assert(1==B.length,"Exactly one text tag expected!"),B.length&&(D=c.mediaTagsToStreamInfosMap_.get(B[0].id),D.stream.codecs=x);shaka.util.ArrayUtils.remove(k,x)}E=r.map(function(a){return this.createStreamInfoFromMediaTag_(a,
637
- k)}.bind(c));y=[];A=[];return e.yield(Promise.all(E),2);case 2:F=e.yieldResult;F=F.filter(function(a){return null!=a});u?y=F:w&&(A=F);shaka.log.debug("Guessing stream type for",a.toString());G=!1;y.length||A.length?y.length?(I=shaka.hls.HlsParser.getRequiredAttributeValue_(a,"URI"),J=y[0].verbatimMediaPlaylistUri,I==J?(shaka.log.debug("Guessing audio-only."),C=f.AUDIO,G=!0):(shaka.log.debug("Guessing video."),C=f.VIDEO)):(goog.asserts.assert(A.length,"No video streams! This should have been handled already!"),
638
- shaka.log.debug("Guessing audio."),C=f.AUDIO):1==k.length?(H=c.guessCodecsSafe_(f.VIDEO,k),l||p||H?(shaka.log.debug("Guessing video-only."),C=f.VIDEO):(shaka.log.debug("Guessing audio-only."),C=f.AUDIO)):(shaka.log.debug("Guessing multiplexed audio+video."),C=f.VIDEO,k=[k.join(",")]);goog.asserts.assert(C,"Type should have been set by now!");if(G){e.jumpTo(3);break}return e.yield(c.createStreamInfoFromVariantTag_(a,k,C),4);case 4:z=e.yieldResult;case 3:if(z)z.stream.type==f.AUDIO?y=[z]:A=[z];else if(null===
639
- z)return shaka.log.debug("streamInfo is null"),e["return"]([]);goog.asserts.assert(A.length||y.length,"We should have created a stream!");A&&c.filterLegacyCodecs_(A);y&&c.filterLegacyCodecs_(y);return e["return"](c.createVariants_(y,A,q,m,n,p))}})})};shaka.hls.HlsParser.prototype.filterLegacyCodecs_=function(a){a.forEach(function(a){var b=a.stream.codecs.split(",");b=b.filter(function(a){return"mp4a.40.34"!=a});a.stream.codecs=b.join(",")})};
641
+ shaka.hls.HlsParser.prototype.createPeriod_=function(a){var b=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function d(){var e,f,g,h,k,l,m,n,p,q,t,r;return $jscomp.generator.createGenerator(d,function(d){switch(d.nextAddress){case 1:return e=shaka.hls.Utils,f=shaka.util.Functional,g=a.tags,h=e.filterTagsByName(a.tags,"EXT-X-MEDIA"),k=h.filter(function(a){return"SUBTITLES"==shaka.hls.HlsParser.getRequiredAttributeValue_(a,"TYPE")}.bind(b)),l=k.map(function(b){var d=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function z(){var e;
642
+ return $jscomp.generator.createGenerator(z,function(f){switch(f.nextAddress){case 1:return f.setCatchFinallyBlocks(2),f.yield(d.createTextStream_(b,a),4);case 4:return f["return"](f.yieldResult);case 2:e=f.enterCatchBlock();if(d.config_.hls.ignoreTextStreamFailures)return f["return"](null);throw e;}})})}.bind(b)),m=h.filter(function(a){return"CLOSED-CAPTIONS"==shaka.hls.HlsParser.getRequiredAttributeValue_(a,"TYPE")}),b.parseClosedCaptions_(m),d.yield(Promise.all(l),2);case 2:return n=d.yieldResult,
643
+ p=e.filterTagsByName(g,"EXT-X-STREAM-INF"),q=p.map(function(b){return this.createVariantsForTag_(b,a)}.bind(b)),d.yield(Promise.all(q),3);case 3:return t=d.yieldResult,r=t.reduce(f.collapseArrays,[]),r=r.filter(function(a){return null!=a}),d["return"]({startTime:0,variants:r,textStreams:n.filter(function(a){return null!=a})})}})})};
644
+ shaka.hls.HlsParser.prototype.createVariantsForTag_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var f,g,h,k,l,m,n,p,q,t,r,u,v,x,w,z,D,E,y,B,A,F,C,G,H,I,J;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:goog.asserts.assert("EXT-X-STREAM-INF"==a.name,"Should only be called on variant tags!");f=shaka.util.ManifestParserUtils.ContentType;g=shaka.hls.Utils;h=a.getAttributeValue("CODECS","avc1.42E01E,mp4a.40.2");k=shaka.hls.HlsParser.filterDuplicateCodecs_(h.split(/\s*,\s*/));
645
+ l=a.getAttribute("RESOLUTION");n=m=null;p=a.getAttributeValue("FRAME-RATE");q=Number(shaka.hls.HlsParser.getRequiredAttributeValue_(a,"BANDWIDTH"));l&&(t=l.value.split("x"),m=t[0],n=t[1]);r=g.filterTagsByName(b.tags,"EXT-X-MEDIA");r=r.filter(function(a){return"CLOSED-CAPTIONS"!=shaka.hls.HlsParser.getRequiredAttributeValue_(a,"TYPE")});r=r.filter(function(a){var b=a.getAttributeValue("URI")||"";return"SUBTITLES"==(a.getAttributeValue("TYPE")||"")||""!=b});u=a.getAttributeValue("AUDIO");v=a.getAttributeValue("VIDEO");
646
+ goog.asserts.assert(null==u||null==v,"Unexpected: both video and audio described by media tags!");u?r=g.findMediaTags(r,"AUDIO",u):v&&(r=g.findMediaTags(r,"VIDEO",v));if(x=c.guessCodecsSafe_(f.TEXT,k)){if(w=a.getAttributeValue("SUBTITLES"))if(z=g.findMediaTags(r,"SUBTITLES",w),goog.asserts.assert(1==z.length,"Exactly one text tag expected!"),z.length&&(D=c.mediaTagsToStreamInfosMap_.get(z[0].id)))D.stream.codecs=x;shaka.util.ArrayUtils.remove(k,x)}E=r.map(function(a){return this.createStreamInfoFromMediaTag_(a,
647
+ k)}.bind(c));y=[];B=[];return e.yield(Promise.all(E),2);case 2:F=e.yieldResult;F=F.filter(function(a){return null!=a});u?y=F:v&&(B=F);shaka.log.debug("Guessing stream type for",a.toString());G=!1;y.length||B.length?y.length?(I=shaka.hls.HlsParser.getRequiredAttributeValue_(a,"URI"),J=y[0].verbatimMediaPlaylistUri,I==J?(shaka.log.debug("Guessing audio-only."),C=f.AUDIO,G=!0):(shaka.log.debug("Guessing video."),C=f.VIDEO)):(goog.asserts.assert(B.length,"No video streams! This should have been handled already!"),
648
+ shaka.log.debug("Guessing audio."),C=f.AUDIO):1==k.length?(H=c.guessCodecsSafe_(f.VIDEO,k),l||p||H?(shaka.log.debug("Guessing video-only."),C=f.VIDEO):(shaka.log.debug("Guessing audio-only."),C=f.AUDIO)):(shaka.log.debug("Guessing multiplexed audio+video."),C=f.VIDEO,k=[k.join(",")]);goog.asserts.assert(C,"Type should have been set by now!");if(G){e.jumpTo(3);break}return e.yield(c.createStreamInfoFromVariantTag_(a,k,C),4);case 4:A=e.yieldResult;case 3:if(A)A.stream.type==f.AUDIO?y=[A]:B=[A];else if(null===
649
+ A)return shaka.log.debug("streamInfo is null"),e["return"]([]);goog.asserts.assert(B.length||y.length,"We should have created a stream!");B&&c.filterLegacyCodecs_(B);y&&c.filterLegacyCodecs_(y);return e["return"](c.createVariants_(y,B,q,m,n,p))}})})};shaka.hls.HlsParser.prototype.filterLegacyCodecs_=function(a){a.forEach(function(a){var b=a.stream.codecs.split(",");b=b.filter(function(a){return"mp4a.40.34"!=a});a.stream.codecs=b.join(",")})};
640
650
  shaka.hls.HlsParser.prototype.createVariants_=function(a,b,c,d,e,f){var g=shaka.media.DrmEngine;b.forEach(function(a){this.addVideoAttributes_(a.stream,d,e,f)}.bind(this));a.length||(a=[null]);b.length||(b=[null]);var h=[];a=$jscomp.makeIterator(a);for(var k=a.next();!k.done;k=a.next()){k=k.value;for(var l=$jscomp.makeIterator(b),m=l.next();!m.done;m=l.next()){var n=m.value;m=k?k.stream:null;var p=n?n.stream:null,q=k?k.drmInfos:null,t=n?n.drmInfos:null;n=(n?n.verbatimMediaPlaylistUri:"")+" - "+(k?
641
651
  k.verbatimMediaPlaylistUri:"");var r=void 0;if(m&&p)if(g.areDrmCompatible(q,t))r=g.getCommonDrmInfos(q,t);else{shaka.log.warning("Incompatible DRM info in HLS variant. Skipping.");continue}else m?r=q:p&&(r=t);this.variantUriSet_.has(n)?shaka.log.debug("Skipping variant which only differs in text streams."):(m=this.createVariant_(m,p,c,r),h.push(m),this.variantUriSet_.add(n))}}return h};
642
652
  shaka.hls.HlsParser.prototype.createVariant_=function(a,b,c,d){var e=shaka.util.ManifestParserUtils.ContentType;goog.asserts.assert(!a||a.type==e.AUDIO,"Audio parameter mismatch!");goog.asserts.assert(!b||b.type==e.VIDEO,"Video parameter mismatch!");return{id:this.globalId_++,language:a?a.language:"und",primary:!!a&&a.primary||!!b&&b.primary,audio:a,video:b,bandwidth:c,drmInfos:d,allowedByApplication:!0,allowedByKeySystem:!0}};
@@ -644,16 +654,16 @@ shaka.hls.HlsParser.prototype.createTextStream_=function(a,b){var c=this;return
644
654
  []),2);case 2:return g=e.yieldResult,goog.asserts.assert(g,"Should always have a streamInfo for text"),e["return"](g.stream)}})})};
645
655
  shaka.hls.HlsParser.prototype.parseClosedCaptions_=function(a){a=$jscomp.makeIterator(a);for(var b=a.next();!b.done;b=a.next()){b=b.value;goog.asserts.assert("EXT-X-MEDIA"==b.name,"Should only be called on media tags!");var c=shaka.hls.HlsParser.getRequiredAttributeValue_(b,"TYPE");goog.asserts.assert("CLOSED-CAPTIONS"==c,'Should only be called on tags with TYPE="CLOSED-CAPTIONS"!');c=shaka.util.LanguageUtils;var d=b.getAttributeValue("LANGUAGE")||"und";c=c.normalize(d);d=shaka.hls.HlsParser.getRequiredAttributeValue_(b,
646
656
  "GROUP-ID");b=shaka.hls.HlsParser.getRequiredAttributeValue_(b,"INSTREAM-ID");this.groupIdToClosedCaptionsMap_.get(d)||this.groupIdToClosedCaptionsMap_.set(d,new Map);this.groupIdToClosedCaptionsMap_.get(d).set(b,c)}};
647
- shaka.hls.HlsParser.prototype.createStreamInfoFromMediaTag_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var f,g,h,k,l,m,n,p,q,t,r,u,w;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:goog.asserts.assert("EXT-X-MEDIA"==a.name,"Should only be called on media tags!");f=shaka.hls.HlsParser;g=f.getRequiredAttributeValue_(a,"URI");if(c.uriToStreamInfosMap_.has(g))return e["return"](c.uriToStreamInfosMap_.get(g));h=f.getRequiredAttributeValue_(a,
648
- "TYPE").toLowerCase();k=shaka.util.ManifestParserUtils.ContentType;"subtitles"==h&&(h=k.TEXT);l=shaka.util.LanguageUtils;m=l.normalize(a.getAttributeValue("LANGUAGE","und"));n=a.getAttributeValue("NAME");p=a.getAttribute("DEFAULT");q=a.getAttribute("AUTOSELECT");t=a.getAttributeValue("CHANNELS");r="audio"==h?c.getChannelCount_(t):null;u=!!p||!!q;return e.yield(c.createStreamInfo_(g,b,h,m,u,n,r,null),2);case 2:w=e.yieldResult;if(null==w)return e["return"](null);if(c.uriToStreamInfosMap_.has(g))return e["return"](c.uriToStreamInfosMap_.get(g));
649
- c.mediaTagsToStreamInfosMap_.set(a.id,w);c.uriToStreamInfosMap_.set(g,w);return e["return"](w)}})})};shaka.hls.HlsParser.prototype.getChannelCount_=function(a){if(!a)return null;a=a.split("/")[0];return parseInt(a,10)};
657
+ shaka.hls.HlsParser.prototype.createStreamInfoFromMediaTag_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var f,g,h,k,l,m,n,p,q,t,r,u,v;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:goog.asserts.assert("EXT-X-MEDIA"==a.name,"Should only be called on media tags!");f=shaka.hls.HlsParser;g=f.getRequiredAttributeValue_(a,"URI");if(c.uriToStreamInfosMap_.has(g))return e["return"](c.uriToStreamInfosMap_.get(g));h=f.getRequiredAttributeValue_(a,
658
+ "TYPE").toLowerCase();k=shaka.util.ManifestParserUtils.ContentType;"subtitles"==h&&(h=k.TEXT);l=shaka.util.LanguageUtils;m=l.normalize(a.getAttributeValue("LANGUAGE","und"));n=a.getAttributeValue("NAME");p=a.getAttribute("DEFAULT");q=a.getAttribute("AUTOSELECT");t=a.getAttributeValue("CHANNELS");r="audio"==h?c.getChannelCount_(t):null;u=!!p||!!q;return e.yield(c.createStreamInfo_(g,b,h,m,u,n,r,null),2);case 2:v=e.yieldResult;if(null==v)return e["return"](null);if(c.uriToStreamInfosMap_.has(g))return e["return"](c.uriToStreamInfosMap_.get(g));
659
+ c.mediaTagsToStreamInfosMap_.set(a.id,v);c.uriToStreamInfosMap_.set(g,v);return e["return"](v)}})})};shaka.hls.HlsParser.prototype.getChannelCount_=function(a){if(!a)return null;a=a.split("/")[0];return parseInt(a,10)};
650
660
  shaka.hls.HlsParser.prototype.createStreamInfoFromVariantTag_=function(a,b,c){var d=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function f(){var g,h,k,l,m,n;return $jscomp.generator.createGenerator(f,function(f){switch(f.nextAddress){case 1:goog.asserts.assert("EXT-X-STREAM-INF"==a.name,"Should only be called on media tags!");g=shaka.util.ManifestParserUtils.ContentType;h=shaka.hls.HlsParser;k=h.getRequiredAttributeValue_(a,"URI");if(d.uriToStreamInfosMap_.has(k))return f["return"](d.uriToStreamInfosMap_.get(k));
651
661
  l=a.getAttributeValue("CLOSED-CAPTIONS");m=null;c==g.VIDEO&&l&&"NONE"!=l&&(m=d.groupIdToClosedCaptionsMap_.get(l));return f.yield(d.createStreamInfo_(k,b,c,"und",!1,null,null,m),2);case 2:n=f.yieldResult;if(null==n)return f["return"](null);if(d.uriToStreamInfosMap_.has(k))return f["return"](d.uriToStreamInfosMap_.get(k));d.uriToStreamInfosMap_.set(k,n);return f["return"](n)}})})};
652
- shaka.hls.HlsParser.prototype.createStreamInfo_=function(a,b,c,d,e,f,g,h){var k=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function m(){var n,p,q,t,r,u,w,x,v,B,D,E,y,A,z,F,C,G,H,I,J,N,K,O,L,P;return $jscomp.generator.createGenerator(m,function(m){switch(m.nextAddress){case 1:return n=shaka.hls.Utils,p=n.constructAbsoluteUri(k.masterPlaylistUri_,a),t="",m.yield(k.requestManifest_(p),2);case 2:u=m.yieldResult;p=u.uri;q=k.manifestTextParser_.parsePlaylist(u.data,p);if(q.type!=shaka.hls.PlaylistType.MEDIA)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
653
- shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_INVALID_PLAYLIST_HIERARCHY);w=[];q.segments.forEach(function(a){a=n.filterTagsByName(a.tags,"EXT-X-KEY");w.push.apply(w,a)});x=!1;v=[];B=null;for(var Q=$jscomp.makeIterator(w),M=Q.next();!M.done;M=Q.next())if(D=M.value,E=shaka.hls.HlsParser.getRequiredAttributeValue_(D,"METHOD"),"NONE"!=E){x=!0;if("AES-128"==E)return shaka.log.warning("Unsupported HLS Encryption",E),k.aesEncrypted_=!0,m["return"](null);y=shaka.hls.HlsParser.getRequiredAttributeValue_(D,
654
- "KEYFORMAT");(z=(A=shaka.hls.HlsParser.KEYFORMATS_TO_DRM_PARSERS_[y])?A(D):null)?(z.keyIds.length&&(B=z.keyIds[0]),v.push(z)):shaka.log.warning("Unsupported HLS KEYFORMAT",y)}if(x&&!v.length)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_KEYFORMATS_NOT_SUPPORTED);goog.asserts.assert(null!=q.segments,"Media playlist should have segments!");k.determinePresentationType_(q);t=k.guessCodecs_(c,b);return m.yield(k.guessMimeType_(c,
662
+ shaka.hls.HlsParser.prototype.createStreamInfo_=function(a,b,c,d,e,f,g,h){var k=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function m(){var n,p,q,t,r,u,v,x,w,z,D,E,y,B,A,F,C,G,H,I,J,N,K,O,L,P;return $jscomp.generator.createGenerator(m,function(m){switch(m.nextAddress){case 1:return n=shaka.hls.Utils,p=n.constructAbsoluteUri(k.masterPlaylistUri_,a),t="",m.yield(k.requestManifest_(p),2);case 2:u=m.yieldResult;p=u.uri;q=k.manifestTextParser_.parsePlaylist(u.data,p);if(q.type!=shaka.hls.PlaylistType.MEDIA)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
663
+ shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_INVALID_PLAYLIST_HIERARCHY);v=[];q.segments.forEach(function(a){a=n.filterTagsByName(a.tags,"EXT-X-KEY");v.push.apply(v,a)});x=!1;w=[];z=null;for(var Q=$jscomp.makeIterator(v),M=Q.next();!M.done;M=Q.next())if(D=M.value,E=shaka.hls.HlsParser.getRequiredAttributeValue_(D,"METHOD"),"NONE"!=E){x=!0;if("AES-128"==E)return shaka.log.warning("Unsupported HLS Encryption",E),k.aesEncrypted_=!0,m["return"](null);y=shaka.hls.HlsParser.getRequiredAttributeValue_(D,
664
+ "KEYFORMAT");(A=(B=shaka.hls.HlsParser.KEYFORMATS_TO_DRM_PARSERS_[y])?B(D):null)?(A.keyIds.length&&(z=A.keyIds[0]),w.push(A)):shaka.log.warning("Unsupported HLS KEYFORMAT",y)}if(x&&!w.length)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_KEYFORMATS_NOT_SUPPORTED);goog.asserts.assert(null!=q.segments,"Media playlist should have segments!");k.determinePresentationType_(q);t=k.guessCodecs_(c,b);return m.yield(k.guessMimeType_(c,
655
665
  t,q),3);case 3:return r=F=m.yieldResult,G=(C=n.getFirstTagWithName(q.tags,"EXT-X-MEDIA-SEQUENCE"))?Number(C.value):0,m.yield(k.createSegments_(a,q,G,r,t),4);case 4:return H=m.yieldResult,I=H[0].startTime,J=H[H.length-1].endTime,N=J-I,K=new shaka.media.SegmentIndex(H),O=k.createInitSegmentReference_(q),L=void 0,c==shaka.util.ManifestParserUtils.ContentType.TEXT&&(L=shaka.util.ManifestParserUtils.TextStreamKind.SUBTITLE),P={id:k.globalId_++,originalId:f,createSegmentIndex:Promise.resolve.bind(Promise),
656
- findSegmentPosition:K.find.bind(K),getSegmentReference:K.get.bind(K),initSegmentReference:O,presentationTimeOffset:0,mimeType:r,codecs:t,kind:L,encrypted:x,keyId:B,language:d,label:f,type:c,primary:e,trickModeVideo:null,emsgSchemeIdUris:null,frameRate:void 0,width:void 0,height:void 0,bandwidth:void 0,roles:[],channelsCount:g,closedCaptions:h},m["return"]({stream:P,segmentIndex:K,drmInfos:v,verbatimMediaPlaylistUri:a,absoluteMediaPlaylistUri:p,minTimestamp:I,maxTimestamp:J,duration:N})}})})};
666
+ findSegmentPosition:K.find.bind(K),getSegmentReference:K.get.bind(K),initSegmentReference:O,presentationTimeOffset:0,mimeType:r,codecs:t,kind:L,encrypted:x,keyId:z,language:d,label:f,type:c,primary:e,trickModeVideo:null,emsgSchemeIdUris:null,frameRate:void 0,width:void 0,height:void 0,bandwidth:void 0,roles:[],channelsCount:g,closedCaptions:h},m["return"]({stream:P,segmentIndex:K,drmInfos:w,verbatimMediaPlaylistUri:a,absoluteMediaPlaylistUri:p,minTimestamp:I,maxTimestamp:J,duration:N})}})})};
657
667
  shaka.hls.HlsParser.prototype.determinePresentationType_=function(a){var b=shaka.hls.Utils,c=shaka.hls.HlsParser.PresentationType_,d=b.getFirstTagWithName(a.tags,"EXT-X-PLAYLIST-TYPE");b=b.getFirstTagWithName(a.tags,"EXT-X-ENDLIST");b=d&&"VOD"==d.value||b;d=d&&"EVENT"==d.value&&!b;d=!b&&!d;b?this.setPresentationType_(c.VOD):(d?this.setPresentationType_(c.LIVE):this.setPresentationType_(c.EVENT),a=this.getRequiredTag_(a.tags,"EXT-X-TARGETDURATION"),a=Number(a.value),this.maxTargetDuration_=Math.max(a,
658
668
  this.maxTargetDuration_),this.minTargetDuration_=Math.min(a,this.minTargetDuration_))};
659
669
  shaka.hls.HlsParser.prototype.createPresentationTimeline_=function(a){this.isLive_()?(this.presentationTimeline_=new shaka.media.PresentationTimeline(0,3*this.maxTargetDuration_),this.presentationTimeline_.setStatic(!1)):(this.presentationTimeline_=new shaka.media.PresentationTimeline(null,0),this.presentationTimeline_.setStatic(!0));this.notifySegments_();goog.asserts.assert(!this.presentationTimeline_.usingPresentationStartTime(),"We should not be using the presentation start time in HLS!")};
@@ -661,16 +671,17 @@ shaka.hls.HlsParser.prototype.createInitSegmentReference_=function(a){var b=shak
661
671
  c=Number(a[0]),a=Number(a[1]),b=a+c-1;return new shaka.media.InitSegmentReference(function(){return[e]},a,b)};
662
672
  shaka.hls.HlsParser.prototype.createSegmentReference_=function(a,b,c,d,e){a=shaka.hls.Utils;var f=c.tags,g=c.absoluteUri;c=this.getRequiredTag_(f,"EXTINF").value.split(",");c=e+Number(c[0]);var h=0,k=null;if(a=a.getFirstTagWithName(f,"EXT-X-BYTERANGE"))f=a.value.split("@"),a=Number(f[0]),f[1]?h=Number(f[1]):(goog.asserts.assert(b,"Cannot refer back to previous HLS segment!"),h=b.endByte+1),k=h+a-1;return new shaka.media.SegmentReference(d,e,c,function(){return[g]},h,k)};
663
673
  shaka.hls.HlsParser.prototype.notifySegments_=function(){var a=this;this.presentationTimeline_&&(this.segmentsToNotifyByStream_.forEach(function(b){a.presentationTimeline_.notifySegments(b,0)}),this.segmentsToNotifyByStream_=[])};
664
- shaka.hls.HlsParser.prototype.createSegments_=function(a,b,c,d,e){var f=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function h(){var k,l,m,n,p,q,t,r,u,w,x;return $jscomp.generator.createGenerator(h,function(h){switch(h.nextAddress){case 1:return k=b.segments,l=[],goog.asserts.assert(k.length,"Playlist should have segments!"),m=k[0].absoluteUri,n=f.createSegmentReference_(b,null,k[0],c,0),p=f.createInitSegmentReference_(b),h.yield(f.getStartTime_(a,p,n,d,e),2);case 2:q=h.yieldResult;shaka.log.debug("First segment",
665
- m.split("/").pop(),"starts at",q);for(var v=0;v<k.length;++v)t=k[v],r=l[l.length-1],u=0==v?q:r.endTime,w=c+v,x=f.createSegmentReference_(b,r,t,w,u),l.push(x);f.segmentsToNotifyByStream_.push(l);f.notifySegments_();return h["return"](l)}})})};
674
+ shaka.hls.HlsParser.prototype.createSegments_=function(a,b,c,d,e){var f=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function h(){var k,l,m,n,p,q,t,r,u,v,x;return $jscomp.generator.createGenerator(h,function(h){switch(h.nextAddress){case 1:return k=b.segments,l=[],goog.asserts.assert(k.length,"Playlist should have segments!"),m=k[0].absoluteUri,n=f.createSegmentReference_(b,null,k[0],c,0),p=f.createInitSegmentReference_(b),h.yield(f.getStartTime_(a,p,n,d,e),2);case 2:q=h.yieldResult;shaka.log.debug("First segment",
675
+ m.split("/").pop(),"starts at",q);for(var w=0;w<k.length;++w)t=k[w],r=l[l.length-1],u=0==w?q:r.endTime,v=c+w,x=f.createSegmentReference_(b,r,t,v,u),l.push(x);f.segmentsToNotifyByStream_.push(l);f.notifySegments_();return h["return"](l)}})})};
666
676
  shaka.hls.HlsParser.prototype.fetchPartialSegment_=function(a){var b=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function d(){var e,f,g,h,k,l;return $jscomp.generator.createGenerator(d,function(d){switch(d.nextAddress){case 1:return e=shaka.net.NetworkingEngine.RequestType,f=shaka.util.Networking.createSegmentRequest(a.getUris(),a.startByte,a.startByte+shaka.hls.HlsParser.PARTIAL_SEGMENT_SIZE_-1,b.config_.retryParameters),g=shaka.util.Networking.createSegmentRequest(a.getUris(),a.startByte,
667
677
  a.endByte,b.config_.retryParameters),d.setCatchFinallyBlocks(2),d.yield(b.makeNetworkRequest_(f,e.SEGMENT),4);case 4:return h=d.yieldResult,d["return"](h);case 2:k=d.enterCatchBlock();if(k.code==shaka.util.Error.Code.OPERATION_ABORTED)throw k;shaka.log.alwaysWarn("Unable to fetch a partial HLS segment! Falling back to a full segment request, which is expensive! Your server should support Range requests and CORS preflights.",f.uris[0]);return d.yield(b.makeNetworkRequest_(g,e.SEGMENT),5);case 5:return l=
668
678
  d.yieldResult,d["return"](l)}})})};
669
679
  shaka.hls.HlsParser.prototype.getStartTime_=function(a,b,c,d,e){var f=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function h(){var k,l,m,n,p,q,t,r,u;return $jscomp.generator.createGenerator(h,function(h){switch(h.nextAddress){case 1:if(f.manifest_){k=f.uriToStreamInfosMap_.get(a);l=k.segmentIndex;if(m=l.get(c.position))return shaka.log.v1("Found segment start time in previous manifest"),h["return"](m.startTime);shaka.log.debug("Unable to find segment start time in previous manifest!")}shaka.log.v1("Fetching segment to find start time");if("audio/mpeg"==
670
680
  d)return h["return"](0);if("video/mp4"!=d&&"audio/mp4"!=d){h.jumpTo(2);break}n=[f.fetchPartialSegment_(c)];b&&n.push(f.fetchPartialSegment_(b));return h.yield(Promise.all(n),3);case 3:return p=h.yieldResult,q=p[0],t=p[1]||p[0],h["return"](f.getStartTimeFromMp4Segment_(q.data,t.data));case 2:if("video/mp2t"!=d){h.jumpTo(4);break}return h.yield(f.fetchPartialSegment_(c),5);case 5:return r=h.yieldResult,goog.asserts.assert(r.data,"Should have a response body!"),h["return"](f.getStartTimeFromTsSegment_(r.data));
671
- case 4:if("application/mp4"!=d&&!d.startsWith("text/")){h.jumpTo(6);break}return h.yield(f.fetchPartialSegment_(c),7);case 7:return u=h.yieldResult,goog.asserts.assert(u.data,"Should have a response body!"),h["return"](f.getStartTimeFromTextSegment_(d,e,u.data));case 6:throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);}})})};
672
- shaka.hls.HlsParser.prototype.getStartTimeFromMp4Segment_=function(a,b){var c=shaka.util.Mp4Parser,d=0;(new c).box("moov",c.children).box("trak",c.children).box("mdia",c.children).fullBox("mdhd",function(a){goog.asserts.assert(0==a.version||1==a.version,"MDHD version can only be 0 or 1");a.reader.skip(0==a.version?8:16);d=a.reader.readUint32();a.parser.stop()}).parse(b,!0);if(!d)throw shaka.log.error("Unable to find timescale in init segment!"),new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
673
- shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);var e=0,f=!1;(new c).box("moof",c.children).box("traf",c.children).fullBox("tfdt",function(a){goog.asserts.assert(0==a.version||1==a.version,"TFDT version can only be 0 or 1");e=(0==a.version?a.reader.readUint32():a.reader.readUint64())/d;f=!0;a.parser.stop()}).parse(a,!0);if(!f)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);
681
+ case 4:if("application/mp4"!=d&&!d.startsWith("text/")){h.jumpTo(6);break}return h.yield(f.fetchPartialSegment_(c),7);case 7:return u=h.yieldResult,goog.asserts.assert(u.data,"Should have a response body!"),h["return"](f.getStartTimeFromTextSegment_(d,e,u.data));case 6:if("video/webm"==d)return shaka.log.warning("Hls+WebM combination is not supported at the moment. Skipping."),h["return"](null);throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);
682
+ }})})};
683
+ shaka.hls.HlsParser.prototype.getStartTimeFromMp4Segment_=function(a,b){var c=shaka.util.Mp4Parser,d=0;(new c).box("moov",c.children).box("trak",c.children).box("mdia",c.children).fullBox("mdhd",function(a){goog.asserts.assert(0==a.version||1==a.version,"MDHD version can only be 0 or 1");a.reader.skip(0==a.version?8:16);d=a.reader.readUint32();a.parser.stop()}).parse(b,!0);if(!d)throw shaka.log.error("Unable to find timescale in init segment!"),new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,
684
+ shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);var e=0,f=!1;(new c).box("moof",c.children).box("traf",c.children).fullBox("tfdt",function(a){goog.asserts.assert(0==a.version||1==a.version,"TFDT version can only be 0 or 1");e=(0==a.version?a.reader.readUint32():a.reader.readUint64())/d;f=!0;a.parser.stop()}).parse(a,!0);if(!f)throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);
674
685
  return e};
675
686
  shaka.hls.HlsParser.prototype.getStartTimeFromTsSegment_=function(a){a=new shaka.util.DataViewReader(new DataView(a),shaka.util.DataViewReader.Endianness.BIG_ENDIAN);for(var b=function(){throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME);},c=0,d=0;;)if(c=a.getPosition(),d=a.readUint8(),71!=d&&b(),a.readUint16()&16384||b(),d=(a.readUint8()&48)>>4,0!=d&&2!=d||b(),3==d&&(d=a.readUint8(),a.skip(d)),
676
687
  1!=a.readUint32()>>8)a.seek(c+188),d=a.readUint8(),71!=d&&(a.seek(c+192),d=a.readUint8()),71!=d&&(a.seek(c+204),d=a.readUint8()),71!=d&&b(),a.rewind(1);else return a.skip(3),c=a.readUint8()>>6,0!=c&&1!=c||b(),d=a.readUint8(),0==d&&b(),2==c?goog.asserts.assert(5==d,"Bad PES header?"):3==c&&goog.asserts.assert(10==d,"Bad PES header?"),b=a.readUint8(),c=a.readUint16(),a=a.readUint16(),(1073741824*((b&14)>>1)+((c&65534)<<14|(a&65534)>>1))/shaka.hls.HlsParser.TS_TIMESCALE_};
@@ -714,13 +725,14 @@ e):shaka.log.info("Jumping forward",f,"seconds because of gap starting at",c.end
714
725
  shaka.media.PlayheadObserverManager.prototype.manage=function(a){this.observers_.add(a)};shaka.media.PlayheadObserverManager.prototype.notifyOfSeek=function(){this.pollAllObservers_(!0)};shaka.media.PlayheadObserverManager.prototype.pollAllObservers_=function(a){for(var b=$jscomp.makeIterator(this.observers_),c=b.next();!c.done;c=b.next())c.value.poll(this.mediaElement_.currentTime,a)};shaka.util.Periods=function(){};shaka.util.Periods.getAllVariantsFrom=function(a){var b=[];a=$jscomp.makeIterator(a);for(var c=a.next();!c.done;c=a.next()){c=$jscomp.makeIterator(c.value.variants);for(var d=c.next();!d.done;d=c.next())b.push(d.value)}return b};shaka.util.Periods.findPeriodForTime=function(a,b){for(var c=null,d=$jscomp.makeIterator(a),e=d.next();!e.done;e=d.next())e=e.value,b>=e.startTime&&(c=e);return c};shaka.media.PeriodObserver=function(a){this.manifest_=a;this.currentPeriod_=null;this.onChangedPeriods_=function(a){}};shaka.media.PeriodObserver.prototype.release=function(){this.currentPeriod_=this.manifest_=null;this.onChangedPeriods_=function(a){}};shaka.media.PeriodObserver.prototype.poll=function(a,b){var c=this.currentPeriod_,d=this.findCurrentPeriod_(a);if(c!=d)this.onChangedPeriods_(d);this.currentPeriod_=d};
715
726
  shaka.media.PeriodObserver.prototype.setListeners=function(a){this.onChangedPeriods_=a};shaka.media.PeriodObserver.prototype.findCurrentPeriod_=function(a){var b=this.manifest_.periods;return shaka.util.Periods.findPeriodForTime(b,a)||b[0]};shaka.media.PlayRateController=function(a){var b=this;this.harness_=a;this.isBuffering_=!1;this.rate_=this.harness_.getRate();this.pollRate_=.25;this.timer_=new shaka.util.Timer(function(){b.harness_.movePlayhead(b.rate_*b.pollRate_)})};shaka.media.PlayRateController.prototype.release=function(){this.timer_&&(this.timer_.stop(),this.timer_=null);this.harness_=null};shaka.media.PlayRateController.prototype.setBuffering=function(a){this.isBuffering_=a;this.apply_()};
716
727
  shaka.media.PlayRateController.prototype.set=function(a){goog.asserts.assert(0!=a,"Should never set rate of 0 explicitly!");this.rate_=a;this.apply_()};shaka.media.PlayRateController.prototype.getActiveRate=function(){return this.calculateCurrentRate_()};shaka.media.PlayRateController.prototype.apply_=function(){this.timer_.stop();var a=this.calculateCurrentRate_();if(0<=a)try{this.applyRate_(a);return}catch(b){}this.timer_.tickEvery(this.pollRate_);this.applyRate_(0)};
717
- shaka.media.PlayRateController.prototype.calculateCurrentRate_=function(){return this.isBuffering_?0:this.rate_};shaka.media.PlayRateController.prototype.applyRate_=function(a){var b=this.harness_.getRate();b!=a&&this.harness_.setRate(a);return b!=a};shaka.media.VideoWrapper=function(a,b,c){this.video_=a;this.onSeek_=b;this.startTime_=c;this.eventManager_=new shaka.util.EventManager;this.mover_=new shaka.media.VideoWrapper.PlayheadMover(a,10);0<a.readyState?this.setStartTime_(c):this.delaySetStartTime_(c)};shaka.media.VideoWrapper.prototype.release=function(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null);null!=this.mover_&&(this.mover_.release(),this.mover_=null);this.onSeek_=function(){};this.video_=null};
718
- shaka.media.VideoWrapper.prototype.getTime=function(){return 0<this.video_.readyState?this.video_.currentTime:this.startTime_};shaka.media.VideoWrapper.prototype.setTime=function(a){0<this.video_.readyState?this.mover_.moveTo(a):this.delaySetStartTime_(a)};shaka.media.VideoWrapper.prototype.delaySetStartTime_=function(a){var b=this;this.startTime_=a;this.eventManager_.unlisten(this.video_,"loadedmetadata");this.eventManager_.listenOnce(this.video_,"loadedmetadata",function(){b.setStartTime_(a)})};
728
+ shaka.media.PlayRateController.prototype.calculateCurrentRate_=function(){return this.isBuffering_?0:this.rate_};shaka.media.PlayRateController.prototype.applyRate_=function(a){var b=this.harness_.getRate();b!=a&&this.harness_.setRate(a);return b!=a};shaka.media.VideoWrapper=function(a,b,c){this.video_=a;this.onSeek_=b;this.startTime_=c;this.started_=!1;this.eventManager_=new shaka.util.EventManager;this.mover_=new shaka.media.VideoWrapper.PlayheadMover(a,10);0<a.readyState?this.setStartTime_(c):this.delaySetStartTime_(c)};
729
+ shaka.media.VideoWrapper.prototype.release=function(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null);null!=this.mover_&&(this.mover_.release(),this.mover_=null);this.onSeek_=function(){};this.video_=null};shaka.media.VideoWrapper.prototype.getTime=function(){return this.started_?this.video_.currentTime:this.startTime_};shaka.media.VideoWrapper.prototype.setTime=function(a){0<this.video_.readyState?this.mover_.moveTo(a):this.delaySetStartTime_(a)};
730
+ shaka.media.VideoWrapper.prototype.delaySetStartTime_=function(a){var b=this;this.startTime_=a;this.eventManager_.unlisten(this.video_,"loadedmetadata");this.eventManager_.listenOnce(this.video_,"loadedmetadata",function(){b.setStartTime_(a)})};
719
731
  shaka.media.VideoWrapper.prototype.setStartTime_=function(a){var b=this;.001>Math.abs(this.video_.currentTime-a)?this.startListeningToSeeks_():(this.eventManager_.listenOnce(this.video_,"seeking",function(){b.startListeningToSeeks_()}),this.mover_.moveTo(0==this.video_.currentTime?a:this.video_.currentTime))};
720
- shaka.media.VideoWrapper.prototype.startListeningToSeeks_=function(){var a=this;goog.asserts.assert(0<this.video_.readyState,"The media element should be ready before we listen for seeking.");this.eventManager_.listen(this.video_,"seeking",function(){return a.onSeek_()})};shaka.media.VideoWrapper.PlayheadMover=function(a,b){var c=this;this.mediaElement_=a;this.maxAttempts_=b;this.targetTime_=this.originTime_=this.remainingAttempts_=0;this.timer_=new shaka.util.Timer(function(){return c.onTick_()})};
732
+ shaka.media.VideoWrapper.prototype.startListeningToSeeks_=function(){var a=this;goog.asserts.assert(0<this.video_.readyState,"The media element should be ready before we listen for seeking.");this.started_=!0;this.eventManager_.listen(this.video_,"seeking",function(){return a.onSeek_()})};shaka.media.VideoWrapper.PlayheadMover=function(a,b){var c=this;this.mediaElement_=a;this.maxAttempts_=b;this.targetTime_=this.originTime_=this.remainingAttempts_=0;this.timer_=new shaka.util.Timer(function(){return c.onTick_()})};
721
733
  shaka.media.VideoWrapper.PlayheadMover.prototype.release=function(){this.timer_&&(this.timer_.stop(),this.timer_=null);this.mediaElement_=null};shaka.media.VideoWrapper.PlayheadMover.prototype.moveTo=function(a){this.originTime_=this.mediaElement_.currentTime;this.targetTime_=a;this.remainingAttempts_=this.maxAttempts_;this.mediaElement_.currentTime=a;this.timer_.tickEvery(.1)};
722
734
  shaka.media.VideoWrapper.PlayheadMover.prototype.onTick_=function(){0>=this.remainingAttempts_?(shaka.log.warning(["Failed to move playhead from",this.originTime_,"to",this.targetTime_].join(" ")),this.timer_.stop()):this.mediaElement_.currentTime!=this.originTime_?this.timer_.stop():(this.mediaElement_.currentTime=this.targetTime_,this.remainingAttempts_--)};shaka.media.Playhead=function(){};shaka.media.Playhead.prototype.setStartTime=function(a){};shaka.media.Playhead.prototype.getTime=function(){};shaka.media.Playhead.prototype.notifyOfBufferingChange=function(){};
723
- shaka.media.SrcEqualsPlayhead=function(a){var b=this;this.mediaElement_=a;this.started_=!1;this.startTime_=null;this.eventManager_=new shaka.util.EventManager;a=function(){b.started_=!0;null!=b.startTime_&&(b.mediaElement_.currentTime=b.startTime_)};0==this.mediaElement_.readyState?this.eventManager_.listenOnce(this.mediaElement_,"loadedmetadata",a):a()};
735
+ shaka.media.SrcEqualsPlayhead=function(a){var b=this;this.mediaElement_=a;this.started_=!1;this.startTime_=null;this.eventManager_=new shaka.util.EventManager;a=function(){null==b.startTime_?b.started_=!0:(b.eventManager_.listenOnce(b.mediaElement_,"seeking",function(){b.started_=!0}),b.mediaElement_.currentTime=b.startTime_)};0==this.mediaElement_.readyState?this.eventManager_.listenOnce(this.mediaElement_,"loadedmetadata",a):a()};
724
736
  shaka.media.SrcEqualsPlayhead.prototype.release=function(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null);this.mediaElement_=null};shaka.media.SrcEqualsPlayhead.prototype.setStartTime=function(a){this.startTime_=this.started_?this.startTime_:a};shaka.media.SrcEqualsPlayhead.prototype.getTime=function(){return(this.started_?this.mediaElement_.currentTime:this.startTime_)||0};shaka.media.SrcEqualsPlayhead.prototype.notifyOfBufferingChange=function(){};
725
737
  shaka.media.MediaSourcePlayhead=function(a,b,c,d,e,f){var g=this;this.minSeekRange_=3;this.mediaElement_=a;this.timeline_=b.presentationTimeline;this.minBufferTime_=b.minBufferTime||0;this.config_=c;this.onSeek_=e;this.lastCorrectiveSeek_=null;this.gapController_=new shaka.media.GapJumpingController(a,b.presentationTimeline,c,this.createStallDetector_(a,c),f);this.videoWrapper_=new shaka.media.VideoWrapper(a,function(){return g.onSeeking_()},this.getStartTime_(d));this.checkWindowTimer_=(new shaka.util.Timer(function(){g.onPollWindow_()})).tickEvery(.25)};
726
738
  shaka.media.MediaSourcePlayhead.prototype.release=function(){this.videoWrapper_&&(this.videoWrapper_.release(),this.videoWrapper_=null);this.gapController_&&(this.gapController_.release(),this.gapController_=null);this.checkWindowTimer_&&(this.checkWindowTimer_.stop(),this.checkWindowTimer_=null);this.mediaElement_=this.videoWrapper_=this.timeline_=this.config_=null;this.onSeek_=function(){}};shaka.media.MediaSourcePlayhead.prototype.setStartTime=function(a){this.videoWrapper_.setTime(a)};
@@ -771,11 +783,10 @@ $jscomp.makeIterator(a);for(q=n.next();!q.done;q=n.next())l=q.value,m=b.canSwitc
771
783
  shaka.media.StreamingEngine.prototype.onUpdate_=function(a){if(!this.destroyed_){var b=shaka.media.StreamingEngine.logPrefix_(a);goog.asserts.assert(!a.performingUpdate&&null!=a.updateTimer,b+" unexpected call to onUpdate_()");if(!a.performingUpdate&&null!=a.updateTimer&&(goog.asserts.assert(!a.clearingBuffer,b+" onUpdate_() should not be called when clearing the buffer"),!a.clearingBuffer))if(a.updateTimer=null,a.waitingToClearBuffer)shaka.log.debug(b,"skipping update and clearing the buffer"),this.clearBuffer_(a,
772
784
  a.waitingToFlushBuffer,a.clearBufferSafeMargin);else{try{var c=this.update_(a);null!=c&&(this.scheduleUpdate_(a,c),a.hasError=!1)}catch(d){this.handleStreamingError_(d);return}c=Array.from(this.mediaStates_.values());this.handlePeriodTransition_(a);this.startupComplete_&&c.every(function(a){return a.endOfStream})&&(shaka.log.v1(b,"calling endOfStream()..."),this.playerInterface_.mediaSourceEngine.endOfStream().then(function(){if(!this.destroyed_){var a=this.playerInterface_.mediaSourceEngine.getDuration();
773
785
  0!=a&&a<this.manifest_.presentationTimeline.getDuration()&&this.manifest_.presentationTimeline.setDuration(a)}}.bind(this)))}}};
774
- shaka.media.StreamingEngine.prototype.update_=function(a){var b=this;goog.asserts.assert(this.manifest_,"manifest_ should not be null");goog.asserts.assert(this.config_,"config_ should not be null");var c=shaka.util.ManifestParserUtils.ContentType;if(a.type==c.TEXT&&a.stream.mimeType==shaka.util.MimeUtils.CLOSED_CAPTION_MIMETYPE)return this.playerInterface_.mediaSourceEngine.setSelectedClosedCaptionId(a.stream.originalId||""),null;var d=shaka.media.StreamingEngine.logPrefix_(a),e=this.playerInterface_.getPresentationTime(),
775
- f=this.getTimeNeeded_(a,e);shaka.log.v2(d,"timeNeeded="+f);var g=this.findPeriodContainingStream_(a.stream),h=this.findPeriodForTime_(f),k=this.playerInterface_.mediaSourceEngine.bufferedAheadOf(a.type,e);shaka.log.v2(d,"update_:","presentationTime="+e,"bufferedAhead="+k);var l=Math.max(this.manifest_.minBufferTime||0,this.config_.rebufferingGoal,this.config_.bufferingGoal)*this.bufferingGoalScale_;if(f>=this.manifest_.presentationTimeline.getDuration())return shaka.log.debug(d,"buffered to end of presentation"),
776
- a.endOfStream=!0,a.type==c.VIDEO&&(a=this.mediaStates_.get(c.TEXT))&&a.stream.mimeType==shaka.util.MimeUtils.CLOSED_CAPTION_MIMETYPE&&(a.endOfStream=!0),null;a.endOfStream=!1;a.needPeriodIndex=h;if(h!=g)return shaka.log.debug(d,"need Period "+h,"presentationTime="+e,"timeNeeded="+f,"currentPeriodIndex="+g),null;if(k>=l)return shaka.log.v2(d,"buffering goal met"),.5;d=this.playerInterface_.mediaSourceEngine.bufferEnd(a.type);d=this.getSegmentReferenceNeeded_(a,e,d,g);if(!d)return 1;var m=Infinity;
777
- Array.from(this.mediaStates_.values()).forEach(function(a){if(a.type!=c.TEXT||a.stream.mimeType!=shaka.util.MimeUtils.CLOSED_CAPTION_MIMETYPE)a=b.getTimeNeeded_(a,e),m=Math.min(m,a)});h=this.manifest_.presentationTimeline.getMaxSegmentDuration()*shaka.media.StreamingEngine.MAX_RUN_AHEAD_SEGMENTS_;if(f>=m+h)return 1;a.resumeAt=0;this.fetchAndAppend_(a,e,g,d);return null};
778
- shaka.media.StreamingEngine.prototype.getTimeNeeded_=function(a,b){if(!a.lastStream||!a.lastSegmentReference)return Math.max(b,a.resumeAt);var c=this.findPeriodContainingStream_(a.lastStream);return this.manifest_.periods[c].startTime+a.lastSegmentReference.endTime};
786
+ shaka.media.StreamingEngine.prototype.update_=function(a){var b=this;goog.asserts.assert(this.manifest_,"manifest_ should not be null");goog.asserts.assert(this.config_,"config_ should not be null");var c=shaka.util.ManifestParserUtils.ContentType;if(shaka.media.StreamingEngine.isEmbeddedText_(a))return this.playerInterface_.mediaSourceEngine.setSelectedClosedCaptionId(a.stream.originalId||""),null;var d=shaka.media.StreamingEngine.logPrefix_(a),e=this.playerInterface_.getPresentationTime(),f=this.getTimeNeeded_(a,
787
+ e);shaka.log.v2(d,"timeNeeded="+f);var g=this.findPeriodContainingStream_(a.stream),h=this.findPeriodForTime_(f),k=this.playerInterface_.mediaSourceEngine.bufferedAheadOf(a.type,e);shaka.log.v2(d,"update_:","presentationTime="+e,"bufferedAhead="+k);var l=Math.max(this.manifest_.minBufferTime||0,this.config_.rebufferingGoal,this.config_.bufferingGoal)*this.bufferingGoalScale_;if(f>=this.manifest_.presentationTimeline.getDuration())return shaka.log.debug(d,"buffered to end of presentation"),a.endOfStream=
788
+ !0,a.type==c.VIDEO&&(a=this.mediaStates_.get(c.TEXT))&&a.stream.mimeType==shaka.util.MimeUtils.CLOSED_CAPTION_MIMETYPE&&(a.endOfStream=!0),null;a.endOfStream=!1;a.needPeriodIndex=h;if(h!=g)return shaka.log.debug(d,"need Period "+h,"presentationTime="+e,"timeNeeded="+f,"currentPeriodIndex="+g),null;if(k>=l)return shaka.log.v2(d,"buffering goal met"),.5;c=this.playerInterface_.mediaSourceEngine.bufferEnd(a.type);c=this.getSegmentReferenceNeeded_(a,e,c,g);if(!c)return 1;var m=Infinity;Array.from(this.mediaStates_.values()).forEach(function(a){shaka.media.StreamingEngine.isEmbeddedText_(a)||
789
+ (a=b.getTimeNeeded_(a,e),m=Math.min(m,a))});d=this.manifest_.presentationTimeline.getMaxSegmentDuration()*shaka.media.StreamingEngine.MAX_RUN_AHEAD_SEGMENTS_;if(f>=m+d)return 1;a.resumeAt=0;this.fetchAndAppend_(a,e,g,c);return null};shaka.media.StreamingEngine.prototype.getTimeNeeded_=function(a,b){if(!a.lastStream||!a.lastSegmentReference)return Math.max(b,a.resumeAt);var c=this.findPeriodContainingStream_(a.lastStream);return this.manifest_.periods[c].startTime+a.lastSegmentReference.endTime};
779
790
  shaka.media.StreamingEngine.prototype.getSegmentReferenceNeeded_=function(a,b,c,d){var e=shaka.media.StreamingEngine.logPrefix_(a);if(a.lastSegmentReference&&a.stream==a.lastStream)return c=a.lastSegmentReference.position+1,shaka.log.v2(e,"next position known:","position="+c),this.getSegmentReferenceIfAvailable_(a,d,c);a.lastSegmentReference?(goog.asserts.assert(a.lastStream,"lastStream should not be null"),shaka.log.v1(e,"next position unknown: another Stream buffered"),e=this.findPeriodContainingStream_(a.lastStream),
780
791
  e=this.lookupSegmentPosition_(a,this.manifest_.periods[e].startTime+a.lastSegmentReference.endTime,d)):(goog.asserts.assert(!a.lastStream,"lastStream should be null"),shaka.log.v1(e,"next position unknown: nothing buffered"),e=this.lookupSegmentPosition_(a,c||b,d));if(null==e)return null;b=null;null==c&&(b=this.getSegmentReferenceIfAvailable_(a,d,Math.max(0,e-1)));return b||this.getSegmentReferenceIfAvailable_(a,d,e)};
781
792
  shaka.media.StreamingEngine.prototype.lookupSegmentPosition_=function(a,b,c){var d=shaka.media.StreamingEngine.logPrefix_(a);c=this.manifest_.periods[c];shaka.log.debug(d,"looking up segment:","presentationTime="+b,"currentPeriod.startTime="+c.startTime);b=Math.max(0,b-c.startTime);a=a.stream.findSegmentPosition(b);null==a&&shaka.log.warning(d,"cannot find segment:","currentPeriod.startTime="+c.startTime,"lookupTime="+b);return a};
@@ -800,12 +811,13 @@ shaka.media.StreamingEngine.prototype.evict_=function(a,b){var c=shaka.media.Str
800
811
  shaka.media.StreamingEngine.prototype.handleStartup_=function(a,b){var c=shaka.util.Functional,d=shaka.util.ManifestParserUtils.ContentType;if(!this.startupComplete_){var e=shaka.media.StreamingEngine.logPrefix_(a),f=Array.from(this.mediaStates_.values());if(1!=f.length||f[0].type!=d.TEXT)this.startupComplete_=f.every(function(a){return a.type==d.TEXT?!0:!a.waitingToClearBuffer&&!a.clearingBuffer&&a.lastSegmentReference});if(this.startupComplete_){shaka.log.debug(e,"startup complete");var g=this.findPeriodContainingStream_(b);
801
812
  goog.asserts.assert(f.every(function(a){return a.needPeriodIndex==g||a.needPeriodIndex==g+1}),e+" expected all MediaStates to need same Period");this.canSwitchPeriod_[g]||this.setupPeriod_(g).then(function(){this.destroyed_||(shaka.log.v1(e,"calling onCanSwitch()..."),this.playerInterface_.onCanSwitch())}.bind(this))["catch"](c.noop);for(f=0;f<this.manifest_.periods.length;++f)this.setupPeriod_(f)["catch"](c.noop);this.playerInterface_.onStartupComplete&&(shaka.log.v1(e,"calling onStartupComplete()..."),
802
813
  this.playerInterface_.onStartupComplete())}}};
803
- shaka.media.StreamingEngine.prototype.handlePeriodTransition_=function(a){var b=shaka.util.Functional,c=shaka.media.StreamingEngine.logPrefix_(a),d=shaka.util.ManifestParserUtils.ContentType,e=this.findPeriodContainingStream_(a.stream);if(a.needPeriodIndex!=e){var f=a.needPeriodIndex,g=Array.from(this.mediaStates_.values());goog.asserts.assert(g.every(function(a){return a.needPeriodIndex==f||a.hasError||!shaka.media.StreamingEngine.isIdle_(a)}),"All MediaStates should need the same Period or be performing updates.");g.every(function(a){return a.needPeriodIndex==
804
- f})?g.every(shaka.media.StreamingEngine.isIdle_)?(shaka.log.debug(c,"all need Period "+f),this.setupPeriod_(f).then(function(){if(!this.destroyed_)if(g.every(function(a){var b=shaka.media.StreamingEngine.isIdle_(a),c=this.findPeriodContainingStream_(a.stream);return b&&a.needPeriodIndex==f&&c!=f}.bind(this))){var a=this.manifest_.periods[f];shaka.log.v1(c,"calling onChooseStreams()...");var b=this.playerInterface_.onChooseStreams(a),e=new Map;b.variant&&b.variant.video&&e.set(d.VIDEO,b.variant.video);
805
- b.variant&&b.variant.audio&&e.set(d.AUDIO,b.variant.audio);b.text&&e.set(d.TEXT,b.text);var m=$jscomp.makeIterator(this.mediaStates_.keys());for(b=m.next();!b.done;b=m.next())if(b=b.value,!e.has(b)&&b!=d.TEXT){shaka.log.error(c,"invalid Streams chosen: missing "+b+" Stream");this.playerInterface_.onError(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.STREAMING,shaka.util.Error.Code.INVALID_STREAMS_CHOSEN));return}m=$jscomp.makeIterator(Array.from(e.keys()));for(b=
806
- m.next();!b.done;b=m.next())if(b=b.value,!this.mediaStates_.has(b))if(b==d.TEXT)this.initStreams_(null,null,e.get(d.TEXT),a.startTime),e["delete"](b);else{shaka.log.error(c,"invalid Streams chosen: unusable "+b+" Stream");this.playerInterface_.onError(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.STREAMING,shaka.util.Error.Code.INVALID_STREAMS_CHOSEN));return}a=$jscomp.makeIterator(Array.from(this.mediaStates_.keys()));for(b=a.next();!b.done;b=a.next())b=b.value,
807
- (m=e.get(b))?(this.switchInternal_(m,!1,0,!1),this.scheduleUpdate_(this.mediaStates_.get(b),0)):(goog.asserts.assert(b==d.TEXT,"Invalid streams chosen"),this.mediaStates_["delete"](b));shaka.log.v1(c,"calling onCanSwitch()...");this.playerInterface_.onCanSwitch()}else shaka.log.debug(c,"ignoring transition to Period",f,"since another is happening")}.bind(this))["catch"](b.noop)):shaka.log.debug(c,"all MediaStates need Period "+f+", but not all MediaStates are idle"):shaka.log.debug(c,"not all MediaStates need Period "+
808
- f)}};shaka.media.StreamingEngine.isIdle_=function(a){return!a.performingUpdate&&null==a.updateTimer&&!a.waitingToClearBuffer&&!a.clearingBuffer};shaka.media.StreamingEngine.prototype.findPeriodForTime_=function(a){return(a=shaka.util.Periods.findPeriodForTime(this.manifest_.periods,a+shaka.util.ManifestParserUtils.GAP_OVERLAP_TOLERANCE_SECONDS))?this.manifest_.periods.indexOf(a):0};
814
+ shaka.media.StreamingEngine.prototype.handlePeriodTransition_=function(a){var b=shaka.util.Functional,c=shaka.media.StreamingEngine.logPrefix_(a),d=shaka.util.ManifestParserUtils.ContentType,e=this.findPeriodContainingStream_(a.stream);if(a.needPeriodIndex!=e){var f=a.needPeriodIndex,g=Array.from(this.mediaStates_.values());goog.asserts.assert(g.every(function(a){return a.needPeriodIndex==f||a.hasError||!shaka.media.StreamingEngine.isIdle_(a)||shaka.media.StreamingEngine.isEmbeddedText_(a)}),"All MediaStates should need the same Period or be performing updates.");
815
+ g.every(function(a){return a.needPeriodIndex==f||shaka.media.StreamingEngine.isEmbeddedText_(a)})?g.every(shaka.media.StreamingEngine.isIdle_)?(shaka.log.debug(c,"all need Period "+f),this.setupPeriod_(f).then(function(){if(!this.destroyed_)if(g.every(function(a){var b=shaka.media.StreamingEngine.isIdle_(a),c=this.findPeriodContainingStream_(a.stream);return shaka.media.StreamingEngine.isEmbeddedText_(a)?!0:b&&a.needPeriodIndex==f&&c!=f}.bind(this))){var a=this.manifest_.periods[f];shaka.log.v1(c,
816
+ "calling onChooseStreams()...");var b=this.playerInterface_.onChooseStreams(a),e=new Map;b.variant&&b.variant.video&&e.set(d.VIDEO,b.variant.video);b.variant&&b.variant.audio&&e.set(d.AUDIO,b.variant.audio);b.text&&e.set(d.TEXT,b.text);var m=$jscomp.makeIterator(this.mediaStates_.keys());for(b=m.next();!b.done;b=m.next())if(b=b.value,!e.has(b)&&b!=d.TEXT){shaka.log.error(c,"invalid Streams chosen: missing "+b+" Stream");this.playerInterface_.onError(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,
817
+ shaka.util.Error.Category.STREAMING,shaka.util.Error.Code.INVALID_STREAMS_CHOSEN));return}m=$jscomp.makeIterator(Array.from(e.keys()));for(b=m.next();!b.done;b=m.next())if(b=b.value,!this.mediaStates_.has(b))if(b==d.TEXT)this.initStreams_(null,null,e.get(d.TEXT),a.startTime),e["delete"](b);else{shaka.log.error(c,"invalid Streams chosen: unusable "+b+" Stream");this.playerInterface_.onError(new shaka.util.Error(shaka.util.Error.Severity.CRITICAL,shaka.util.Error.Category.STREAMING,shaka.util.Error.Code.INVALID_STREAMS_CHOSEN));
818
+ return}a=$jscomp.makeIterator(Array.from(this.mediaStates_.keys()));for(b=a.next();!b.done;b=a.next())b=b.value,(m=e.get(b))?(this.switchInternal_(m,!1,0,!1),this.scheduleUpdate_(this.mediaStates_.get(b),0)):(goog.asserts.assert(b==d.TEXT,"Invalid streams chosen"),this.mediaStates_["delete"](b));shaka.log.v1(c,"calling onCanSwitch()...");this.playerInterface_.onCanSwitch()}else shaka.log.debug(c,"ignoring transition to Period",f,"since another is happening")}.bind(this))["catch"](b.noop)):shaka.log.debug(c,
819
+ "all MediaStates need Period "+f+", but not all MediaStates are idle"):shaka.log.debug(c,"not all MediaStates need Period "+f)}};shaka.media.StreamingEngine.isEmbeddedText_=function(a){var b=shaka.util.MimeUtils;return a.type==shaka.util.ManifestParserUtils.ContentType.TEXT&&a.stream.mimeType==b.CLOSED_CAPTION_MIMETYPE};shaka.media.StreamingEngine.isIdle_=function(a){return!a.performingUpdate&&null==a.updateTimer&&!a.waitingToClearBuffer&&!a.clearingBuffer};
820
+ shaka.media.StreamingEngine.prototype.findPeriodForTime_=function(a){return(a=shaka.util.Periods.findPeriodForTime(this.manifest_.periods,a+shaka.util.ManifestParserUtils.GAP_OVERLAP_TOLERANCE_SECONDS))?this.manifest_.periods.indexOf(a):0};
809
821
  shaka.media.StreamingEngine.prototype.findPeriodContainingStream_=function(a){goog.asserts.assert(this.manifest_,"Must have a manifest to find a stream.");for(var b=this.manifest_.periods,c=0;c<b.length;c++){for(var d=b[c],e=new Set,f=$jscomp.makeIterator(d.variants),g=f.next();!g.done;g=f.next())g=g.value,g.audio&&e.add(g.audio),g.video&&e.add(g.video),g.video&&g.video.trickModeVideo&&e.add(g.video.trickModeVideo);d=$jscomp.makeIterator(d.textStreams);for(f=d.next();!f.done;f=d.next())e.add(f.value);
810
822
  if(e.has(a))return c}return-1};shaka.media.StreamingEngine.prototype.fetch_=function(a,b){var c=shaka.net.NetworkingEngine.RequestType.SEGMENT,d=shaka.util.Networking.createSegmentRequest(b.getUris(),b.startByte,b.endByte,this.config_.retryParameters);shaka.log.v2("fetching: reference=",b);c=this.playerInterface_.netEngine.request(c,d);a.operation=c;return c.promise.then(function(b){a.operation=null;return b.data})};
811
823
  shaka.media.StreamingEngine.prototype.clearBuffer_=function(a,b,c){var d=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function f(){var g,h,k,l;return $jscomp.generator.createGenerator(f,function(f){switch(f.nextAddress){case 1:return g=shaka.media.StreamingEngine.logPrefix_(a),goog.asserts.assert(!a.performingUpdate&&null==a.updateTimer,g+" unexpected call to clearBuffer_()"),a.waitingToClearBuffer=!1,a.waitingToFlushBuffer=!1,a.clearBufferSafeMargin=0,a.clearingBuffer=!0,shaka.log.debug(g,
@@ -816,13 +828,13 @@ shaka.media.StreamingEngine.prototype.scheduleUpdate_=function(a,b){var c=this,d
816
828
  shaka.media.StreamingEngine.logPrefix_=function(a){return"("+a.type+":"+a.stream.id+")"};shaka.net.HttpPluginUtils={};
817
829
  shaka.net.HttpPluginUtils.makeResponse=function(a,b,c,d,e,f){if(200<=c&&299>=c&&202!=c)return{uri:e||d,originalUri:d,data:b,headers:a,fromCache:!!a["x-shaka-from-cache"]};e=null;try{e=shaka.util.StringUtils.fromBytesAutoDetect(b)}catch(g){}shaka.log.debug("HTTP error text:",e);throw new shaka.util.Error(401==c||403==c?shaka.util.Error.Severity.CRITICAL:shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.BAD_HTTP_STATUS,d,c,e,a,f);};shaka.net.HttpFetchPlugin=function(a,b,c,d){var e=new shaka.net.HttpFetchPlugin.Headers_;shaka.util.MapUtils.asMap(b.headers).forEach(function(a,b){e.append(b,a)});var f=new shaka.net.HttpFetchPlugin.AbortController_,g={canceled:!1,timedOut:!1};a=shaka.net.HttpFetchPlugin.request_(a,c,{body:b.body||void 0,headers:e,method:b.method,signal:f.signal,credentials:b.allowCrossSiteCredentials?"include":void 0},g,d);a=new shaka.util.AbortableOperation(a,function(){g.canceled=!0;f.abort();return Promise.resolve()});
818
830
  if(b=b.retryParameters.timeout){var h=new shaka.util.Timer(function(){g.timedOut=!0;f.abort()});h.tickAfter(b/1E3);a["finally"](function(){h.stop()})}return a};goog.exportSymbol("shaka.net.HttpFetchPlugin",shaka.net.HttpFetchPlugin);
819
- shaka.net.HttpFetchPlugin.request_=function(a,b,c,d,e){return $jscomp.asyncExecutePromiseGeneratorFunction(function g(){var h,k,l,m,n,p,q,t,r,u,w,x,v,B;return $jscomp.generator.createGenerator(g,function(g){switch(g.nextAddress){case 1:return h=shaka.net.HttpFetchPlugin.fetch_,k=shaka.net.HttpFetchPlugin.ReadableStream_,p=n=0,q=Date.now(),g.setCatchFinallyBlocks(2),g.yield(h(a,c),4);case 4:return l=g.yieldResult,t=l.clone().body.getReader(),u=(r=l.headers.get("Content-Length"))?parseInt(r,10):0,w=
820
- function(a){var b=function(){return $jscomp.asyncExecutePromiseGeneratorFunction(function z(){var c,d,g;return $jscomp.generator.createGenerator(z,function(h){switch(h.nextAddress){case 1:return h.setCatchFinallyBlocks(2),h.yield(t.read(),4);case 4:c=h.yieldResult;h.leaveTryBlock(3);break;case 2:return d=h.enterCatchBlock(),shaka.log.v1("error reading from stream",d.message),h["return"]();case 3:c.done||(n+=c.value.byteLength);g=Date.now();if(100<g-q||c.done)e(g-q,n-p,u-n),p=n,q=g;c.done?(goog.asserts.assert(!c.value,
821
- 'readObj should be unset when "done" is true.'),a.close()):(a.enqueue(c.value),b());h.jumpToEnd()}})})};b()},new k({start:w}),g.yield(l.arrayBuffer(),5);case 5:m=g.yieldResult;g.leaveTryBlock(3);break;case 2:x=g.enterCatchBlock();if(d.canceled)throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.OPERATION_ABORTED,a,b);if(d.timedOut)throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,
822
- shaka.util.Error.Code.TIMEOUT,a,b);throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.HTTP_ERROR,a,x,b);case 3:return v={},B=l.headers,B.forEach(function(a,b){v[b.trim()]=a}),g["return"](shaka.net.HttpPluginUtils.makeResponse(v,m,l.status,a,l.url,b))}})})};shaka.net.HttpFetchPlugin.isSupported=function(){if(window.ReadableStream)try{new ReadableStream({})}catch(a){return!1}else return!1;return!(!window.fetch||!window.AbortController)};
831
+ shaka.net.HttpFetchPlugin.request_=function(a,b,c,d,e){return $jscomp.asyncExecutePromiseGeneratorFunction(function g(){var h,k,l,m,n,p,q,t,r,u,v,x,w,z;return $jscomp.generator.createGenerator(g,function(g){switch(g.nextAddress){case 1:return h=shaka.net.HttpFetchPlugin.fetch_,k=shaka.net.HttpFetchPlugin.ReadableStream_,p=n=0,q=Date.now(),g.setCatchFinallyBlocks(2),g.yield(h(a,c),4);case 4:return l=g.yieldResult,t=l.clone().body.getReader(),u=(r=l.headers.get("Content-Length"))?parseInt(r,10):0,v=
832
+ function(a){var b=function(){return $jscomp.asyncExecutePromiseGeneratorFunction(function A(){var c,d,g;return $jscomp.generator.createGenerator(A,function(h){switch(h.nextAddress){case 1:return h.setCatchFinallyBlocks(2),h.yield(t.read(),4);case 4:c=h.yieldResult;h.leaveTryBlock(3);break;case 2:return d=h.enterCatchBlock(),shaka.log.v1("error reading from stream",d.message),h["return"]();case 3:c.done||(n+=c.value.byteLength);g=Date.now();if(100<g-q||c.done)e(g-q,n-p,u-n),p=n,q=g;c.done?(goog.asserts.assert(!c.value,
833
+ 'readObj should be unset when "done" is true.'),a.close()):(a.enqueue(c.value),b());h.jumpToEnd()}})})};b()},new k({start:v}),g.yield(l.arrayBuffer(),5);case 5:m=g.yieldResult;g.leaveTryBlock(3);break;case 2:x=g.enterCatchBlock();if(d.canceled)throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.OPERATION_ABORTED,a,b);if(d.timedOut)throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,
834
+ shaka.util.Error.Code.TIMEOUT,a,b);throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.HTTP_ERROR,a,x,b);case 3:return w={},z=l.headers,z.forEach(function(a,b){w[b.trim()]=a}),g["return"](shaka.net.HttpPluginUtils.makeResponse(w,m,l.status,a,l.url,b))}})})};shaka.net.HttpFetchPlugin.isSupported=function(){if(window.ReadableStream)try{new ReadableStream({})}catch(a){return!1}else return!1;return!(!window.fetch||!window.AbortController)};
823
835
  goog.exportProperty(shaka.net.HttpFetchPlugin,"isSupported",shaka.net.HttpFetchPlugin.isSupported);shaka.net.HttpFetchPlugin.fetch_=window.fetch;shaka.net.HttpFetchPlugin.AbortController_=window.AbortController;shaka.net.HttpFetchPlugin.ReadableStream_=window.ReadableStream;shaka.net.HttpFetchPlugin.Headers_=window.Headers;
824
836
  shaka.net.HttpFetchPlugin.isSupported()&&(shaka.net.NetworkingEngine.registerScheme("http",shaka.net.HttpFetchPlugin,shaka.net.NetworkingEngine.PluginPriority.PREFERRED),shaka.net.NetworkingEngine.registerScheme("https",shaka.net.HttpFetchPlugin,shaka.net.NetworkingEngine.PluginPriority.PREFERRED));shaka.net.HttpXHRPlugin=function(a,b,c,d){var e=new shaka.net.HttpXHRPlugin.Xhr_,f=Date.now(),g=0,h=new Promise(function(h,l){e.open(b.method,a,!0);e.responseType="arraybuffer";e.timeout=b.retryParameters.timeout;e.withCredentials=b.allowCrossSiteCredentials;e.onabort=function(){l(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.OPERATION_ABORTED,a,c))};e.onload=function(b){b=b.target;goog.asserts.assert(b,"XHR onload has no target!");
825
- var d=b.getAllResponseHeaders().trim().split("\r\n"),e={};d=$jscomp.makeIterator(d);for(var f=d.next();!f.done;f=d.next())f=f.value.split(": "),e[f[0].toLowerCase()]=f.slice(1).join(": ");try{var g=shaka.net.HttpPluginUtils.makeResponse(e,b.response,b.status,a,b.responseURL,c);h(g)}catch(w){goog.asserts.assert(w instanceof shaka.util.Error,"Wrong error type!"),l(w)}};e.onerror=function(b){l(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.HTTP_ERROR,
837
+ var d=b.getAllResponseHeaders().trim().split("\r\n"),e={};d=$jscomp.makeIterator(d);for(var f=d.next();!f.done;f=d.next())f=f.value.split(": "),e[f[0].toLowerCase()]=f.slice(1).join(": ");try{var g=shaka.net.HttpPluginUtils.makeResponse(e,b.response,b.status,a,b.responseURL,c);h(g)}catch(v){goog.asserts.assert(v instanceof shaka.util.Error,"Wrong error type!"),l(v)}};e.onerror=function(b){l(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.HTTP_ERROR,
826
838
  a,b,c))};e.ontimeout=function(b){l(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.TIMEOUT,a,c))};e.onprogress=function(a){var b=Date.now();if(100<b-f||a.lengthComputable&&a.loaded==a.total)d(b-f,a.loaded-g,a.total-a.loaded),g=a.loaded,f=b};for(var k in b.headers){var n=k.toLowerCase();e.setRequestHeader(n,b.headers[k])}e.send(b.body)});return new shaka.util.AbortableOperation(h,function(){e.abort();return Promise.resolve()})};
827
839
  goog.exportSymbol("shaka.net.HttpXHRPlugin",shaka.net.HttpXHRPlugin);shaka.net.HttpXHRPlugin.Xhr_=window.XMLHttpRequest;shaka.net.NetworkingEngine.registerScheme("http",shaka.net.HttpXHRPlugin,shaka.net.NetworkingEngine.PluginPriority.FALLBACK);shaka.net.NetworkingEngine.registerScheme("https",shaka.net.HttpXHRPlugin,shaka.net.NetworkingEngine.PluginPriority.FALLBACK);shaka.offline={};shaka.offline.DownloadProgressEstimator=function(){this.actualDownloaded_=this.estimatedDownloaded_=this.estimatedTotal_=0;this.pending_=new Map;this.nextId_=0};shaka.offline.DownloadProgressEstimator.prototype.open=function(a){this.estimatedTotal_+=a;var b=this.nextId_;this.nextId_++;this.pending_.set(b,a);return b};
828
840
  shaka.offline.DownloadProgressEstimator.prototype.close=function(a,b){if(this.pending_.has(a)){var c=this.pending_.get(a);this.pending_["delete"](a);this.estimatedDownloaded_+=c;this.actualDownloaded_+=b}};shaka.offline.DownloadProgressEstimator.prototype.getEstimatedProgress=function(){return 0==this.estimatedTotal_?0:this.estimatedDownloaded_/this.estimatedTotal_};shaka.offline.DownloadProgressEstimator.prototype.getTotalDownloaded=function(){return this.actualDownloaded_};shaka.offline.DownloadManager=function(a,b){this.networkingEngine_=a;this.groups_=new Map;this.destroyed_=!1;this.onProgress_=b;this.estimator_=new shaka.offline.DownloadProgressEstimator};shaka.offline.DownloadManager.prototype.destroy=function(){this.destroyed_=!0;return Promise.all(this.groups_.values()).then(function(){},function(){})};
@@ -928,10 +940,10 @@ shaka.text.SimpleTextDisplayer.TextTrackLabel_="Shaka Player TextTrack";shaka.ut
928
940
  shaka.util.ConfigUtils.mergeConfigObjects=function(a,b,c,d,e){goog.asserts.assert(a,"Destination config must not be null!");var f=e in d,g=!0,h;for(h in b){var k=e+"."+h,l=f?d[e]:c[h];f||h in c?void 0===b[h]?void 0===l||f?delete a[h]:a[h]=shaka.util.ObjectUtils.cloneObject(l):l.constructor==Object&&b[h]&&b[h].constructor==Object?(a[h]||(a[h]=shaka.util.ObjectUtils.cloneObject(l)),k=shaka.util.ConfigUtils.mergeConfigObjects(a[h],b[h],l,d,k),g=g&&k):typeof b[h]!=typeof l||null==b[h]||b[h].constructor!=
929
941
  l.constructor?(shaka.log.error("Invalid config, wrong type for "+k),g=!1):("function"==typeof c[h]&&c[h].length!=b[h].length&&shaka.log.warning("Invalid config, wrong number of arguments for "+k),a[h]=b[h]):(shaka.log.error("Invalid config, unrecognized key "+k),g=!1)}return g};goog.exportSymbol("shaka.util.ConfigUtils.mergeConfigObjects",shaka.util.ConfigUtils.mergeConfigObjects);
930
942
  shaka.util.ConfigUtils.convertToConfigObject=function(a,b){for(var c={},d=c,e=0,f=0;;){e=a.indexOf(".",e);if(0>e)break;if(0==e||"\\"!=a[e-1])f=a.substring(f,e).replace(/\\\./g,"."),d[f]={},d=d[f],f=e+1;e+=1}d[a.substring(f).replace(/\\\./g,".")]=b;return c};goog.exportSymbol("shaka.util.ConfigUtils.convertToConfigObject",shaka.util.ConfigUtils.convertToConfigObject);shaka.util.PlayerConfiguration=function(){};goog.exportSymbol("shaka.util.PlayerConfiguration",shaka.util.PlayerConfiguration);
931
- shaka.util.PlayerConfiguration.createDefault=function(){var a=5E5,b=Infinity;navigator.connection&&(a=1E6*navigator.connection.downlink,navigator.connection.saveData&&(b=360));var c={retryParameters:shaka.net.NetworkingEngine.defaultRetryParameters(),servers:{},clearKeys:{},advanced:{},delayLicenseRequestUntilPlayed:!1},d={retryParameters:shaka.net.NetworkingEngine.defaultRetryParameters(),availabilityWindowOverride:NaN,dash:{customScheme:function(a){if(a)return null},clockSyncUri:"",ignoreDrmInfo:!1,
932
- xlinkFailGracefully:!1,defaultPresentationDelay:10,ignoreMinBufferTime:!1,autoCorrectDrift:!0}},e={retryParameters:shaka.net.NetworkingEngine.defaultRetryParameters(),failureCallback:function(a){shaka.log.error("Unhandled streaming error",a)},rebufferingGoal:2,bufferingGoal:10,bufferBehind:30,ignoreTextStreamFailures:!1,alwaysStreamText:!1,startAtSegmentBoundary:!1,smallGapLimit:.5,jumpLargeGaps:!1,durationBackoff:1,forceTransmuxTS:!1,safeSeekOffset:5,stallEnabled:!0,stallThreshold:1,stallSkip:.1};
933
- shaka.util.Platform.isWebOS()&&(e.stallEnabled=!1);var f={trackSelectionCallback:function(a){return a},progressCallback:function(a,b){shaka.log.v2("Offline operation on",a.originalManifestUri,"progress at",b)},usePersistentLicense:!0},g={drm:c,manifest:d,streaming:e,offline:f,abrFactory:shaka.abr.SimpleAbrManager,abr:{enabled:!0,defaultBandwidthEstimate:a,switchInterval:8,bandwidthUpgradeTarget:.85,bandwidthDowngradeTarget:.95,restrictions:{minWidth:0,maxWidth:Infinity,minHeight:0,maxHeight:b,minPixels:0,
934
- maxPixels:Infinity,minBandwidth:0,maxBandwidth:Infinity}},preferredAudioLanguage:"",preferredTextLanguage:"",preferredVariantRole:"",preferredTextRole:"",preferredAudioChannelCount:2,restrictions:{minWidth:0,maxWidth:Infinity,minHeight:0,maxHeight:Infinity,minPixels:0,maxPixels:Infinity,minBandwidth:0,maxBandwidth:Infinity},playRangeStart:0,playRangeEnd:Infinity,textDisplayFactory:function(){return null}};f.trackSelectionCallback=function(a){return shaka.util.PlayerConfiguration.defaultTrackSelect(a,
943
+ shaka.util.PlayerConfiguration.createDefault=function(){var a=5E5,b=Infinity;navigator.connection&&(a=1E6*navigator.connection.downlink,navigator.connection.saveData&&(b=360));var c={retryParameters:shaka.net.NetworkingEngine.defaultRetryParameters(),servers:{},clearKeys:{},advanced:{},delayLicenseRequestUntilPlayed:!1,initDataTransform:function(a){return a},fairPlayTransform:!0},d={retryParameters:shaka.net.NetworkingEngine.defaultRetryParameters(),availabilityWindowOverride:NaN,dash:{customScheme:function(a){if(a)return null},
944
+ clockSyncUri:"",ignoreDrmInfo:!1,xlinkFailGracefully:!1,defaultPresentationDelay:10,ignoreMinBufferTime:!1,autoCorrectDrift:!0},hls:{ignoreTextStreamFailures:!1}},e={retryParameters:shaka.net.NetworkingEngine.defaultRetryParameters(),failureCallback:function(a){shaka.log.error("Unhandled streaming error",a)},rebufferingGoal:2,bufferingGoal:10,bufferBehind:30,ignoreTextStreamFailures:!1,alwaysStreamText:!1,startAtSegmentBoundary:!1,smallGapLimit:.5,jumpLargeGaps:!1,durationBackoff:1,forceTransmuxTS:!1,
945
+ safeSeekOffset:5,stallEnabled:!0,stallThreshold:1,stallSkip:.1};shaka.util.Platform.isWebOS()&&(e.stallEnabled=!1);var f={trackSelectionCallback:function(a){return a},progressCallback:function(a,b){shaka.log.v2("Offline operation on",a.originalManifestUri,"progress at",b)},usePersistentLicense:!0},g={drm:c,manifest:d,streaming:e,offline:f,abrFactory:shaka.abr.SimpleAbrManager,abr:{enabled:!0,defaultBandwidthEstimate:a,switchInterval:8,bandwidthUpgradeTarget:.85,bandwidthDowngradeTarget:.95,restrictions:{minWidth:0,
946
+ maxWidth:Infinity,minHeight:0,maxHeight:b,minPixels:0,maxPixels:Infinity,minBandwidth:0,maxBandwidth:Infinity}},preferredAudioLanguage:"",preferredTextLanguage:"",preferredVariantRole:"",preferredTextRole:"",preferredAudioChannelCount:2,restrictions:{minWidth:0,maxWidth:Infinity,minHeight:0,maxHeight:Infinity,minPixels:0,maxPixels:Infinity,minBandwidth:0,maxBandwidth:Infinity},playRangeStart:0,playRangeEnd:Infinity,textDisplayFactory:function(){return null}};f.trackSelectionCallback=function(a){return shaka.util.PlayerConfiguration.defaultTrackSelect(a,
935
947
  g.preferredAudioLanguage)};return g};shaka.util.PlayerConfiguration.mergeConfigObjects=function(a,b,c){var d={".drm.servers":"",".drm.clearKeys":"",".drm.advanced":{distinctiveIdentifierRequired:!1,persistentStateRequired:!1,videoRobustness:"",audioRobustness:"",serverCertificate:new Uint8Array(0),individualizationServer:""}};return shaka.util.ConfigUtils.mergeConfigObjects(a,b,c||shaka.util.PlayerConfiguration.createDefault(),d,"")};
936
948
  goog.exportProperty(shaka.util.PlayerConfiguration,"mergeConfigObjects",shaka.util.PlayerConfiguration.mergeConfigObjects);
937
949
  shaka.util.PlayerConfiguration.defaultTrackSelect=function(a,b){var c=shaka.util.ManifestParserUtils.ContentType,d=shaka.util.LanguageUtils,e=a.filter(function(a){return"variant"==a.type}),f=[],g=d.findClosestLocale(b,e.map(function(a){return a.language}));g&&(f=e.filter(function(a){return d.normalize(a.language)==g}));0==f.length&&(f=e.filter(function(a){return a.primary}));0==f.length&&(1<(new Set(e.map(function(a){return a.language}))).size&&shaka.log.warning("Could not choose a good audio track based on language preferences or primary tracks. An arbitrary language will be stored!"),
@@ -951,7 +963,7 @@ b){return c.onSrcEquals_(a,b)});this.walker_=new shaka.routing.Walker(this.detac
951
963
  b instanceof shaka.util.Error?shaka.log.warning("Error Code:",b.code):(shaka.log.warning("Error Message:",b.message),shaka.log.warning("Error Stack:",b.stack)),d.yield(c.onUnload_(a,c.createEmptyPayload_()),2);case 2:return d["return"](a.mediaElement?c.attachNode_:c.detachNode_)}})})},onIdle:function(a){c.dispatchEvent(new shaka.util.FakeEvent("onstateidle",{state:a.name}))}});a&&this.attach(a,!0)};goog.inherits(shaka.Player,shaka.util.FakeEventTarget);goog.exportSymbol("shaka.Player",shaka.Player);
952
964
  shaka.Player.prototype.destroy=function(){var a=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function c(){var d;return $jscomp.generator.createGenerator(c,function(c){switch(c.nextAddress){case 1:if(a.loadMode_==shaka.Player.LoadMode.DESTROYED)return c["return"]();a.loadMode_=shaka.Player.LoadMode.DESTROYED;d=a.walker_.startNewRoute(function(c){return{node:a.detachNode_,payload:a.createEmptyPayload_(),interruptible:!1}});return c.yield(new Promise(function(a){d.onStart=function(){shaka.log.info("Preparing to destroy walker...")};
953
965
  d.onEnd=function(){a()};d.onCancel=function(){goog.asserts.assert(!1,"Our final detach call should never be cancelled.");a()};d.onError=function(){goog.asserts.assert(!1,"Our final detach call should never see an error");a()};d.onSkip=function(){goog.asserts.assert(!1,"Our final detach call should never be skipped");a()}}),2);case 2:return c.yield(a.walker_.destroy(),3);case 3:a.eventManager_&&(a.eventManager_.release(),a.eventManager_=null);a.abrManagerFactory_=null;a.abrManager_=null;a.config_=
954
- null;if(!a.networkingEngine_){c.jumpTo(0);break}return c.yield(a.networkingEngine_.destroy(),5);case 5:a.networkingEngine_=null,c.jumpToEnd()}})})};goog.exportProperty(shaka.Player.prototype,"destroy",shaka.Player.prototype.destroy);shaka.Player.version="v2.5.4-debug";goog.exportProperty(shaka.Player,"version",shaka.Player.version);shaka.Deprecate.init(shaka.Player.version);shaka.Player.restrictedStatuses_=["output-restricted","internal-error"];shaka.Player.supportPlugins_={};
966
+ null;if(!a.networkingEngine_){c.jumpTo(0);break}return c.yield(a.networkingEngine_.destroy(),5);case 5:a.networkingEngine_=null,c.jumpToEnd()}})})};goog.exportProperty(shaka.Player.prototype,"destroy",shaka.Player.prototype.destroy);shaka.Player.version="v2.5.5-debug";goog.exportProperty(shaka.Player,"version",shaka.Player.version);shaka.Deprecate.init(shaka.Player.version);shaka.Player.restrictedStatuses_=["output-restricted","internal-error"];shaka.Player.supportPlugins_={};
955
967
  shaka.Player.registerSupportPlugin=function(a,b){shaka.Player.supportPlugins_[a]=b};goog.exportProperty(shaka.Player,"registerSupportPlugin",shaka.Player.registerSupportPlugin);shaka.Player.isBrowserSupported=function(){return window.Promise&&window.Uint8Array&&Array.prototype.forEach&&shaka.media.DrmEngine.isBrowserSupported()?shaka.util.Platform.supportsMediaSource()?!0:shaka.util.Platform.supportsMediaType("application/x-mpegurl"):!1};goog.exportProperty(shaka.Player,"isBrowserSupported",shaka.Player.isBrowserSupported);
956
968
  shaka.Player.probeSupport=function(){goog.asserts.assert(shaka.Player.isBrowserSupported(),"Must have basic support");return shaka.media.DrmEngine.probeSupport().then(function(a){var b=shaka.media.ManifestParser.probeSupport(),c=shaka.media.MediaSourceEngine.probeSupport();a={manifest:b,media:c,drm:a};b=shaka.Player.supportPlugins_;for(var d in b)a[d]=b[d]();return a})};goog.exportProperty(shaka.Player,"probeSupport",shaka.Player.probeSupport);
957
969
  shaka.Player.prototype.attach=function(a,b){b=void 0===b?!0:b;if(this.loadMode_==shaka.Player.LoadMode.DESTROYED)return Promise.reject(this.createAbortLoadError_());var c=this.createEmptyPayload_();c.mediaElement=a;shaka.util.Platform.supportsMediaSource()||(b=!1);var d=b?this.mediaSourceNode_:this.attachNode_,e=this.walker_.startNewRoute(function(a){return{node:d,payload:c,interruptible:!1}});e.onStart=function(){return shaka.log.info("Starting attach...")};return this.wrapWalkerListenersWithPromise_(e)};
@@ -987,7 +999,7 @@ goog.asserts.assert(a.mediaElement,"We should have a media element when loading.
987
999
  k),l=c.config_.abrFactory,c.abrManager_&&c.abrManagerFactory_==l||(c.abrManagerFactory_=l,c.abrManager_=new l,c.abrManager_.configure(c.config_.abr)),c.createTextStreamsForClosedCaptions_(c.manifest_.periods),c.currentAdaptationSetCriteria_=new shaka.media.PreferenceBasedCriteria(c.config_.preferredAudioLanguage,c.config_.preferredVariantRole,c.config_.preferredAudioChannelCount),c.currentTextLanguage_=c.config_.preferredTextLanguage,shaka.Player.applyPlayRange_(c.manifest_.presentationTimeline,c.config_.playRangeStart,
988
1000
  c.config_.playRangeEnd),e.yield(c.drmEngine_.attach(f),2);case 2:return c.abrManager_.init(function(a,b,e){return c.switch_(a,b,e)}),c.playhead_=c.createPlayhead(a.startTime),c.playheadObservers_=c.createPlayheadObserversForMSE_(),c.playRateController_=new shaka.media.PlayRateController({getRate:function(){return a.mediaElement.playbackRate},setRate:function(b){a.mediaElement.playbackRate=b},movePlayhead:function(b){a.mediaElement.currentTime+=b}}),m=Math.max(c.manifest_.minBufferTime,c.config_.streaming.rebufferingGoal),
989
1001
  c.startBufferManagement_(m),c.streamingEngine_=c.createStreamingEngine(),c.streamingEngine_.configure(c.config_.streaming),c.chooseCodecsAndFilterManifest_(),c.loadMode_=shaka.Player.LoadMode.MEDIA_SOURCE,c.dispatchEvent(new shaka.util.FakeEvent("streaming")),e.yield(c.streamingEngine_.start(),3);case 3:c.config_.streaming.startAtSegmentBoundary&&(n=c.playhead_.getTime(),p=c.adjustStartTime_(n),c.playhead_.setStartTime(p)),c.manifest_.periods.forEach(c.filterNewPeriod_.bind(c)),c.onTracksChanged_(),
990
- c.onAdaptation_(),q=c.getPresentationPeriod_(),t=q.variants.some(function(a){return a.primary}),c.config_.preferredAudioLanguage||t||shaka.log.warning("No preferred audio language set. We will choose an arbitrary language initially"),c.chooseVariant_(q.variants),c.eventManager_.listenOnce(f,"loadeddata",function(){var a=Date.now()/1E3-b.startTimeOfLoad;c.stats_.setLoadLatency(a)}),e.jumpToEnd()}})})};
1002
+ c.onAdaptation_(),q=c.getPresentationPeriod_()||c.manifest_.periods[0],t=q.variants.some(function(a){return a.primary}),c.config_.preferredAudioLanguage||t||shaka.log.warning("No preferred audio language set. We will choose an arbitrary language initially"),c.chooseVariant_(q.variants),c.eventManager_.listenOnce(f,"loadeddata",function(){var a=Date.now()/1E3-b.startTimeOfLoad;c.stats_.setLoadLatency(a)}),e.jumpToEnd()}})})};
991
1003
  shaka.Player.prototype.onInitializeSrcEqualsDrm_=function(a,b){var c=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function e(){var b,g;return $jscomp.generator.createGenerator(e,function(e){switch(e.nextAddress){case 1:return b=shaka.util.ManifestParserUtils.ContentType,goog.asserts.assert(c.networkingEngine_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|"),goog.asserts.assert(c.config_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|"),c.drmEngine_=
992
1004
  c.createDrmEngine({netEngine:c.networkingEngine_,onError:function(a){c.onError_(a)},onKeyStatus:function(a){c.onKeyStatus_(a)},onExpirationUpdated:function(a,b){c.onExpirationUpdated_(a,b)},onEvent:function(a){c.dispatchEvent(a)}}),c.drmEngine_.configure(c.config_.drm),g={id:0,language:"und",primary:!1,audio:null,video:{id:0,originalId:null,createSegmentIndex:Promise.resolve.bind(Promise),findSegmentPosition:function(a){return null},getSegmentReference:function(a){return null},initSegmentReference:null,
993
1005
  presentationTimeOffset:0,mimeType:"video/mp4",codecs:"",encrypted:!0,keyId:null,language:"und",label:null,type:b.VIDEO,primary:!1,trickModeVideo:null,emsgSchemeIdUris:null,roles:[],channelsCount:null,closedCaptions:null},bandwidth:100,drmInfos:[],allowedByApplication:!0,allowedByKeySystem:!0},e.yield(c.drmEngine_.initForPlayback([g],[]),2);case 2:return e.yield(c.drmEngine_.attach(a.mediaElement),0)}})})};
@@ -1052,10 +1064,10 @@ return null};goog.exportProperty(shaka.Player.prototype,"getPresentationStartTim
1052
1064
  goog.exportProperty(shaka.Player.prototype,"getBufferedInfo",shaka.Player.prototype.getBufferedInfo);
1053
1065
  shaka.Player.prototype.getStats=function(){if(this.loadMode_!=shaka.Player.LoadMode.MEDIA_SOURCE&&this.loadMode_!=shaka.Player.LoadMode.SRC_EQUALS)return shaka.util.Stats.getEmptyBlob();this.updateStateHistory_();goog.asserts.assert(this.video_,"If we have stats, we should have video_");var a=this.video_;a.getVideoPlaybackQuality&&(a=a.getVideoPlaybackQuality(),this.stats_.setDroppedFrames(Number(a.droppedVideoFrames),Number(a.totalVideoFrames)));this.loadMode_==shaka.Player.LoadMode.MEDIA_SOURCE&&
1054
1066
  ((a=this.getPresentationVariant_())&&this.stats_.setVariantBandwidth(a.bandwidth),a&&a.video&&this.stats_.setResolution(a.video.width||NaN,a.video.height||NaN),a=this.abrManager_.getBandwidthEstimate(),this.stats_.setBandwidthEstimate(a));return this.stats_.getBlob()};goog.exportProperty(shaka.Player.prototype,"getStats",shaka.Player.prototype.getStats);
1055
- shaka.Player.prototype.addTextTrack=function(a,b,c,d,e,f){var g=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function k(){var l,m,n,p,q,t,r,u,w;return $jscomp.generator.createGenerator(k,function(k){switch(k.nextAddress){case 1:if(g.loadMode_==shaka.Player.LoadMode.SRC_EQUALS)throw shaka.log.error("Cannot add text when loaded with src="),Error("State error!");if(g.loadMode_!=shaka.Player.LoadMode.MEDIA_SOURCE)throw shaka.log.error("Must call load() and wait for it to resolve before adding text tracks."),
1067
+ shaka.Player.prototype.addTextTrack=function(a,b,c,d,e,f){var g=this;return $jscomp.asyncExecutePromiseGeneratorFunction(function k(){var l,m,n,p,q,t,r,u,v;return $jscomp.generator.createGenerator(k,function(k){switch(k.nextAddress){case 1:if(g.loadMode_==shaka.Player.LoadMode.SRC_EQUALS)throw shaka.log.error("Cannot add text when loaded with src="),Error("State error!");if(g.loadMode_!=shaka.Player.LoadMode.MEDIA_SOURCE)throw shaka.log.error("Must call load() and wait for it to resolve before adding text tracks."),
1056
1068
  Error("State error!");l=g.getPresentationPeriod_();m=shaka.util.ManifestParserUtils.ContentType;n=g.manifest_.periods.indexOf(l);p=n+1;q=p>=g.manifest_.periods.length?g.manifest_.presentationTimeline.getDuration():g.manifest_.periods[p].startTime;t=q-l.startTime;if(Infinity==t)throw new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.MANIFEST,shaka.util.Error.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM);r=new shaka.media.SegmentReference(1,0,t,function(){return[a]},
1057
1069
  0,null);u={id:g.nextExternalStreamId_++,originalId:null,createSegmentIndex:Promise.resolve.bind(Promise),findSegmentPosition:function(a){return 1},getSegmentReference:function(a){return 1==a?r:null},initSegmentReference:null,presentationTimeOffset:0,mimeType:d,codecs:e||"",kind:c,encrypted:!1,keyId:null,language:b,label:f||null,type:m.TEXT,primary:!1,trickModeVideo:null,emsgSchemeIdUris:null,roles:[],channelsCount:null,closedCaptions:null};g.loadingTextStreams_.add(u);l.textStreams.push(u);return k.yield(g.streamingEngine_.loadNewTextStream(u),
1058
- 2);case 2:return goog.asserts.assert(l,"The period should still be non-null here."),(w=g.streamingEngine_.getBufferingText())&&g.activeStreams_.useText(l,w),g.loadingTextStreams_["delete"](u),shaka.log.debug("Choosing new streams after adding a text stream"),g.chooseStreamsAndSwitch_(l),g.onTracksChanged_(),k["return"](shaka.util.StreamUtils.textStreamToTrack(u))}})})};goog.exportProperty(shaka.Player.prototype,"addTextTrack",shaka.Player.prototype.addTextTrack);
1070
+ 2);case 2:return goog.asserts.assert(l,"The period should still be non-null here."),(v=g.streamingEngine_.getBufferingText())&&g.activeStreams_.useText(l,v),g.loadingTextStreams_["delete"](u),shaka.log.debug("Choosing new streams after adding a text stream"),g.chooseStreamsAndSwitch_(l),g.onTracksChanged_(),k["return"](shaka.util.StreamUtils.textStreamToTrack(u))}})})};goog.exportProperty(shaka.Player.prototype,"addTextTrack",shaka.Player.prototype.addTextTrack);
1059
1071
  shaka.Player.prototype.setMaxHardwareResolution=function(a,b){this.maxHwRes_.width=a;this.maxHwRes_.height=b};goog.exportProperty(shaka.Player.prototype,"setMaxHardwareResolution",shaka.Player.prototype.setMaxHardwareResolution);shaka.Player.prototype.retryStreaming=function(){return this.loadMode_==shaka.Player.LoadMode.MEDIA_SOURCE?this.streamingEngine_.retry():!1};goog.exportProperty(shaka.Player.prototype,"retryStreaming",shaka.Player.prototype.retryStreaming);
1060
1072
  shaka.Player.prototype.getManifest=function(){return this.manifest_};goog.exportProperty(shaka.Player.prototype,"getManifest",shaka.Player.prototype.getManifest);shaka.Player.prototype.getManifestParserFactory=function(){return this.parser_?this.parser_.constructor:null};goog.exportProperty(shaka.Player.prototype,"getManifestParserFactory",shaka.Player.prototype.getManifestParserFactory);
1061
1073
  shaka.Player.prototype.addVariantToSwitchHistory_=function(a,b,c){this.activeStreams_.useVariant(a,b);this.stats_.getSwitchHistory().updateCurrentVariant(b,c)};shaka.Player.prototype.addTextStreamToSwitchHistory_=function(a,b,c){this.activeStreams_.useText(a,b);this.stats_.getSwitchHistory().updateCurrentText(b,c)};
@@ -1200,22 +1212,18 @@ shaka.polyfill.PatchedMediaKeysApple.MediaKeys.prototype.setServerCertificate=fu
1200
1212
  shaka.polyfill.PatchedMediaKeysApple.MediaKeys.prototype.setMedia=function(a){var b=this,c=shaka.polyfill.PatchedMediaKeysApple;this.eventManager_.removeAll();if(!a)return Promise.resolve();this.eventManager_.listen(a,"webkitneedkey",c.onWebkitNeedKey_);try{return 1<=a.readyState?a.webkitSetMediaKeys(this.nativeMediaKeys_):this.eventManager_.listenOnce(a,"loadedmetadata",function(){a.webkitSetMediaKeys(b.nativeMediaKeys_)}),Promise.resolve()}catch(d){return Promise.reject(d)}};
1201
1213
  shaka.polyfill.PatchedMediaKeysApple.MediaKeySession=function(a,b){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession");shaka.util.FakeEventTarget.call(this);this.nativeMediaKeySession_=null;this.nativeMediaKeys_=a;this.updatePromise_=this.generateRequestPromise_=null;this.eventManager_=new shaka.util.EventManager;this.sessionId="";this.expiration=NaN;this.closed=new shaka.util.PublicPromise;this.keyStatuses=new shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap};
1202
1214
  goog.inherits(shaka.polyfill.PatchedMediaKeysApple.MediaKeySession,shaka.util.FakeEventTarget);
1203
- shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.generateRequest=function(a,b){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.generateRequest");this.generateRequestPromise_=new shaka.util.PublicPromise;try{this.nativeMediaKeySession_=this.nativeMediaKeys_.createSession("video/mp4",new Uint8Array(b)),this.eventManager_.listen(this.nativeMediaKeySession_,"webkitkeymessage",this.onWebkitKeyMessage_.bind(this)),this.eventManager_.listen(this.nativeMediaKeySession_,"webkitkeyadded",
1204
- this.onWebkitKeyAdded_.bind(this)),this.eventManager_.listen(this.nativeMediaKeySession_,"webkitkeyerror",this.onWebkitKeyError_.bind(this)),this.updateKeyStatus_("status-pending")}catch(c){this.generateRequestPromise_.reject(c)}return this.generateRequestPromise_};shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.load=function(){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.load");return Promise.reject(Error("MediaKeySession.load not yet supported"))};
1215
+ shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.generateRequest=function(a,b){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.generateRequest");this.generateRequestPromise_=new shaka.util.PublicPromise;try{this.nativeMediaKeySession_=this.nativeMediaKeys_.createSession("video/mp4",new Uint8Array(b)),this.sessionId=this.nativeMediaKeySession_.sessionId||"",this.eventManager_.listen(this.nativeMediaKeySession_,"webkitkeymessage",this.onWebkitKeyMessage_.bind(this)),this.eventManager_.listen(this.nativeMediaKeySession_,
1216
+ "webkitkeyadded",this.onWebkitKeyAdded_.bind(this)),this.eventManager_.listen(this.nativeMediaKeySession_,"webkitkeyerror",this.onWebkitKeyError_.bind(this)),this.updateKeyStatus_("status-pending")}catch(c){this.generateRequestPromise_.reject(c)}return this.generateRequestPromise_};shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.load=function(){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.load");return Promise.reject(Error("MediaKeySession.load not yet supported"))};
1205
1217
  shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.update=function(a){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.update");this.updatePromise_=new shaka.util.PublicPromise;try{this.nativeMediaKeySession_.update(new Uint8Array(a))}catch(b){this.updatePromise_.reject(b)}return this.updatePromise_};
1206
1218
  shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.close=function(){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.close");try{this.nativeMediaKeySession_.close(),this.closed.resolve(),this.eventManager_.removeAll()}catch(a){this.closed.reject(a)}return this.closed};shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.remove=function(){shaka.log.debug("PatchedMediaKeysApple.MediaKeySession.remove");return Promise.reject(Error("MediaKeySession.remove is only applicable for persistent licenses, which are not supported on this platform"))};
1207
- shaka.polyfill.PatchedMediaKeysApple.rebuildInitData_=function(a,b){var c=new Uint8Array(a);if((new DataView(c.buffer)).getUint32(0,!0)+4!=c.byteLength)throw Error("Malformed init data!");var d=shaka.util.StringUtils.fromUTF16(c.slice(4),!0);d=(new goog.Uri(d)).getDomain();d=new Uint8Array(shaka.util.StringUtils.toUTF16(d,!0));var e=new Uint8Array(c.byteLength+4+d.byteLength+4+b.byteLength),f=0,g=function(a){(new DataView(e.buffer)).setUint32(f,a.byteLength,!0);f+=4;e.set(a,f);f+=a.byteLength};e.set(c,
1208
- f);f+=c.byteLength;g(d);g(new Uint8Array(b));return e};
1209
- shaka.polyfill.PatchedMediaKeysApple.onWebkitNeedKey_=function(a){shaka.log.debug("PatchedMediaKeysApple.onWebkitNeedKey_",a);var b=shaka.polyfill.PatchedMediaKeysApple,c=this.mediaKeys;goog.asserts.assert(c instanceof b.MediaKeys,"non-polyfill instance of newMediaKeys");goog.asserts.assert(null!=a.initData,"missing init data!");c=c.certificate;goog.asserts.assert(null!=c,"missing certificate!");var d=new Event("encrypted");d.initDataType="cenc";d.initData=b.rebuildInitData_(a.initData,c);this.dispatchEvent(d)};
1219
+ shaka.polyfill.PatchedMediaKeysApple.onWebkitNeedKey_=function(a){shaka.log.debug("PatchedMediaKeysApple.onWebkitNeedKey_",a);goog.asserts.assert(this.mediaKeys instanceof shaka.polyfill.PatchedMediaKeysApple.MediaKeys,"non-polyfill instance of newMediaKeys");goog.asserts.assert(null!=a.initData,"missing init data!");var b=new Event("encrypted");b.initDataType="cenc";b.initData=a.initData;this.dispatchEvent(b)};
1210
1220
  shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.onWebkitKeyMessage_=function(a){shaka.log.debug("PatchedMediaKeysApple.onWebkitKeyMessage_",a);goog.asserts.assert(this.generateRequestPromise_,"generateRequestPromise_ should be set before now!");this.generateRequestPromise_&&(this.generateRequestPromise_.resolve(),this.generateRequestPromise_=null);var b=void 0==this.keyStatuses.getStatus();a=new shaka.util.FakeEvent("message",{messageType:b?"license-request":"license-renewal",message:a.message.buffer});
1211
1221
  this.dispatchEvent(a)};shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.onWebkitKeyAdded_=function(a){shaka.log.debug("PatchedMediaKeysApple.onWebkitKeyAdded_",a);goog.asserts.assert(!this.generateRequestPromise_,"Key added during generate!");goog.asserts.assert(this.updatePromise_,"updatePromise_ should be set before now!");this.updatePromise_&&(this.updateKeyStatus_("usable"),this.updatePromise_.resolve(),this.updatePromise_=null)};
1212
1222
  shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.onWebkitKeyError_=function(a){shaka.log.debug("PatchedMediaKeysApple.onWebkitKeyError_",a);a=Error("EME PatchedMediaKeysApple key error");a.errorCode=this.nativeMediaKeySession_.error;if(null!=this.generateRequestPromise_)this.generateRequestPromise_.reject(a),this.generateRequestPromise_=null;else if(null!=this.updatePromise_)this.updatePromise_.reject(a),this.updatePromise_=null;else switch(this.nativeMediaKeySession_.error.code){case WebKitMediaKeyError.MEDIA_KEYERR_OUTPUT:case WebKitMediaKeyError.MEDIA_KEYERR_HARDWARECHANGE:this.updateKeyStatus_("output-not-allowed");
1213
1223
  break;default:this.updateKeyStatus_("internal-error")}};shaka.polyfill.PatchedMediaKeysApple.MediaKeySession.prototype.updateKeyStatus_=function(a){this.keyStatuses.setStatus(a);a=new shaka.util.FakeEvent("keystatuseschange");this.dispatchEvent(a)};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap=function(){this.size=0;this.status_=void 0};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.setStatus=function(a){this.size=void 0==a?0:1;this.status_=a};
1214
1224
  shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.getStatus=function(){return this.status_};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.forEach=function(a){this.status_&&a(this.status_,shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.KEY_ID_)};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.get=function(a){if(this.has(a))return this.status_};
1215
1225
  shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.has=function(a){var b=shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.KEY_ID_;return this.status_&&shaka.util.Uint8ArrayUtils.equal(new Uint8Array(a),new Uint8Array(b))?!0:!1};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.entries=function(){goog.asserts.assert(!1,"Not used! Provided only for the compiler.")};
1216
- shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.keys=function(){goog.asserts.assert(!1,"Not used! Provided only for the compiler.")};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.values=function(){goog.asserts.assert(!1,"Not used! Provided only for the compiler.")};shaka.polyfill.register(shaka.polyfill.PatchedMediaKeysApple.install);shaka.util.Pssh=function(a){this.systemIds=[];this.cencKeyIds=[];this.dataBoundaries=[];(new shaka.util.Mp4Parser).fullBox("pssh",this.parseBox_.bind(this)).parse(a.buffer);0==this.dataBoundaries.length&&shaka.log.warning("No pssh box found!")};
1217
- shaka.util.Pssh.prototype.parseBox_=function(a){goog.asserts.assert(null!=a.version,"PSSH boxes are full boxes and must have a valid version");goog.asserts.assert(null!=a.flags,"PSSH boxes are full boxes and must have a valid flag");if(1<a.version)shaka.log.warning("Unrecognized PSSH version found!");else{var b=shaka.util.Uint8ArrayUtils.toHex(a.reader.readBytes(16)),c=[];if(0<a.version)for(var d=a.reader.readUint32(),e=0;e<d;++e){var f=shaka.util.Uint8ArrayUtils.toHex(a.reader.readBytes(16));c.push(f)}d=
1218
- a.reader.readUint32();a.reader.skip(d);this.cencKeyIds.push.apply(this.cencKeyIds,c);this.systemIds.push(b);this.dataBoundaries.push({start:a.start,end:a.start+a.size-1});a.reader.getPosition()!=a.reader.getLength()&&shaka.log.warning("Mismatch between box size and data size!")}};shaka.polyfill.PatchedMediaKeysMs={};
1226
+ shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.keys=function(){goog.asserts.assert(!1,"Not used! Provided only for the compiler.")};shaka.polyfill.PatchedMediaKeysApple.MediaKeyStatusMap.prototype.values=function(){goog.asserts.assert(!1,"Not used! Provided only for the compiler.")};shaka.polyfill.register(shaka.polyfill.PatchedMediaKeysApple.install);shaka.polyfill.PatchedMediaKeysMs={};
1219
1227
  shaka.polyfill.PatchedMediaKeysMs.install=function(){if(window.HTMLVideoElement&&window.MSMediaKeys&&(!navigator.requestMediaKeySystemAccess||!MediaKeySystemAccess.prototype.getConfiguration)){shaka.log.info("Using ms-prefixed EME v20140218");var a=shaka.polyfill.PatchedMediaKeysMs;a.MediaKeyStatusMap.KEY_ID_=(new Uint8Array([0])).buffer;delete HTMLMediaElement.prototype.mediaKeys;HTMLMediaElement.prototype.mediaKeys=null;HTMLMediaElement.prototype.setMediaKeys=a.setMediaKeys;window.MediaKeys=a.MediaKeys;
1220
1228
  window.MediaKeySystemAccess=a.MediaKeySystemAccess;navigator.requestMediaKeySystemAccess=a.requestMediaKeySystemAccess}};shaka.polyfill.PatchedMediaKeysMs.requestMediaKeySystemAccess=function(a,b){shaka.log.debug("PatchedMediaKeysMs.requestMediaKeySystemAccess");goog.asserts.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');var c=shaka.polyfill.PatchedMediaKeysMs;try{var d=new c.MediaKeySystemAccess(a,b);return Promise.resolve(d)}catch(e){return Promise.reject(e)}};
1221
1229
  shaka.polyfill.PatchedMediaKeysMs.MediaKeySystemAccess=function(a,b){shaka.log.debug("PatchedMediaKeysMs.MediaKeySystemAccess");this.keySystem=a;for(var c=!1,d=0;d<b.length;++d){var e=b[d],f={audioCapabilities:[],videoCapabilities:[],persistentState:"optional",distinctiveIdentifier:"optional",initDataTypes:e.initDataTypes,sessionTypes:["temporary"],label:e.label},g=!1;if(e.audioCapabilities)for(var h=0;h<e.audioCapabilities.length;++h){var k=e.audioCapabilities[h];if(k.contentType){g=!0;var l=k.contentType.split(";")[0];
@@ -1232,8 +1240,8 @@ this.eventManager_.listen(this.nativeMediaKeySession_,"mskeyerror",this.onMsKeyE
1232
1240
  shaka.polyfill.PatchedMediaKeysMs.MediaKeySession.prototype.update=function(a){shaka.log.debug("PatchedMediaKeysMs.MediaKeySession.update");this.updatePromise_=new shaka.util.PublicPromise;try{this.nativeMediaKeySession_.update(new Uint8Array(a))}catch(b){this.updatePromise_.reject(b)}return this.updatePromise_};
1233
1241
  shaka.polyfill.PatchedMediaKeysMs.MediaKeySession.prototype.close=function(){shaka.log.debug("PatchedMediaKeysMs.MediaKeySession.close");try{this.nativeMediaKeySession_.close(),this.closed.resolve(),this.eventManager_.removeAll()}catch(a){this.closed.reject(a)}return this.closed};shaka.polyfill.PatchedMediaKeysMs.MediaKeySession.prototype.remove=function(){shaka.log.debug("PatchedMediaKeysMs.MediaKeySession.remove");return Promise.reject(Error("MediaKeySession.remove is only applicable for persistent licenses, which are not supported on this platform"))};
1234
1242
  shaka.polyfill.PatchedMediaKeysMs.onMsNeedKey_=function(a){shaka.log.debug("PatchedMediaKeysMs.onMsNeedKey_",a);if(a.initData){var b=shaka.polyfill.PatchedMediaKeysMs,c=document.createEvent("CustomEvent");c.initCustomEvent("encrypted",!1,!1,null);c.initDataType="cenc";c.initData=b.normaliseInitData_(a.initData);this.dispatchEvent(c)}};
1235
- shaka.polyfill.PatchedMediaKeysMs.normaliseInitData_=function(a){if(!a)return a;var b=new shaka.util.Pssh(a);if(1>=b.dataBoundaries.length)return a;for(var c=[],d=0;d<b.dataBoundaries.length;d++){var e=a.subarray(b.dataBoundaries[d].start,b.dataBoundaries[d].end+1);c.push(e)}a=[];b={};d=$jscomp.makeIterator(c);for(c=d.next();!c.done;b={initData$247:b.initData$247},c=d.next())b.initData$247=c.value,a.some(function(a){return function(b){return shaka.util.Uint8ArrayUtils.equal(b,a.initData$247)}}(b))||
1236
- a.push(b.initData$247);b=0;d=$jscomp.makeIterator(a);for(c=d.next();!c.done;c=d.next())b+=c.value.length;b=new Uint8Array(b);d=0;a=$jscomp.makeIterator(a);for(c=a.next();!c.done;c=a.next())c=c.value,b.set(c,d),d+=c.length;return b};
1243
+ shaka.polyfill.PatchedMediaKeysMs.normaliseInitData_=function(a){if(!a)return a;var b=new shaka.util.Pssh(a);if(1>=b.dataBoundaries.length)return a;for(var c=[],d=0;d<b.dataBoundaries.length;d++){var e=a.subarray(b.dataBoundaries[d].start,b.dataBoundaries[d].end+1);c.push(e)}a=[];b={};d=$jscomp.makeIterator(c);for(c=d.next();!c.done;b={initData$248:b.initData$248},c=d.next())b.initData$248=c.value,a.some(function(a){return function(b){return shaka.util.Uint8ArrayUtils.equal(b,a.initData$248)}}(b))||
1244
+ a.push(b.initData$248);b=0;d=$jscomp.makeIterator(a);for(c=d.next();!c.done;c=d.next())b+=c.value.length;b=new Uint8Array(b);d=0;a=$jscomp.makeIterator(a);for(c=a.next();!c.done;c=a.next())c=c.value,b.set(c,d),d+=c.length;return b};
1237
1245
  shaka.polyfill.PatchedMediaKeysMs.MediaKeySession.prototype.onMsKeyMessage_=function(a){shaka.log.debug("PatchedMediaKeysMs.onMsKeyMessage_",a);goog.asserts.assert(this.generateRequestPromise_,"generateRequestPromise_ not set in onMsKeyMessage_");this.generateRequestPromise_&&(this.generateRequestPromise_.resolve(),this.generateRequestPromise_=null);var b=void 0==this.keyStatuses.getStatus();a=new shaka.util.FakeEvent("message",{messageType:b?"license-request":"license-renewal",message:a.message.buffer});
1238
1246
  this.dispatchEvent(a)};
1239
1247
  shaka.polyfill.PatchedMediaKeysMs.MediaKeySession.prototype.onMsKeyAdded_=function(a){shaka.log.debug("PatchedMediaKeysMs.onMsKeyAdded_",a);this.generateRequestPromise_?(shaka.log.debug("Simulating completion for a PR persistent license."),goog.asserts.assert(!this.updatePromise_,"updatePromise_ and generateRequestPromise_ set in onMsKeyAdded_"),this.updateKeyStatus_("usable"),this.generateRequestPromise_.resolve(),this.generateRequestPromise_=null):(goog.asserts.assert(this.updatePromise_,"updatePromise_ not set in onMsKeyAdded_"),