Commit Graph

47 Commits

Author SHA1 Message Date
Aaron Vaage d85abe86da Offline Tutorial
This change include the offline tutorial to show users how to set up
storage and use offline playback.

Change-Id: I470bfc6761a433116a766d338ac2a87eee1bde28
2017-10-18 18:45:19 +00:00
Joey Parrish 37753aaa9a Update docs with regard to text namespace
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
2017-10-03 20:48:41 +00:00
Jacob Trimble c9aca1aeb9 Add CORS explanations to tutorial.
Closes #1018

Change-Id: I0ec915fe37b3cc62aff0184f2306297b388db701
2017-09-26 17:17:23 +00:00
Joey Parrish c7cd714b0d Fix FAQ typo
Change-Id: I6f2cd0b383ab849e7b4b0d14929b7c4b16dfa8e4
2017-08-31 20:05:37 +00:00
Joey Parrish 16f3965496 Update FAQ with regard to error codes
We no longer use UNPLAYABLE_PERIOD when TS is unsupported.

Change-Id: Ic6278e8eda62d8fd55697c64226a4ac868078a1e
2017-08-14 15:04:30 -07:00
Joey Parrish 7d42496a59 Fix upgrade guide titles and links
Change-Id: Ie6f5abde281ae7f2f1c6552f749a82d91694c736
2017-08-11 16:04:33 -07:00
Joey Parrish 2af0de2adb Move streaming retry logic into callback
Closes #960

Change-Id: Ieeacbf2e25f53a5af25a1de1935085e43457a092
2017-08-10 20:27:53 +00:00
Joey Parrish 53c3ad776c Fix order of operations in ABR upgrade docs
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
2017-08-10 18:32:24 +00:00
Joey Parrish 37ebcffbfe Add player.retryStreaming()
This method will allow applications to retry streaming after a
failure.

Issue #960

Change-Id: I2c97f6dea44dbc9431182172101f99d740ea177f
2017-08-10 10:54:34 -07:00
Joey Parrish 7e0f46931e Overhaul variant-based and stream-based interfaces
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
2017-08-03 21:34:47 +00:00
Joey Parrish 015b4f456f Revert timeline correction code.
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
2017-07-31 10:42:33 -07:00
Sandra Lokshina 978e49789e Update upgrade guides with v2.2 changes.
Closes #930.

Change-Id: Ie31f6f1e90df6dd4a768f7a662d68e31d6014bea
2017-07-25 20:23:52 +00:00
Joey Parrish 4334b6ea90 Add mediaSegmentReferences to shakaExtern.Stream.
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
2017-07-25 20:13:42 +00:00
Joey Parrish 6ca00260ee Emphasize HTTPS requirement for EME in tutorials
- 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
2017-07-17 09:23:39 -07:00
Sandra Lokshina 5e8fc2065d Update HLS TS question in FAQ.
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
2017-06-22 21:08:33 +00:00
Jacob Trimble 678390b92a Update tutorials and add another FAQ entry.
Closes #862
Closes #866
Closes #867

Change-Id: I8e97750ddc9851a9d893f0d9aadab234a1deb988
2017-06-21 23:35:50 +00:00
Joey Parrish 65785451b0 Add FAQ entry about buffering and ABR interactions
Also changes some formatting on the existing entries.

Closes #864

