defaultConfig_ is not accessible in compiled mode, and thus the code
using it caused an error.
This simply sets the smallGapLimit placeholder to 0.5, instead of
looking it up from defaultConfig_.
Closes#929
Change-Id: I2e81669858bff2e555e638e282c0643f5ea70ac0
- 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
The HTML5 'input' event does not work correctly on all input elements
in IE 11. There are equivalent events that the UI can use on IE.
Instead of remembering this and checking for IE every time the 'input'
event is needed, let the polyfill translate the event type.
Change-Id: I23258a5c6a0bd37e946214380ad07949f3ee7f88
Two EME polyfills currently assume persistent storage support: one
for old Tizen TVs and other older embedded Chromium devices, and one
for IE11.
This backfires when an application is trying to detect support for
encrypted offline content.
By removing this assumption, we do not convey support for EME features
that are not known to be available on these devices.
Change-Id: If427eeda1cde60341a2b57f76744c2adfdb34beb
Based on PR #839
We use |resumeAt| to handle switching between Periods that do and do not
have text streams. It is used to override what time we need to start
buffering from. Once we have used it (i.e. started streaming), we
should reset it (to ensure it doesn't break seeking).
There was a bug where if the stream wasn't available yet, it we
would reset |resumeAt| but not start streaming. Meaning on the next
update, we would check at the playhead time instead of the next Period
time. Now we reset |resumeAt| only after we know we have started
streaming.
Closes#839
Change-Id: Ibd3ce680cec129719869c8d4a7dda409b573a17f
In situations where there are variants with video and audio, and variants
with only one of the two, this filters out the less-complete variants.
This removes the possibility of the player switching to an audio-only
variant and breaking MediaSource. It also solves the regression where
audio-only variants have the lowest bandwidth and thus are chosen
preferentially on weak connections.
Closes#824Closes#861
Change-Id: Ic37543d98962ddd83a85224e26e5225d142b844e
Microsoft HLS packaging tools generate audio-only variants in an odd way;
specifically, the variants have an AUDIO tag despite being audio-only, and
thus double-link to the stream.
Previously, the way we detected stream type lead to us assigning one version
of the audio stream to audio and one to video, thus erroneously making those
variants appear to be video+audio variants.
This makes it so that, if the AUDIO tag has the same content URI as the base
stream, it only uses the version in the AUDIO tag.
Change-Id: Ie940970587e95a9020ed67589042008d0568e153
This is part of adding a new conformance rule to add additional type
safety. This will disallow using properties of unknown types or using
unknown properties.
This enables the new conformance rule.
Change-Id: Ifae3f16930e8df4a09915236108151168b5aa5fb
This is part of adding a new conformance rule to add additional type
safety. This will disallow using properties of unknown types or using
unknown properties.
The first parts will be fixing errors caused by the new rule. These
are backwards compatible, so can be applied before the rule is enabled.
Once all the errors and bugs are fixed, the rule will be enabled.
Change-Id: Iecdf071c7f99b9d5460e75dfc4f77df871740ad2
This is part of adding a new conformance rule to add additional type
safety. This will disallow using properties of unknown types or using
unknown properties.
The first parts will be fixing errors caused by the new rule. These
are backwards compatible, so can be applied before the rule is enabled.
Once all the errors and bugs are fixed, the rule will be enabled.
Change-Id: Ic37437a1ad2305bc50a814cdcc562e74703222ac
We should not reinit text until we are sure we are switching.
Otherwise, the new text parser won't have seen the init segment and
won't be properly initialized.
Closes#910
Change-Id: Ieb5549afcad7aa58aa1a6e8d383f3cd783280d5c
This is part of adding a new conformance rule to add additional type
safety. This will disallow using properties of unknown types or using
unknown properties.
The first parts will be fixing errors caused by the new rule. These
are backwards compatible, so can be applied before the rule is enabled.
Once all the errors and bugs are fixed, the rule will be enabled.
Change-Id: I48335fc6659d3c33a6d55b00d087b59410c79cf7
This is part of adding a new conformance rule to add additional type
safety. This will disallow using properties of unknown types or using
unknown properties.
The first parts will be fixing errors caused by the new rule. These
are backwards compatible, so can be applied before the rule is enabled.
Once all the errors and bugs are fixed, the rule will be enabled.
Change-Id: Iefde089b2f62ddfdf43944cda5badab438577561
The old definition using a union with a Function causes problems. The
compiler tends to treat this as an unknown type, so we loose type
safety. The new types ensure full type safety, at the cost of needing
to "convert" the spy when it is used as a function.
Change-Id: I98ebd9dffd9cb865d0cf5d03db0fb5d6ea001ed3
If the shaka-player directory doesn't have a '.git' file, we'll use the
npm version instead of finding the '.git' file in the whole repository.
This is to prevent grabbing version tag from a parent project, which
uses shaka-player as a dependency.
Test command:
python -c 'from build import shakaBuildHelpers; print
shakaBuildHelpers.calculate_version()'
If there's is a .git file, it shows the git version.
If not, it shows the npm version.
Closes#871
Change-Id: Iee3cd6868c46f327966fd6ce5071ca7b750174b6
This makes it easier to compile the demo and receiver apps, which will
make the PWA transition easier.
Issue #876
Change-Id: Iffd335df35c17c7895f763ccf180011dd1d8c14d
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
If we haven't gotten a key status within 5 seconds of updating a
session, consider the session "loaded". This fixes a hung Promise
in DrmEngine for offline use-cases.
Issue #891
Issue #894
Change-Id: Ic4c7478198a0db4b3a3df8842d5f8cd1f6f3e8bd
This works around Tizen 3.0's misreporting of its support for
persistent licenses, which prevents us from running persistent
license tests on that platform.
There is still one more failing test on this platform.
Issue #894
Change-Id: I81ebb80a831c753e3af4851efcbd7e97211e6890
This changes the order of the things tested in the offline tests,
cleans them up a little, adds comments, and extends the playback
time by 5 additional seconds to deflake the tests.
Closes#903
Change-Id: I9c0656882cf31e3f61c67946b7867d3ef25ba953
Adding the count of channels, as a new field for tracks and streams.
Used for HLS audio tracks.
Resolves#826.
Change-Id: I1448b4a8cfaf6dd798670bb2f0f3981d6c7e40c3
The new isPersistentLicense option was not documented in #878.
This adds docs and renames it to usePersistentLicense.
Closes#873
Change-Id: I59ed32c98660ad7c155392a1708eab98f63131c3
Based on app configuration, we could store protected content offline
without a persistent license. The offline content would then require
a network connection, but only briefly for licensing. This makes
sense in a lot of commuter or airplane WiFi scenarios.
Closes#873
Our EME polyfills give a key status with a Key ID of '00' (a single 0
byte). This breaks the Player logic for restricted tracks since it
assumes that those are not playable. When we get this Key ID, we should
treat the key status as a global status, not for that specific Key ID.
Closes#884Closes#890
Change-Id: I392550227274fb321d2c223eb8d483a0a4733186
In DASH, when parsing a date, it should default to UTC. When we pass
the date string to Date.parse(), it will use the local timezone. So
if we don't see a timezone, we need to manually add the UTC timezone
so Date.parse() will parse the correct timezone.
Closes#901
Change-Id: Ica0433042e9bfd42b0cbf62653bdbd2b97b56297
Like other browsers, the Tizen TV sometimes stalls when inside an
otherwise playable region. Our technique of flushing by seeking to
the current time doesn't work. So instead we seek a small amount
in the future.
Closes#893
Change-Id: I91e56e3b9a22fac21fb1d8f66a30a6237b3b28e5
Instead of hanging while we wait for key status events that will never
come, move on after 5 seconds.
Issue #891
Change-Id: Ia338401097fb29039fa203729d0efaa4cca5623b
In IE11, the fullscreen button in the controls UI disappears after
clicking 'Load'. This is because the classList toggle method is not
fully supported for IE11, so the 'casting' class is added to the
controls div every time. Fixing by using add and remove instead of
toggle.
Closes#787.
Change-Id: I9c4f2cfdc32d1ed11e3a4b5b86e885bd8c10db3d
Tizen TV seems to stall when it plays into a gap. This stall isn't
fixed by a seek. So when gap jumping, we should jump before we hit
the gap on Tizen.
Fixes: 62628840
Change-Id: Iff7b7a2a4c2c2a5b9015728f1dceece6421463b9
Trying to switch to a stream from a previous Period while we are
buffering a later Period can cause problems. This is caused by
different media states "needing" different Periods.
So if we try to switch to a stream from a different Period, we should
handle the Period transition then to ensure all the streams are needing
the correct Periods.
Closes#797
Change-Id: I3d93d93bf141901fe8f8f62fd0ca9fa96a07c268
Exposing the roles of tracks, which come from the manifest, in the
select audio language method. This is a follow up on commit
b27861050c11451db57d87270ec1385c1906627a.
Closes#767.
Change-Id: Iebb873f1db8834c7275a8a9fc01c3b855c0288aa
This fixes the detection of content type for text AdaptationSets which
contain mimeType only, but contain a Representation with codecs only.
Closes#875
Change-Id: Ibae7ae8357653c1960daefa4c3e122187de51bb3
This fixes an issue in which we released several builds (v2.1.3,
v2.0.4, and v2.0.3) with the wrong version number. This happens when
we build, then tag, then release.
By forcing a rebuild at publication time, we make sure the build we
release has the right tag in it.
Issue #869
Change-Id: I23867ceef43162469c53006336b7f0226dbe16b6
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