This brings our externs in line with newer versions of the Closure
Compiler, where BufferSource is both defined and defaults to
non-nullable.
b/21559591
Change-Id: I5d51043e54b1b3490c25c4bb362025fa51260c07
This updates the extern for Promise.prototype.catch to match the ES6
Promise externs in newer versions of the Closure Compiler.
b/21559591
Change-Id: I796d8293f7be3170e465eaf3f30ceb8c9c5698b6
This suppression no longer works on this scope in newer versions of
the Closure compiler. In any case, making the assertions in the
class that owns those members is a better design.
b/21559591
Change-Id: I27696b3fd3c5a87bb595e5c6952ca7a523132f5f
* Make the order of properties consistent between
AdaptationSet and StreamSetInfo.
* Mark all MPD related constructors as @struct.
Change-Id: I7016aafb0bf073e6e4972b34e267ad6ef87f810c
The audioRobustness and videoRobustness properties were getting
compiled out because they were being used like dictionary keys.
Change-Id: I7a2fea7f439c6540bc45126f550eae53858f7f4e
Previously, a SegmentList with a single URL resulted in a reference
with no end time. Now the library can correctly deduce the end time
of a one-reference SegmentList.
Change-Id: Ia4ed3895e8b3c5da3e8713d944090bbab579f3de
This is a more thorough fix for multiple encrypted audio tracks.
Rather than taking all matches for key system and codec, take one
match per AdaptationSet. Now if there are multiple usable
DrmSchemeInfos for the same language, only one will be chosen per
language.
This makes the system more resiliant to ContentProtection callbacks
that ignore all input and return the same DrmSchemeInfo no matter
what.
Fixes#112
Change-Id: I9ed37ba1afdaec6bb5d8abaf285cb36b6e2a3db6
When our assertion on stream limits fails, the debug code below it
was causing an exception, which broke other things.
This change keeps the original problem from triggering others.
Change-Id: Iacaf5be0134e6c6e0de2b25869013adeba62ba2a
* Move seek range updates into SegmentIndex implementations
and StreamVideoSource.
* Remove unnecessary sub-class hooks from StreamVideoSource.
* Remove internal LiveSegmentIndex timer: do SegmentReference eviction
and generation on demand.
* Rework Stream startup again: consider Streams as started when they
have buffered some minimum amount of content. As part of this, only
apply a timestamp correction to the SBM when the streams have started.
* Defer stream switches until all SegmentIndexes have been corrected.
* Partially revert optimistic "bufferedAhead" calculations in Stream:
check if we've buffered enough content at least every second.
* Make LiveSegmentIndex more robust against a "wrong"
@availabilityStartTime.
* Fix a bug where a positive timestamp correction would trigger an extra
Stream resync.
* Fix a bug in evict_() where the first segment would never get evicted.
* Check stream started conditions in onUpdate_ instead of after a segment
has been inserted.
* Tidy-up immediate/clearBuffer naming and other comments.
Closes#51Closes#109
Change-Id: Ic6f0b96065d3c5dfb5c03ca1c52363bd77b22875
EmeManager should not stop at the first match, since this results in
only one language for multi-lingual content.
Fixes#112
Change-Id: I90109f53e4da38ac0fddc67476b7caab0c852381
Reflect modifications made in ISO/IEC 23009-1:2014/Cor 1:2015:
allow @startNumber to be 0 and compute the $Time$ placeholder using
the segment number relative to the start of the Period.
Closes#10
Change-Id: I4a9b0e4e3593c01e2e8d42a74572e78b9fba50d9
Adds an API to IBandwithEstimator to enable BandwithEstimator
implementations to allow/disallow caching.
Issue #76
Change-Id: I842994981a0821e22de412478f094850414b6289
This reverts commit 93aa2ed0e8,
which broke live streaming.
To reproduce, use: spec_runner.html?spec=Player%20live
Change-Id: I734f36cfc1226d34058e70b723e53d607664fb53
* Allow segments from different streams (Representations) to coexist
in buffer.
* Only fetch a single segment at a time.
* Remove id field from SegmentReference and remove SegmentRange.
* Only start the Streams once the buffer is "full".
* Stop DashVideoSource from triggering an extra resync during startup.
* Make Task.abort call order deterministic.
A follow-up patch is required to handle certain seek patterns in
live streams.
Issue #51
Change-Id: Ib7c9021471f1ed89323f19764463202b119cb491
* Check each member in DrmSchemeInfo.combine().
* Modify the resulting DrmSchemeInfo in-place.
Closes#96
Change-Id: I5eddb29966c4b2ad39f4140c3c87dca96aee28f8
This patch reworks SegmentIndexes so that any SegmentReference they
contain is guaranteed to be available. This makes SegmentIndexes work
consistently between static content and live content (specifically
content specified using SegmentTemplate with @duration).
* Rework StreamInfo to use a ISegmentIndexSource and a ISegmentInitSource,
which construct a SegmentIndex and an intiailization segment
respectively.
* Make ManifestInfo destructible and various async operations in
StreamVideoSource safer.
* Introduce LiveSegmentIndex, which manages SegmentReference eviction.
* Introduce DynamicLiveSegmentIndex, which manages SegmentReference
eviction and generation.
* Implement improved segment availability logic for segment eviction.
* Move SegmentIndex construction from MpdProcessor to several
ISegmentIndexSource implementations.
* Use a SegmentIndex to represent subtitles to simplify Stream creation
in StreamVideoSource.
* Move manifest update code from StreamVideoSource to ManifestUpdater.
* Move PeriodInfo.duration determination in MpdProcessor to StreamVideoSource.
* Since "forced" manifest updates are no longer required for content
specified using SegmentTemplate with @duration, simplify manifest update
code in DashVideoSource.
* Make Stream continue to update even if it runs out of
SegmentReferences, this simplifies previous resync logic and makes
DynamicLiveSegmentIndex work seamlessly.
* Refactor SegmentIndex and initialization fetch code in ContentDatabase.
* Download all SegmentIndexes in the background after the initial streams
have started.
Follow up work is required to remove seek range logic from
DashVideoSource.
Change-Id: I4a908195aba632a911a6e55213fc41d41428162b
Allow applications to pre-process license requests; also makes
the license post-processor an optional parameter.
Closes#62
Change-Id: Idb57f101c3a5f08da85d37ec7e252ffca886a6ae
This allows an applications to set distinctiveIdentifier,
persistentState, and robustness when the player calls
requestMediaKeySystemAccess().
Change-Id: I1c2f035cfacbf45c8e718fb31c5c0c9a8e55d72b
This is inteded to fix a couple of the load-time exceptions seen
when loading the library on IE9. Eliminating load-time exceptions
will make it possible to use isBrowserSupported() as intended, to
avoid use of the library on older browsers.
Issue #87
Change-Id: I993d4f955e80a7401bea182ae90df43a8a022ca2
I was seeing errors in the integration tests due to setMediaKeys not
finishing before the next test was started. This ensures that the
mediaKeys will be null before each new test run.
Change-Id: Iaaa9dea67b315b1a91ec83668fb0ed9ffaa3f087
Fix the definition of expiration to be consistent with the details in
w3c/encrypted-media#58 . In particular, never use infinity.
This means using key status to check if a session is new, rather than
comparing the expiration time to NaN.
Change-Id: Ib1917a34d4dfd0fd29b1c578c6ce60fd996c2698