Originally, docs were slow to build, and many people did not need a
local copy. Now, building the docs is fast, and doing everything as
part of "all" is less surprising.
Closes#1421
Change-Id: I5ac254df9d2beca8c1c5898614782a81e662a0e9
According to @beaufortfrancois, we should no longer be using protocol-
relative URIs. He quotes this passage from Paul Irish:
> Now that SSL is encouraged for everyone and doesn’t have performance
> concerns, this technique is now an anti-pattern. If the asset you
> need is available on SSL, then always use the https:// asset.
> Allowing the snippet to request over HTTP opens the door for attacks
> like the recent Github Man-on-the-side attack. It’s always safe to
> request HTTPS assets even if your site is on HTTP, however the
> reverse is not true.
Source: https://www.paulirish.com/2010/the-protocol-relative-url/
This change was begun with the following command:
git grep -l "'//" | xargs sed -i "s@'//@'https://@g"
Some changes made by that command were false-positives, which I then
reverted manually. Others required additional cleanup to meet style
rules.
I've also just discovered that the "max-len" rule in eslint's Google
style config exempts URIs, so there's no need to disable the max-len
rule on URIs in the assets list. These have been removed in the asset
list where unnecessary.
Finally, testing these updated URIs led to the discovery that two of
our third-party demo assets are no longer available. One URI needed
to be updated. The other had no obvious replacement, so it was
removed.
Closes#1390
Change-Id: I2fe23faec04f1904c1741236b364d5089900092a
This updates the existing diagrams and adds new ones for cast and
offline. The offline diagrams will need to be updated again after
we resolve#1248.
Closes#1197
Change-Id: I6b6b1fac732b4997c579f58c7f12f0f84f202380
Now each EME polyfill can be removed independently; this allows
someone to remove just the IE11 polyfill while still keeping the
others.
This adds a priority ordering to the polyfills so the nop polyfill
will be run last as a fallback if there are no other polyfills.
Issue #1261
Change-Id: I865e1c0d6a73a079dd91505e96572e215e6f6c6a
This adds a new script which should simplify the process of installing
prereqs on Debian and Ubuntu-based Linux distributions. This also
updates the required versions of NodeJS and Git.
Closes#1175
Change-Id: If298cc46650bfd0ebe726c8fa3184dd0d063bfaf
Instead of using the uncompiled library, which some app developers
have been confused about, recommend the use of the much simpler debug
library, which offers many of the same advantages.
Thanks to @jpmedley for pointing out the complexities of using the
uncompiled build.
Change-Id: I771a2b5a98152a67807629538d8537721177399f
This plugin is preferred over the XHR plugin, if available.
This plugin requires AbortController, which is only present on
Firefox 57 and Edge 16, so this will not be active on every platform.
This also adds a simple mock for the Fetch API for use with Jasmine.
Closes#829
Change-Id: Ifb79d29334fbfcfd175afe0706da5a3d5e452e2f
This is a customization that allows us to link to the source code of
a thing, rather than its documentation.
Redoing this in a clean way caught some bad links, which have now been
fixed.
Issue #1259
Change-Id: I4c63aa10ddad8f8f21b224668c3529c70a1c6756
A bug in our Promise polyfill caused issues with the recently-added
AbortableOperation class on IE11. Since external polyfills for this
are smaller, it is easier to remove ours in favor of a third-party
polyfill. Applications that wish to support IE11 must now load this
additional polyfill.
We are using the "es6-promise-polyfill" module from npm, but any
compliant polyfill should suffice.
One feature our own polyfill offered was the ability to flush all
Promises, which allowed us to write synchronous unit tests that
simulated async processes. To get this ability back, we are now
using the "promise-mock" module in our tests.
Getting "promise-mock" to load correctly involved switching from
"requirejs" to "cajon", which builds on requirejs and supports
AMD modules more directly.
Closes#1260
Change-Id: I5de48e88a910736ae5c1897a7a509bc5641acb70
When playing manifests with segments longer than bufferBehind, while
gap jumping is enabled, there can be issues where the streaming engine
evicts the frames of the segment currently playing, thus creating a
gap that is then jumped.
This change makes the streaming engine use bufferBehind or
maxSegmentSize, whichever is larger, when choosing when to evict
segments.
It also adds a getter for maxSegmentSize on presentationTimeline.
Closes#1123
Change-Id: I83459c5eb3ebb1d6dff031e2bc244ac9fc3b5763
This uses AbortableOperation in all networking, from the scheme
plugins all the way to the request interface.
This also updates all default scheme plugins, docs, and sample code.
Backward compatibility is provided for scheme plugins and the
request API in NetworkingEngine. This compatibility will be
removed in v2.5.
Two cancelation-related tests have been disabled in
player_integration until the new abort interface has been adopted
in the manifest parsers.
Issue #829
Change-Id: I91c8e6efe97798d111e8ddca5655cddc1f6bcbf3
Also adds:
- Missing details on a deprecated config field in the v2.2 => v2.3
upgrade guide & changelog
- Missing details about new language/role APIs in the v2.2 => v2.3
upgrade guide
Closes#1183
Change-Id: I57e8bf4e56ffb1d741b691cdeaeb22e435c26e41
README.md duplicated some information from welcome.md, included other
details better left to welcome.md, and did not provide clear enough
information about support and features.
This moves some parts of README.md to welcome.md, drops others, adds
some details about feature set, and reformats some of the existing
support information into tables.
Change-Id: Ic863bc47fd46d01ca57d126654b2c9902a4b17bb
This change include the offline tutorial to show users how to set up
storage and use offline playback.
Change-Id: I470bfc6761a433116a766d338ac2a87eee1bde28
We moved TextEngine to a new namespace between v2.1 and v2.2, but
forgot to update the relevant docs.
Closes#1046
Change-Id: Ifddbe03931b2e76cc4778aaa4c3c70695a2dce62
ABR should be disabled before selecting a new track. The demo app
does it right, but the upgrade docs had it in the wrong order.
Closes#962
Change-Id: I57020098f24401c7d56acfe050cf2363cd22621f
While I set out to fix failing assertions during playback, I found
many more changes necessary to clean up the code and make things more
consistent.
When we changed switch history to include variants instead of streams,
we broke the filtering logic that is applied to the history. This
caused assertions at runtime that were not caught by the tests.
This moves the filtering logic to addToSwitchHistory_ and makes it
aware of variants. It also adds a regression test that would have
caught the assertions.
This fix affected many other tests, though, which necessitated other
API changes and cleanup.
Many interfaces are simplified, as is switching logic in Player. The
data flow is also easier to follow, since there are fewer transitions
between variant and stream. Everything up to StreamingEngine uses
Variants, and StreamingEngine uses Streams internally.
- All stream-based interfaces on AbrManager replaced
- switch callback takes a variant
- chooseStreams replaced with chooseVariant
- setTextStreams has been dropped
- Player maintains compatibility with old interfaces until v2.3
- Most stream-based interfaces on StreamingEngine replaced
- onChooseStreams callback to Player returns variant & text
instead of a stream map
- switch was replaced with switchVariant and switchTextStream,
both of which delegate to switchInternal_, which is largely
unchanged from the original switch method
- still has getActiveStreams, which I hope some day can become
getActiveVariant and getActiveTextStream so Player no longer
has to convert anything
- Most stream-based logic in Player replaced
- deferred switches map broken into variant and text members
- switch history logging broken into simpler variant and text
methods
- simplified manual and automatic track selection logic using
new AbrManager and StreamingEngine APIs
- player no longer filters duplicate selections, StreamingEngine
handles that
- replaced one case of deferred switches with an assertion
Closes#954
Change-Id: Ia49f6ffb9c5fa13ed8790dd03eeeded5122f7683
This reverts commit 478fb1a473
("Detect and attempt to correct timeline sync issues") and commit
4334b6ea90 ("Add mediaSegmentReferences
to shakaExtern.Stream").
Timeline correction only addresses one class of broken live content,
while actually making it more difficult to diagnose other classes of
broken live content.
Issue #933
Change-Id: Ie71b8a45600ed0994626f53268fb90e336c3c62b
This will allow us, in many cases, to detect time sync issues in
content by comparing the media segment references to the presentation
timeline. If the references are outside the timeline, it may indicate
a common form of bad content, and we may be able to attempt to correct
it.
In some cases, the references are not available upfront. We can't
detect time sync issues in DASH with SegmentTemplate+duration, because
the references are not explicitly described by the manifest. We can't
detect time sync issues in DASH with SegmentBase, because the segment
index requires additional fetching and parsing. (SegmentBase is not
used with live content, so this should be a non-issue.)
This only introduces the new data, but does not use it for detection
or correction yet.
Issue #933
Change-Id: If70b1bdbd3b08a7c8b7ae296da209737492dfe17
- Move the note about EME and HTTP to the top of the DRM config
tutorial
- Reference this note in both the server authentication and license
wrapping tutorials
Closes#928
Change-Id: Ibb47053c6ce5db1e1b120e0bb810c1f9f9069a82
Update HLS TS question in FAQ to include info about our ongoing
effort on transmuxing TS to fMP4. This will let people know that
the solution is coming and subscribe to the issue on github.
Change-Id: I9b90e4c355834573a0d23472a2ffd369847ddb16