- 19 Mar, 2020 9 commits
-
-
We currently have the following logic to update renderers during period transitions: 1. Wait for the currently reading period to finish reading all its streams. a. Advance reading period. b. Set all streams that can't be replaced to final. c. If streams can be replaced, replace them now. 2. Wait until playback position reaches the transition point a. Disable all unneeded renderers (or those that need re-enabling). b. Advance playing period. c. Enable all new renderers (i.e. all except the ones where we replaced streams directly in step 1c. This logic causes delays because steps 2a and 2c can easily happen before 2b. Doing this allows a smooth transition for cases where renderers change or where they need to be re-enabled. The new order after this change is: 1. Wait for currently reading period to finish reading. a. Advance reading period. b. Set all streams that can't be replaced to final. 2. Update reading renderers iteratively. a. If streams can be replaced, replace them asap. b. If renderes need to be disabled, do so as soon as the respective renderer ended. c. Once step b is fully finished, enable or re-enable all new renderers. 3. Wait unril playback position reaches the transition point AND all tasks in step 2 are done (i.e. all renderers are set up for the playing period). a. Advance playing period. As a nice side effect, decoder enabled and disabled events are now always reported for the reading period, which is more consistent with other renderer callbacks. PiperOrigin-RevId: 300526983tonihei committed -
This means DataSource.read now may throw InterruptedException. PiperOrigin-RevId: 300523430
aquilescanta committed -
PiperOrigin-RevId: 300519989
ibaker committed -
PiperOrigin-RevId: 300513930
olly committed -
This list was meant to simplify some usages where we only want to make operations on enabled renderers. However, keeping this list up-to-date is slightly error-prone (because renderers aren't added and removed from this list next to the corresponding enable and disable calls) and it makes it hard to do more fine-grained changes that only enable or disabled a single renderer at a time. PiperOrigin-RevId: 300513788
tonihei committed -
Also adds tests covering the internal implementation. Issue:#5660 PiperOrigin-RevId: 300513548
tonihei committed -
Removes usage of PlaybackParameters where it seems to be trivial. PiperOrigin-RevId: 300435199
bachinger committed -
After this change MediaClocks and ExoPlayerImplInternal don't depend on the deprecated PlaybackParameter anymore but only know about playbackSpeed. PiperOrigin-RevId: 300428791
bachinger committed -
This change deprecates the PlaybackParameters and remove the skipSilenceField from the PlaybackParameters. This implies that enabling and disabling skipping silences needs to be done on the Player.AudioComponent after this change. After submission of the change, all Player API changes are done which are required to bring playbackSpeed and skipSilenceEnabled in the converged Player API state. PiperOrigin-RevId: 300420843
bachinger committed
-
- 11 Mar, 2020 11 commits
-
-
https://github.com/google/ExoPlayer/commit/5485133e5c7965f98d71da3cb92033b35f596c61
*** Original commit *** Rollback of https://github.com/google/ExoPlayer/commit/949bbcfb2e98c5cb76ebb35d68fc9f0da4706f16 *** Original commit *** Add masking for playWhenReady. Masking is needed as soon as updates to a value can happen both in EPI and EPII. PlayWhenReady is currently not masked because all updates happen in EPI only. As soon as we allow pausing at certain times (e.g. end of a stream), playWhenReady c... *** PiperOrigin-RevId: 300330307
tonihei committed -
PiperOrigin-RevId: 300330109
Oliver Woodman committed -
PiperOrigin-RevId: 300313753
Oliver Woodman committed -
https://github.com/google/ExoPlayer/commit/949bbcfb2e98c5cb76ebb35d68fc9f0da4706f16
*** Original commit *** Add masking for playWhenReady. Masking is needed as soon as updates to a value can happen both in EPI and EPII. PlayWhenReady is currently not masked because all updates happen in EPI only. As soon as we allow pausing at certain times (e.g. end of a stream), playWhenReady changes may be triggered by EPII as well and that's why we need masking. To know when the value actually changed, we also need to update the internal state to include whether playback is supppressed. *** PiperOrigin-RevId: 300303307
tonihei committed -
Masking is needed as soon as updates to a value can happen both in EPI and EPII. PlayWhenReady is currently not masked because all updates happen in EPI only. As soon as we allow pausing at certain times (e.g. end of a stream), playWhenReady changes may be triggered by EPII as well and that's why we need masking. To know when the value actually changed, we also need to update the internal state to include whether playback is supppressed. PiperOrigin-RevId: 300284613
tonihei committed -
PiperOrigin-RevId: 300249371
olly committed -
Exceeding the period duration may mean that that playback transitions to another item even if the player is currently paused. PiperOrigin-RevId: 300133655
tonihei committed -
There is no need for that, updating them is often forgotten and takes up too much line space. Replace by a single TAG per test class. PiperOrigin-RevId: 300113072
tonihei committed -
PiperOrigin-RevId: 300067561
olly committed -
PiperOrigin-RevId: 300067502
olly committed -
This change uses mime types in a functionally equivalent way to how we used the extension hint so far. Using a mimeType instead of the extension has some advantages. Most importantly mimeTypes are used by the cast SDK with which we want to achieve interoperability in the cast extension. Using a mimeType instead of the extension hint further appears to be a bit more clear (which might be opinionated). Further mime types are a well known and widely used concept to identify file type on the internet and it provides asterix based generalizations (audio/*, */*) which could express the media type OTHER that ExoPlayer is using internally (no usage of asterix required so far though). PiperOrigin-RevId: 300058945
bachinger committed
-
- 10 Mar, 2020 20 commits
-
-
PiperOrigin-RevId: 299943596
bachinger committed -
Requested by https://github.com/google/ExoPlayer/issues/7058. Additionally move one of the common option in COMMON_OPTIONS. PiperOrigin-RevId: 299862479
krocard committed -
Disabling reference counting allows some checks to be removed. This is a no-op. PiperOrigin-RevId: 299829600
samrobinson committed -
handlePrepare/Stop/SetPlayReady can be merged together as they all handle changes to the desires state of the player. Also, simplify parts of the control flow by not mixing code that determines if audio focus needs to be handled with code that actually acquires or abandons the focus. PiperOrigin-RevId: 299824857
tonihei committed -
PiperOrigin-RevId: 299819656
olly committed -
Without this option it's impossible to merge periods covering different timestamps (at least not without playback issues). Issue:issue:#6103 PiperOrigin-RevId: 299817540
tonihei committed -
PiperOrigin-RevId: 299361095
bachinger committed -
PiperOrigin-RevId: 299357049
Oliver Woodman committed -
Issue: #6975 PiperOrigin-RevId: 299328798
kimvde committed -
Pre-work for issue:#6765 PiperOrigin-RevId: 299322086
ibaker committed -
Part of issue:#6765 PiperOrigin-RevId: 299319146
ibaker committed -
This is passed in but not currently used. I'll use it in follow-up changes. Pre-work for issue:#6765 PiperOrigin-RevId: 299314341
ibaker committed -
It's quite anoying to have to search in the list the last item played everytime the demo is restarted. Fix that by saving and restoring it. PiperOrigin-RevId: 299109261
krocard committed -
PiperOrigin-RevId: 299092243
aquilescanta committed -
PiperOrigin-RevId: 299057572
christosts committed -
PiperOrigin-RevId: 298879027
bachinger committed -
The new version fixes some warnings in Gradle builds. Also add missing indirect compileOnly dependencies to fix some more warnings Issue:issue:#7007 PiperOrigin-RevId: 298855510
tonihei committed -
PiperOrigin-RevId: 298844826
tonihei committed -
The new name better reflects the purpose of the method. PiperOrigin-RevId: 298835578
tonihei committed -
This tests explicitly that initialization happens even if the Timeline is a placeholder. No other change is needed. While the Timeline is still a placeholder ImaAdsLoader.getCurrentPeriodPosition will return 0 and trigger pre-rolls (intended behaviour) and it doesn't matter whether the actual initial period position may be somewhere else. PiperOrigin-RevId: 298833867
tonihei committed
-