- 08 Jan, 2021 13 commits
-
-
There is a race condition when initializing the downloads database. The constructor of the DownloadManager kicks-off the database initialization in its internal thread, but at the same time an app can try to access the database directly through the manager's download index, e.g. doing DonwloadManager manager = new ... manager.getDownloadIndex().getDownload("id"); might enter DefaultDownloadIndex.ensureInitialized() from two threads. When upgrading the downloads table from version 2 to version 3, the first thread that enters the database transaction in ensureInitialized() will drop and recreate the table using the v3 schema. Then, the second thread will attempt to read from the newly created table using the v2 schema, which will fail. This race condition was not introduced in 2.12 but was there already. However, prior to 2.12, the code only dropped and re-created and the table and did not attempt to read any data. Hence, if the race condition happened, the code would drop and create the table twice, but no error would occur. Issue: #8420 #minor-release PiperOrigin-RevId: 350745463christosts committed -
Imported from GitHub PR https://github.com/google/ExoPlayer/pull/8401 This will allow ExoPlayer to check if video track's profile and level are supported by decoder when playing progressive media sources. Merge e582fb91b73c7c95e754167140211d5473c36d14 into 1347d572 Issue: #8393 COPYBARA_INTEGRATE_REVIEW=https://github.com/google/ExoPlayer/pull/8401 from equeim:hevc-codecs e582fb91b73c7c95e754167140211d5473c36d14 PiperOrigin-RevId: 350738065
Alexey Rochev committed -
This requires the parent of the background to draw and have padding large enough to support the size of the ripple. The bottom buttons must remained bordered as the space around them is constrained. PiperOrigin-RevId: 350590722
olly committed -
PiperOrigin-RevId: 350578598
ibaker committed -
Without this feature it's impossible to nicely merge multiple sources with different durations if these durations are not known exactly before the start of playback. Issue: #8422 PiperOrigin-RevId: 350567625
tonihei committed -
This helps to better disambiguate the file from other mpd files in the directory. PiperOrigin-RevId: 350552168
tonihei committed -
These tests are performing offline-centric assertions using a streaming licence. They need to be reconfigured to use a new offline-centric licence that sets the correct duration fields (rental_duration_seconds and playback_duration_seconds). PiperOrigin-RevId: 350550971
ibaker committed -
This allows to set preferences based on MIME type for video and audio. The MIME type preference is applied after other explicit preferences and restrictions (e.g. language or max resolution), but before implicit preferences like bitrate. Issue: #8320 PiperOrigin-RevId: 350550543
tonihei committed -
Issue: #5011 PiperOrigin-RevId: 350550204
bachinger committed -
Reported by https://github.com/google/ExoPlayer/issues/8329. PiperOrigin-RevId: 350547523
krocard committed -
https://github.com/google/ExoPlayer/commit/1347d572ef9ce79aacd667cfffa7d7468c8408a4
*** Original commit *** Restore old SampleQueue exoMediaCryptoType behavior *** PiperOrigin-RevId: 350545215
olly committed -
Issue: #5011 PiperOrigin-RevId: 350540152
bachinger committed -
Add assertion to check an output format has been propagated before returning an output buffer when operating MediaCodec in asynchronous mode. PiperOrigin-RevId: 350534918
christosts committed
-
- 07 Jan, 2021 9 commits
-
-
`stop(true)` is almost the same as `clearMediaItems(); stop();`, except that any player error isn't cleared. Clearing media items more clearly expresses the intent. PiperOrigin-RevId: 350516748
andrewlewis committed -
The flag compared against the nowTime in the period that is only set to a positive value for live streams. PiperOrigin-RevId: 350514934
tonihei committed -
PiperOrigin-RevId: 350442843
olly committed -
In many cases we just used "playback speed" as a detailed Javadoc parameter or return type definition. This doesn't define which scale the speed is using. PlaybackParameters as the main point to set the speed already uses a more precise wording to describe the value as a factor by which playback will be sped up. This change replaces other usages of "playback speed" with this wording whereever we would usually add a unit, keeping "playback speed" for summary statements etc to reference the general concept that doesn't usually require a unit. PiperOrigin-RevId: 350379139
tonihei committed -
Issue: #8190 PiperOrigin-RevId: 350357825
olly committed -
The experimental setting shows positive results and can be turned on by default. To avoid adaptation between HLS audio formats without bitrates, we need to ensure that only formats with bitrates are considered for adaptation. Also added tests for these features. Issue: #5111 PiperOrigin-RevId: 350315296
tonihei committed -
The AsynchronousMediaCodecCallback has logic to retain a pending output format in case flush() is called. This commit fixes a case where calling flush() again while an output format is pending would nullify the pending output format. A unit test is added in AsynchronousMediaCodecCallback but not the AsynchronousMediaCodecAdapter. That is because the adapter operates directly on top of MediaCodec, but Robolectric's ShadowMediaCodec produces an output format on every MediaCodec.start(). This is unrealistic when operating MediaCodec in asynchronous mode where we need to call MediaCodec.start() after every MediaCodec.flush(). PiperOrigin-RevId: 350176659
christosts committed -
- The AdaptiveTrackSelection doesn't need to use the experimental terminolgy because the code is always triggered if there are multiple adaptive selections. - It's also confusing to pass the state on the outside after the object creation, so moving everything into a simple control flow again where the adaptation checkpoints are passed in via the constructor. - Instead of triple arrays, we can use more readable named structures. - The calculation of the checkpoints can be cleaned up to be more readable by moving things to helper methods. - The reserved bandwidth from all fixed track selections is really just a special case of multiple parallel adaptataions. So this logic doesn't need to be separate. - The whole logic also didn't have test coverage so far. Added tests for the actual adaptation using these checkpoints and the builder calculating the checkpoints. Overall this should be a no-op change. PiperOrigin-RevId: 350162834
tonihei committed -
Overriding this method will never be necessary or advisable once we improve routing of audio session IDs Issue: #8190 PiperOrigin-RevId: 350146302
olly committed
-
- 05 Jan, 2021 4 commits
-
-
Issue: #8419 #minor-release PiperOrigin-RevId: 350134719
olly committed -
PiperOrigin-RevId: 350105847
Ian Baker committed -
PiperOrigin-RevId: 350100601
andrewlewis committed -
This is in preparation for using them from the extractor module. PiperOrigin-RevId: 349571390
andrewlewis committed
-
- 24 Dec, 2020 1 commit
-
-
This will allow ExoPlayer to check if video track's profile and level are supported by decoder when playing progressive media sources. Also fix typo in AvcConfig.
Alexey Rochev committed
-
- 23 Dec, 2020 13 commits
-
-
PiperOrigin-RevId: 348818482
olly committed -
PiperOrigin-RevId: 348795995
olly committed -
#minor-release Issue: #8374 PiperOrigin-RevId: 348792965
olly committed -
PiperOrigin-RevId: 348789555
olly committed -
PiperOrigin-RevId: 348784475
olly committed -
https://github.com/google/ExoPlayer/commit/dd7b379dc0344316488eb816e06638182a9eed90
*** Original commit *** DataSource.open() throws if already opened. Update DataSource implementations to throw an error if open() is called when the DataSource is already open. *** PiperOrigin-RevId: 348783425
olly committed -
PiperOrigin-RevId: 348760170
ibaker committed -
Also add a MockWebServer Dispatcher that can be customised with different resources and behaviours for different paths. PiperOrigin-RevId: 348759662
ibaker committed -
The length needs to change depending on the positition/length parameters passed to DataSpec, so it doesn't really make sense to keep this private method - it's clearer to in-line the calls in each test. PiperOrigin-RevId: 348749254
ibaker committed -
PiperOrigin-RevId: 348688419
bachinger committed -
Issue: #4904 Issue: #5011 PiperOrigin-RevId: 348655288
tonihei committed -
These two things were reported by the nullness checker as warnings. PiperOrigin-RevId: 348650535
tonihei committed -
Update DataSource implementations to throw an error if open() is called when the DataSource is already open. PiperOrigin-RevId: 348609860
christosts committed
-