Change-Id: I11f2c3f905c43c28649786837c9ea678227002f4
2017-06-09 23:53:38 +00:00
Joey Parrish 2f7a5b6059 Build the FAQ into the tutorials
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
2017-06-09 23:53:38 +00:00
Aaron Vaage bc8fcaeb06 Update Welcome Docs
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
2017-06-09 21:59:48 +00:00
bhh1988 41eac10c08 Stop infinitely retrying on network errors for VOD (#842)
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
2017-06-05 10:42:09 -07:00
Joey Parrish 82d8669bcb Add notes on adaptation to upgrade guide
Change-Id: Ia0ab28deb415b35a7fda94ee9ef288e32b292c50
2017-05-12 15:56:33 -07:00
Joey Parrish 677dc1c7e8 Tutorial cleanup
Add a note that language configs affect the next load.

Change the example in build customization to one that works.

Change-Id: I3baa962fdb0d31c57c195385c9ab9da309fe9c29
2017-04-25 17:43:31 +00:00
Joey Parrish 395cc1745e Update the upgrade guides for v2.1
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
2017-04-20 23:39:27 +00:00
Jacob Trimble d1bc3fdb71 Add manifest parser plugin tutorial.
Change-Id: I4e5b1d7ece7df8f006ca6261a74cd8eb38bfd037
2017-04-06 19:26:40 +00:00
Jacob Trimble 40bd34d8ac Add support for special cache header.
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
2017-03-03 19:53:17 +00:00
Jacob Trimble cbbc61ec4c Add a diagram for the PresentationTimeline
Change-Id: I6ca8dcd88e56daaf99820816ca9f3c9f02a2076f
2017-02-27 17:06:30 -08:00
Joey Parrish fd1786b7a9 Add asynchronous filter example in the tutorials
This adds an example of using asynchronous filters for authentication.

Closes #610

Change-Id: Idf47558af4c399178ff3806f944d69909ee2fd7a
2017-02-07 16:18:27 -08:00
Joey Parrish 836bd9a177 Make filters, requests, and responses easier
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
2017-02-08 00:09:08 +00:00
Jacob Trimble b452db8986 Add offline storage to v2 upgrade guide.
Change-Id: I47e947bd9247013351ec1505ee577f76a8c80e94
2017-02-03 22:51:33 +00:00
Jacob Trimble 79ea0f0854 Update documentation for Tracks.
Closes #679

Change-Id: I7a7fa6534f328a79fdce2b7b8cd6cd60fec210fc
2017-02-03 22:50:49 +00:00
Jacob Trimble 3f4eb4a111 Add additional docs for AbrManager.
Issue #629

Change-Id: I9548c24078e07537ae4c1e6f28461c992f5f794e
2017-01-27 23:19:13 +00:00
Joey Parrish 43e086dbaf Update the debugging tutorial for clarity
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
2017-01-20 10:28:34 -08:00
Joey Parrish 3aea360b30 Partial revert of 43958d43
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
2016-11-15 08:21:47 -08:00
Joey Parrish 43958d434c Link to error docs from the demo app
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
2016-11-14 23:57:57 +00:00
Joey Parrish be04b92637 Add a note that file:/// URLs will not work
Closes #543

Change-Id: I17821c780717eb53ede6653cf9645ffda923df7c
2016-11-14 11:46:30 -08:00
Joey Parrish 1d9e574afa Reduce the default buffering goal
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
2016-10-25 23:10:08 +00:00
Toshihiro Suzuki d4cb98186c Small Refinements on Documentation (#536)
* 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.
2016-09-29 07:39:41 -07:00
Joey Parrish 2673f44926 Update config examples and defaults
Change-Id: Id8f4bf5a4dfa394508ce169eed98262f11a51d7d
2016-09-26 18:56:24 +00:00
Joey Parrish 2567d07576 Rewrite the debugging tutorial
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
2016-09-26 11:06:19 -07:00
Jacob Trimble 25dfa41b7a Fix basic tutorial WRT support testing.
Issue #399
Issue #402

Change-Id: I930377252a5e7fbce84db76c40a6f3607e3f24a5
2016-06-06 16:49:48 +00:00
Jacob Trimble a9492427e1 Update upgrade docs to include track restrictions.
Closes #387

Change-Id: I52a20a9a4aeb87c54d592e1ae1968f84ee012107
2016-06-02 23:52:36 +00:00
Jacob Trimble 5102f54120 Make Player.support synchronous and add support plugin system.
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 #388
Closes #389

Change-Id: I313a41d9f123871272f1395aeb99c980df1f4bae
2016-06-02 21:57:38 +00:00
Joey Parrish 20ddb8a130 License-wrapping tutorial
Change-Id: I62d81f9c0a5b46c843c753ca64bdfc7d3f10b6a0
2016-05-13 07:47:04 +00:00
Joey Parrish 04d3df3ae8 Apply feedback from doc review
- 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
2016-04-13 17:12:32 -07:00
Joey Parrish c29fdf401b Shaka v2 Upgrade Guide
Also fixes docs export on some of our external structures.

Change-Id: Ia31f2ad46c6f07845c289c6ca2f206a6fd6cf341
2016-04-13 21:15:40 +00:00
Jacob Trimble 3bdfc7dfa1 Make default bandwidth estimate configurable.
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
2016-04-06 23:28:52 +00:00
Joey Parrish c8e80cb58d Tutorials and other doc revisions
- Update tutorial link in README
 - Fix python version in README
 - Move jsdoc conf to docs/ folder
 - Add API docs main page
 - Change style of inline code blocks
 - Don't repeat tutorial title in jsdoc template
   - (makes it easier to read tutorials on github as MD)
 - Add tutorials for:
   - Welcome to Shaka
   - Basic Usage
   - Debugging
   - Configuration
   - Networking and Buffering Configuration
   - DRM Configuration
   - License Server Authentication
   - Plugins
 - Tutorials still to come:
   - License Headers and Track Restrictions
   - Special Considerations for Live
   - v2 Upgrade Guide

Change-Id: I16401c216cf4023d9097750ac7f6090c68bf3c9b
2016-04-06 19:17:51 +00:00