Before there were two style to indent comments after an annotation,
using 2 and 4 spaces. Now this only uses 2 spaces.
Change-Id: Id06415d7193cc154a2768fb3932aff7a06b7ed32
Instead of rejecting Promises with either exceptions or empty error
events, build full Error objects in MediaSourceEngine.
Change-Id: Ib4317f0ffe66c0292b3560f89f7a07e74e474dd3
Key system negotiation was failing on Edge 13 when there were multiple
entries in the capabilities array. From now on, we will not include
codec strings in the capabilities array and we will not include
duplicate entries.
Change-Id: I3edd7c6d1f629767a0fe8c37479f3edc538e7223
We should tolerate small overlaps between segments due to rounding
errors. This fixes playback of several pieces of content.
Change-Id: I420e7ab3a5b0f72abeb43639d9dbb3bcbf5e4ef9
The scheduling of updates was causing the StreamingEngine high
playback rate test to fail miserably on Edge. Not scheduling updates
is actually much more resilient, as well as simpler.
This has been tested at rates up to 10x.
Change-Id: Iaad4df6b7d68b61b62dedcf08b7017ea7d74a596
Fixes the following issues:
=====
lib/player.js:106: ERROR - Property id never defined on TextTrack
lib/util/xml_utils.js:42: ERROR - inconsistent return type
found : (Node|null)
required: (Element|null)
lib/dash/content_protection.js:256: ERROR - Parameter must have JSDoc.
function(element) {
lib/dash/content_protection.js:284: ERROR - Parameter must have JSDoc.
function(elem) {
lib/media/drm_engine.js:47: ERROR - Private property configuration_ is never read
lib/polyfill/patchedmediakeys_20140218.js:269: ERROR - Private property keySystem_ is never read
lib/polyfill/patchedmediakeys_20140218.js:389: ERROR - Private property type_ is never read
lib/util/language_utils.js:84: ERROR - The value 0.0 is duplicated in this enum.
MIN: 0, MAX: 2
lib/util/language_utils.js:84: ERROR - The value 2.0 is duplicated in this enum.
MIN: 0, MAX: 2
demo/assets.js:171: ERROR - Value assigned to local variable headers is never read
lib/dash/content_protection.js:188: ERROR - Value assigned to local variable repUnknown is never read
lib/dash/dash_parser.js:400: ERROR - Value assigned to local variable suggestedDelay is never read
lib/dash/segment_base.js:41: ERROR - Value assigned to local variable SegmentBase is never read
lib/dash/segment_template.js:291: ERROR - Value assigned to local variable periodStart is never read
lib/media/drm_engine.js:172: ERROR - Value assigned to local variable onEncrypted is never read
test/dash_parser_live_unit.js:358: ERROR - Value assigned to local variable manifest is never read
test/drm_engine_unit.js:383: ERROR - Value assigned to local variable cert1 is never read
test/drm_engine_unit.js:384: ERROR - Value assigned to local variable cert2 is never read
test/media_source_engine_unit.js:24: ERROR - Value assigned to local variable dummyData is never read
test/media_source_engine_unit.js:504: ERROR - Value assigned to local variable p2 is never read
test/media_source_engine_unit.js:505: ERROR - Value assigned to local variable p3 is never read
test/media_source_engine_unit.js:506: ERROR - Value assigned to local variable p4 is never read
test/media_source_engine_unit.js:535: ERROR - Value assigned to local variable p2 is never read
test/media_source_engine_unit.js:601: ERROR - Value assigned to local variable p2 is never read
test/media_source_engine_unit.js:602: ERROR - Value assigned to local variable p3 is never read
test/media_source_engine_unit.js:603: ERROR - Value assigned to local variable p4 is never read
test/media_source_engine_unit.js:632: ERROR - Value assigned to local variable p2 is never read
test/mpd_utils_unit.js:20: ERROR - Value assigned to local variable HUGE_NUMBER_STRING is never read
test/streaming_engine_integration.js:55: ERROR - Value assigned to local variable onSeek is never read
test/streaming_engine_unit.js:1263: ERROR - Value assigned to local variable reportedContentType is never read
test/streaming_engine_unit.js:1264: ERROR - Value assigned to local variable reportedPeriodIndex is never read
test/streaming_engine_unit.js:1540: ERROR - Value assigned to local variable size is never read
test/util/dash_parser_util.js:77: ERROR - Value assigned to local variable retry is never read
test/util/dash_parser_util.js💯 ERROR - Value assigned to local variable retry is never read
test/vtt_text_parser_unit.js:272: ERROR - Value assigned to local variable result is never read
Change-Id: I707700250541e04ccbfe81d7298b3f0c5a82dcdc
DrmEngine sets mediaKeys to null, but this only works after the video
src has been cleared. Not doing this results in a video element which
cannot be reused.
Change-Id: I1015fd6e5f39e0bdd6e5d7b33881445258ceaf9d
Referencing node in the default customScheme keeps the parameter from
being removed by the compiler. This is needed for the function length
check in mergeConfigObjects_() to pass in compiled mode.
Change-Id: Iaf5d0d0968ea8aecdbb8e503011689382aff12c3
We will now default start time to the end of the seekable range only
if the duration is infinite. This fixes playback of static, VOD
assets with availabilityStartTime.
Change-Id: I9f511678f767375d41d98260cc519dc84566538b
There were several situations where if stop() was called while an
update was occurring then it would either fail or continue to update.
This fixes those and also adds more tests for these cases.
Change-Id: I652198d289f65e60647a8d2aac00185cab43dead
This broke in 9d70cad0 when we simplified FakeEvent and
FakeEventTarget. Now that FakeEvents are no longer based on real
Events, we cannot dispatch a FakeEvent from a real EventTarget on
IE.
Change-Id: I81635ef40ac627cf757a87c12b3a5a94068a0ad8
We now avoid tricky things like CustomEvent and setting properties on
native Events. This gives us better cross-browser compatibility and
less complexity.
Change-Id: Idc9fcc69c33257e4540d956bcbc949de6d992cf0
Before, we would squash AdaptationSets that belong to the same group.
However, this is incorrect. Now it squashes AdaptationSets according
to the AdaptationSetSwitching info.
Closes#293
Change-Id: I2f7e37aa797d1fd8f453a924c0b0c9682fd84505
This properly externalizes manifest parsers so that they can be
implemented in application-space. This also moves all parameters
from the factory function to start().
Change-Id: I66801bc1cb13214d576e0043cebc2d9b9cb5a641
Each category now has its own range of 1000 error codes. Using codes
in the thousands rather than the hundreds will help avoid confusion
between our error codes and HTTP error codes.
Change-Id: I8defd0ecbbbff7ef1b06e18419f29f16a85b2555
Before, we simply converted each byte from an ArrayBuffer into a
character; however, this is only valid for ASCII characters. This
changes it to fully support UTF-8 encoded network responses.
Change-Id: I9c49f29b09960501d345b98aa7af1bb711972abf
Some failure scenarios resulted in success on Edge 12.
It seems that calling reject() followed by resolve() in a Promise
constructor was resulting in a resolved Promise on Edge 12.
Change-Id: I353d37f34be59c4535a11eb6c181bfa3d320c52d
The use of strings as indexers in the DASH manifest parser would
not work when the library is compiled. This fixes it as well as
adding type-safety to those parts.
Change-Id: Id07068bc0eefdab4730dadc114e66b661cd4bb3e
* Replace onBufferNewPeriod() with onChooseStreams().
* Remove newPeriod()
* When transitioning Periods, only call onChooseStreams(p) once
Period p has been setup.
* Refactor documentation.
Change-Id: Ic341dd018302bf46fdd071072e5facb0e0fccb3b
This adds a fudge to appendWindowEnd so that the final frame in a
period won't be dropped and a gap will not appear between periods.
Change-Id: I9ded5237c949a3bae7e2c4081b32fa33938d9583
This changes the text APIs to correctly handle buffered ranges of
segmented text.
b/25517444
Related to issue #150
Change-Id: I3a11b87e8d93376a5012566deb3bf0d015f52391
In Safari 8, the necessary fudge is 1us.
In Safari 9, the necessary fudge is 1us + 1femtosecond.
This makes the fudge value 0.1ms.
Change-Id: I7184c2d1c28ccbd93bac137d6617cbd8999bcfb9
* Tidy up unit tests, and add more eviction tests and drift tests.
* Add integration tests.
* Handle end-of-stream and end-of-Period scenarios when segments
are not perfectly aligned to Period boundaries.
* Use segment receipts to determine which segment to buffer next.
* Handle drift with eviction and other drift corner cases.
* Handle additional errors and improve overall robustness.
Change-Id: Ib57a255cda7a6e8c5857eb82accc14697983b893
This fixes the ContentProtection parsing to support non-IOP-compliant
manifests. This enables the unit tests for it, as well as adding
several more.
b/26982075
Change-Id: I0da2dbaa24ea2a6acf657b97f0a2e2d24ee3a16d
Sometimes the calculated $Time$ value is not an integer due to
floating-point rounding errors, but the $Time$ value filled into the
template must be an integer.
Change-Id: I5e61ac5143222620e8b5e1dfeb1847241c6a6876
It is the more common case for SegmentBase if the init segment comes
from the same URL as the media segments.
Change-Id: Ia9993471c892e103929729e2d496e0bc2f836b88
This also changes from using Node types to using Element types. This
is more correct since the code only deals with XML elements and not
with other Node types (e.g. text content nodes).
Change-Id: I0e8c7bf2adc1800a494e575b16661e8c69a7deb0