Commit Graph

196 Commits

Author SHA1 Message Date
Joey Parrish bfece76f10 docs: Update upgrade guides
This drops the v2.4 guide (no longer maintained), and adds a specific
guide for v3 changes (which are minimal).

Closes #3487

Change-Id: Id2e6d3ce92114ca5685787994cac7a5ed36a86e9
2021-07-08 20:56:45 +00:00
fingerartur e1b3debb33 docs: how to disable Range header requests at start of HLS playback (#3442)
Co-authored-by: Artur Finger <artur.finger@nangu.tv>
2021-06-04 09:16:22 -07:00
Joey Parrish 3698f49f3b chore: Update cast receiver ID for v3.1
Change-Id: Ifa042ca4e5e8922121d332cc790559d5bbff14ae
2021-04-29 21:49:11 +00:00
Michelle Zhuo 95ba28b5af refactor: Remove IE 11 support
Issue #2339

Change-Id: I80ffa7b04f7afd943aa0f881d2a494dd35def732
2021-04-29 17:47:07 +00:00
ismena 56d161a3c2 docs(ui): Add the UI Theme Gallery link to the docs.
Issue #3246

Change-Id: If784815ef6947dd7b0b369e6d27950f965b9bd01
2021-04-20 19:00:25 +00:00
Akshat mangal df5340fa2b Fixed minor punctuation and grammatical errors (#3342) 2021-04-17 23:00:17 -07:00
ben476 d6d2a9f3c7 docs: Fix offline tutorial to use the correct config (#3337)
When configuring offline storage in initStorage in initialising storage, an OfflineConfig was used instead of a player config, which worked in v2.5 but not in v3.0. Because of this when the final code was run the progress bar wouldn't work properly as progressCallback was not set.
2021-04-16 14:02:46 -07:00
ismena 7e50866bb5 fix(dash): Fix stalls on a live dash stream.
In live streams, we can evict segments outside the availability window
faster than they disappear from the manifest. If that happens, we used
to evict them several times (add them back in and then evict again).
This caused the eviction counter to increase beyond what it should be
and we had trouble finding segments afterwards.

Closes #3139.

Change-Id: Iafebfaf8e1e9ebb09a64cdf7e09a882115fd8eb6
2021-04-14 19:41:30 +00:00
Vincent Valot b4595d5a59 feat(drm): make dash keySystems configurable (#3276)
Make the DASH keySystems configurable, so that any developer could chose to opt-in for recommendation based on DASH DRM UUID.

Example:
player.configure({
  dash: {
    keySystemsByURI: {
      'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready.recommendation',
    }
  }
});
2021-04-02 17:33:39 -07:00
Vincent Valot 4574a5dd92 feat: make drm sessionType configurable in advanced DRM config (#3301)
Prerequisite for issue #1495 (com.microsoft.playready.recommendation key system)
2021-04-01 16:32:51 -07:00
ismena 51263c1337 docs(ads): Add more info on serving limited ads to the tutorial.
Change-Id: I97cdf61ab0045cb4a3610fcbd7e6145d12321de7
2021-03-31 10:34:06 -07:00
Nico 4f0ded7e37 feat(ui): Add Loop, PIP, Cast, AirPlay buttons to control panel (#3255)
These menu items are now available to be placed in the control panel of the UI.

Issue #2676
2021-03-30 15:44:44 -07:00
Álvaro Velad Galván 863e3455b6 feat: Network stall detection (#3227)
Closes: #1582
2021-03-30 13:35:41 -07:00
Michelle Zhuo 96e87c2fad doc(gsoc): Update the GSoC doc link
Change-Id: I8fa200b6897c08f9f7a172d371a918775eccd993
2021-03-30 18:41:52 +00:00
Adit Mehta 1b1227f46d docReplace manually defined links in the doc (#3287)
* REplace manually defined links in the doc

* Update gsoc-ideas-list.md

* Update gsoc-ideas-list.md

* Update gsoc-ideas-list.md

* Update faq.md

* Update faq.md

Co-authored-by: aditmehta9 <aditmehta9@gmail.com>
2021-03-29 09:45:42 -07:00
Michelle Zhuo 4547c7ffc5 doc(gsoc): Update for guidelines
Change-Id: I1c9c72acec24641c3aba86e1c38d2aab3081b666
2021-03-22 17:48:11 +00:00
Adit Mehta c5af2be27a doc: Update links for event and formatting (#3256)
Updated JsDoc links for the events of Ads.
2021-03-20 13:39:48 -07:00
Michelle Zhuo 99314b733f fix(doc): Update @event and @link in UI
After some research, I found the right way to use @event in JsDoc:
1. An event definition should be: @event className@eventName
2. The link to the event should be:
   @link className#event:eventName

Reference: https://groups.google.com/g/jsdoc-users/c/-1Qle3ww8Rk/m/UjiibrcSkoUJ

Change-Id: I09ed999f44df815c2f9f558f7ddbfd2f4c7df426
2021-03-19 13:38:12 -07:00
Rishi Giri 8a381ba0b4 doc: minor enhancements (#3222) 2021-03-15 09:27:20 -07:00
Arijit Kundu 9f51799262 docs: Fixed outdated info in "contributing" doc(#3206) 2021-03-11 12:20:13 -08:00
Michelle Zhuo 6fdc475dc1 doc: add more info to contributing guide
Change-Id: I0fd8fc8ca1012de68d1d147a4509109cee3e5ba8
2021-03-10 22:19:29 +00:00
Michelle Zhuo 54fd812b74 doc: Adjustments to the gsoc ideas list
Change-Id: Icb6de41bccd658fefe2c2a8ac4977951eaf4814c
2021-03-10 18:43:51 +00:00
ismena 9e05954f73 docs: Add limited ads section to the ads tutorial.
Change-Id: Ie654622a9b5acaf6ce2b45ca62cd0cf4d31dc345
2021-03-08 13:17:56 -08:00
Michelle Zhuo ca76928d1d doc: Add more info to the GSoC ideas list
Change-Id: Ic6a3248160eba645415233b39fdc03cfd283dab7
2021-02-26 18:06:08 +00:00
ismena a0587c4be3 docs: Expand the IMA integration tutorial
Closes #3168

Change-Id: Ic1f416b250cfdac525329cb7504a6b40710f5425
2021-02-23 18:12:59 +00:00
ismena b850054a56 docs: Document programmatic UI setup
Closes #2655

Change-Id: I8a151b0be6cbec0d06bfa00c69e5249f4187c154
2021-02-20 02:45:59 +00:00
Michelle Zhuo 419f22ada6 doc(ALR): update doc for manifest and segment ALR
Change-Id: I72492d95a0345cfce51f304d094d2241b99c9a91
2021-02-19 23:29:02 +00:00
Michelle Zhuo c5fa62718d doc: Add Google Summer of Code ideas list
GSoC requires a link to our ideas list. Putting the projects here.
https://summerofcode.withgoogle.com/

Change-Id: I30df1cce597f909fc5c6834570fb3fc7b5b0582b
2021-02-18 19:10:05 +00:00
Joey Parrish d3dfabceb1 fix: Fix segment refs for "future" DASH periods
When a multi-period DASH manifest contains periods which are in the
future (described in the manifest, but with all segments past the
current end time of the segment availability window), the segments
generated for SegmentTemplate were invalid.  Not all DASH multi-period
content describes unavailable future periods, so many providers using
DASH would not see this issue.  This bug affected v3.0.0 - v3.0.7.

To fix this, we change the "next position" calculation for updates to
clamp to the minimum valid position.  This avoids creating segment
references with negative position numbers for these future periods.
When the segment availability window moves to include this period, we
will then start generating segments for it (starting at position 0 or
whatever the startNumber attribute is for this period).

However, the contract for updateEvery() in SegmentIndex was such that
the timer would stop if the list of references was every empty.  This
was meant to handle the case in which all segments were evicted, but
it could be triggered instantly on these "future" periods, for which
no segments exist yet in the availability window.  To resolve this,
the contract was changed so that the updateEvery() callback must
explicitly signal a stop by returning null instead of an array of
segment references.

Bug: 179025415

Change-Id: I56a2826fd3aea3f69da7b8bf4fa7629562d63506
2021-02-08 22:18:24 +00:00
Theodore Abshire 655493f441 Fix(ads): Fix bug w/ configuring UI during CS ads
Previously, the client-side ad container was put inside the controls
container, which was cleared when the UI was configured. This meant
that re-configuring the UI made client-side ads go away, basically.
This moves client-side ads to go into their own container, which
is never re-made or uprooted, even when the DOM is recreated, in
order to not break the IMA SDK.
This has the side-effect of fixing a bug where client-side ads were
not always cleared upon loading a new asset, and could show up
unexpectedly in future playbacks.

Fixes #2869
Fixes #2943

Change-Id: I3cf67b0b278764c10c6ff2f678316dc9cc85929e
2020-12-16 14:26:09 -08:00
Chuong baee50b5a2 docs: add link to complete list of categories (#2934)
When user read about these anotation +@complete -@polyfill, they wonder where it came from.

It is not immediately obvious where to see it without reading the next section.
2020-10-23 09:38:26 -07:00
Joey Parrish e8b9748ab1 docs(ui): Correct receiver IDs in the UI tutorial
Closes #2926

Change-Id: If535dc03f585ba3d7b6b504454dc920e822aabc4
2020-10-19 14:31:30 -07:00
Joey Parrish b99babd36f docs: Update required Node version
This requirement comes from stylelint, and should apply to both v2.5
and v3.0 branches.

Closes #2913

Change-Id: I26b4d1c1928c5cf832cefc9f181df0986e1ff364
2020-10-15 23:31:23 +00:00
Theodore Abshire 7941703c5a Fix(hls): Allow config to play video-only HLS.
If an HLS stream has no provided codec information in its manifest,
we previously defaulted to providing a best-guess video and audio
codec.  This, however, caused problems for video-only and audio-only
streams; Chrome does not like it if an audio codec is provided for
a stream with no audio at all, for example, and fails to append the
chunks.
This modifies the HLS parser to not provide a default video codec if
the 'disableVideo' config is set, and similarly to not provide a
default audio codec if 'disableAudio' is set.

Issue #2868

Change-Id: I7826fdb69f2e5290914ed2c0d1e109f9db94f80d
2020-09-26 06:04:00 +00:00
Michelle Zhuo 1e8f8bbf1f feat(LL-HLS): Set default streaming config for low latency
To enable low latency streaming, the configuration of
inaccurateManifestTolerance should be set to 0, and rebufferingGoal
should be set to less than 1 partial segment duration.
Instead of requiring developers to set three configurations, we
default inaccurateManifestTolerance to 0 and rebufferingGoal to 0.01
with low latency mode, unless speicfied.

Issue #1525

Change-Id: I538fa6d84ced26225fe9ebdf5213b370debfa22d
2020-09-17 18:56:58 +00:00
Theodore Abshire 509e7b046a fix(manifest): Fix embedded captions vanishing.
Previously, on manifest updates, embedded captions would vanish in
single-period live DASH streams.  The problem was based on the
specific point in the load order that we added dummy text streams
to indicate the presence of embedded captions.
This modifies the PlayerInterface for manifest parsers to add a
new method passed in, makeTextStreamsForClosedCaptions, which
must be called by manifest parsers for new video streams.
This also completes an unfinished feature, where new video streams
which add new closed captions would not get corresponding
text streams.

Closes #2811

Change-Id: Iee7499ec950b363cf6839765cc2bd2d01743467d
2020-08-26 15:05:40 -07:00
Joey Parrish 6f803bd176 docs: Add doc on Application-Level Redirects
This scheme came up recently while working with a partner on
integration with their streaming infrastructure.  This new doc will
clarify what an Application-Level Redirect is, how it works, and how
it can be supported with Shaka Player.

Change-Id: Ia532fa543c0efb98333c1a5a8ad5f2afbd7936fd
2020-08-20 17:28:47 +00:00
michellezhuo a534dca883 feat(LL-HLS): Add configuration comments for low latency mode
1. In low latency mode, the playback start time from live edge is about
3 times partial segment duration, 3s for example. The rebufferingGoal of
2s would result in infinite buffering.

2. In low latency mode, do not allow drift for seeking. Only seek with
the presentation time.

Change-Id: Iee92727bf17dab8b52fae070522a5a2ec1621ffc
2020-07-22 17:00:15 +00:00
Álvaro Velad Galván fac29133c2 Add AirPlay button to overflow menu (#2701)
feat(UI): Add AirPlay button to overflow menu.
2020-07-14 15:55:15 -07:00
ismena 5915f469bd docs: Update the way to change seek bar colors in the tutorial.
Issue #2708

Change-Id: I66982bc04c8e9358782e9a13b361b7803fe766dd
2020-07-09 11:08:39 -07:00
michellezhuo 5923388211 docs: Add native HLS playback in Safari in FAQ
Change-Id: Ibb8e96037521ea31546a8760220413592ba8d9a4
2020-07-09 16:52:57 +00:00
태재영 7ab9031248 docs: change promise then to await (#2693)
Closes #2544
2020-06-29 14:24:23 -07:00
태재영 dd48cef08f docs: change variable declaration to modern syntax (#2692)
Issue #2544
2020-06-29 14:06:25 -07:00
Theodore Abshire aa9fe1d049 fix(demo): Fix behavior when UI fails to load
This modifies the demo to load localizations even when the UI fails
to load, so that the footer links will still be visible.
This also makes the footer links work in that situation, and modifies
the shaka-ui-load-failed event to return a failure reason code, so
that we can display a contextual error message in event of a failure.

Closes #2669

Change-Id: I0cf38f7e39558f1977eee490131378c32105437f
2020-06-23 23:29:37 +00:00
Sandra Lokshina cda30283d2 Fix: fix UI not showing up for server side ad streams.
Apparently, IMA SDK adds their ad UI differently on SS vs
CS ad streams. The solution we devised for CS ad experience
that combined our UI with the IMA's native ad UI turned out
not to work for the SS experience - our UI was being obstructed
by the IMA's UI.
This change adds a new container for the SS IMA UI that allows
our own UI to stay visible.

Issue #2592.

Change-Id: Iedb24beeb8d6f777b1fd7f4155c591350432ec78
2020-06-12 16:55:33 +00:00
Theodore Abshire 44ba84e0b8 docs: Update Manifest Parser tutorial
This updates the Manifest Parser tutorial to match the new v3.0
manifest structure.

Closes #2634

Change-Id: I645f82624ae68193e80c28a7ec45c7a4316c7654
2020-06-09 22:30:18 +00:00
Joey Parrish 741424eef6 fix: Correct IMA SDK URLs in service worker and docs
The IMA SDK URLs in the service worker were http, and should have been
https.  This caused an issue when deploying v3.0.0 to appspot.

The IMA SDK URLs in the demo specified no protocol, but that is not
necessary, since https works in all contexts.

The IMA SDK URLs in the docs also specified no protocol, and one of
them was incorrect.

This corrects the mistaken URLs and makes them universally https.

Change-Id: I53dbf25ddb16ec882fcf3c070bcebed726277be1
2020-06-08 20:38:49 -07:00
Theodore Abshire e050a238f2 Updated and clarified docs on plugin interface.
Issue #2619

Change-Id: I953421ce580d37b382dca36017b221f94824f20a
2020-06-05 12:00:47 -07:00
Theodore Abshire 8d657140f1 Made ManifestParser.PlayerInterface.filter async.
This is a change in preparation for the adoption of the
MediaCapabilities API.

Related to #1391

Change-Id: If0988aedafe15aa3be794fb977fd8e04e91ca10e
2020-06-04 17:42:27 -07:00
Joey Parrish f8399ff0d2 Remove mention of now-dead SegmentIndex.replace()
The replace() method of SegmentIndex was only ever used in HlsParser,
and was never exported from v2.5.x.  We have decided at the last
minute to drop it before v3, so this change removes it from the
upgrade docs.

Change-Id: I0d89745dbeac14e1bf90e8e87f3401a797ea9792
2020-06-02 23:50:39 +00:00