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
The FAQ file had to be moved into the tutorials folder to make this
work for some reason. JSDoc did not want to take "../faq" as a name.
Closes#865
Change-Id: I63ff5b181f494d72c04eaa054111d9fdc866064c
NPM released a new version which no longer work with the version
of Node we install in the docs. By updating NPM and Node they
play nicely with each other and no longer need the symlink.
Tested on a clean VM using:
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Change-Id: Ie4a2cce194944ea57b542b01d072dfff8a8b40b3
Do not infinitely retry on top of the retry-policy already defined by
RetryParameters, especially for VOD. For live video the previous retry
logic is still useful to be robust against clock-sync or asset
availability issues. This commit adds a boolean configuration parameter,
infiniteRetriesForLiveStreams, to allow the user to turn this behavior
off even for live video.
Fixes#830 and #762
Add a note that language configs affect the next load.
Change the example in build customization to one that works.
Change-Id: I3baa962fdb0d31c57c195385c9ab9da309fe9c29
Also changes the jsdoc template for tutorials with children, to give
the tutorial content itself control over how the links to children are
formatted.
Also fixes annotations for the TextParser interface.
Change-Id: I99502f38bf711b74a596ad804d8abdddee5d6f4d
This allows network responses to have an X-Shaka-From-Cache header to
indicate that the response was somehow from a cache and should be
ignored for bandwidth calculations. For example, this can be from a
service worker intercepting the request.
Change-Id: I4dfdf4211921b7205febb58f1e80967f0c4841cd
By exporting StringUtils and Uint8ArrayUtils, we can simplify the
process of wrapping, unwrapping, and parsing requests and responses
in NetworkingEngine filters.
This makes it easier to write filters that deal with text-based
data, as it is no longer the job of the application developer to
deal with subtle conversions between string and ArrayBuffer.
We will also fill in requests with defaults if needed. This allows
developers to omit fields when initiating extra requests at the
application level.
Closes#667
Change-Id: Ie6a0f23b4d46e7e458d996759eac6cd85a36b741
This updates the debugging tutorial to clarify a few things:
- Formatting in the sample console output is not exact
- Log level should be set in the top of initApp() before we construct
the Player object
- Verbose messages are only seen after we change the log level and
reload
Closes#653
Change-Id: Id0d7dabff225c3d82a9c54c05bb356a0bfa9b241
In the tutorial, I mentioned clicking the error. That is a feature of
the demo app and does not apply in context.
This reverts the tutorial part of Change-Id
I988a40c882adf7c3c9da856e7c850649efecadcf
Change-Id: I782a5ebc2fc7bf744e2cb67890aae28a7817029a
When an error is shown by the demo app, that error is now a link to
the docs for that specific error code.
Also updates the debugging tutorial to mention that this is clickable.
Closes#553
Change-Id: I988a40c882adf7c3c9da856e7c850649efecadcf
Since we no longer clear ahead of the playhead, the only way to assure
responsive visual upgrade is not to buffer too far ahead. Therefore
our new default buffering goal is 10 seconds instead of 30 seconds.
Manual testing using Chrome's network throttling feature has shown
no increase in buffering rates, so 10 seconds seems to be enough for
stable connections.
For situations in which 10 seconds is not enough, the bufferingGoal
setting can still be customized by the application.
Closes#520
Change-Id: I248c1c93dd4cdd037e6e3ca12bb207ba54845836
* Add tutorial tag to shakaExtern.RetryParameters
Properties like `backoffFactor` or `fuzzFactor` is a little difficult to
understand for new users. Link to the tutorial to explain.
* Additional Description to Sample Code
Explains why request.uris is an array.
This should be less awkward and artificial, and focuses more on the
debugging tools available than trying to solve a fictional problem.
Change-Id: Idc451115b777cea3ba84f68d489fe817f8bf0350
Now there is a new synchronous method Player.isBrowserSupported. This
will detect basic support and return a boolean. The support() method
has been renamed to probeSupport() and should only be used for
diagnostics.
Also added a plugin system to Player support testing. Now a plugin
(e.g. offline) can add extra info to the output of probeSupport().
Closes#388Closes#389
Change-Id: I313a41d9f123871272f1395aeb99c980df1f4bae
- Add prereqs section
- Add architecture diagrams
- Adjust doc margins
- Change some wording and fix typos
- Convert alert() to console.error() in basic usage tutorial
- Expand prose in debugging tutorial
- Add comments about asynchronous methods
- Expand description of Closure base
- Change some links to source rather than API docs
- Clarify some vague language
- Refactor some of the plugin text
Modified jsdoc to add a new 'linksource' tag to link directly to the
source code for an entity.
Change-Id: I6b879050fc59917ce98954a4fabd8afca60af456
Now, the default bandwidth estimate used is configurable and can be
set using Player.configure.
This also moves enableAdaptation and abrManager configuration values
to a subcategory 'abr'.
Closes#268
Change-Id: I11ab30452b20dc4fd9385210811185fe2969821e