- 30 Nov, 2020 2 commits
- 23 Nov, 2020 15 commits
-
-
RunnableFutureTask is not reusable. Trying to reuse it meant that a failure in one doWork() call would cause subsequent download() calls to (a) not block until the runnable has finished executing (does not apply when using a direct executor), and (b) throw the same failure as thrown from the first doWork() call. This could cause #8078 if the initial failure occurred before the content length was resolved. Retries are not blocked on their work completing due to (a), and the download would be marked as failed due to (b). The work itself could then resolve the content length, which causes the stack trace in this issue. Issue: #8078 PiperOrigin-RevId: 343498252
olly committed -
The demo app has two states for downloads, as per DownloadTracker.isDownloaded. It's either "downloaded or downloading" (isDownloaded returns true, and the UI shows a blue tick) or it's "not downloaded or failed (isDownloaded returns false, and the UI does not show a blue tick). toggleDownload is out of sync in that it treates "failed" as belonging to the first state rather than the second. This means tapping on the grey tick in the UI in this case appears to be a no-op (tapping it again will make something happen). This change aligns things by making toggleDownload re-download in the case a previous download failed. In the future we could consider having three states, so failed downloads could be disambiguated properly. Unclear whether it's a good complexity/benefit trade-off for the demo app though! #minor-release PiperOrigin-RevId: 343464364
olly committed -
When a stream has duplicate timestamps we currently discard to the last sample with the specified discardTo timestamp, but it should be the first one to adhere to the method doc and the intended usage. #minor-release PiperOrigin-RevId: 343458870
tonihei committed -
PiperOrigin-RevId: 343437513
sungsoo committed -
PiperOrigin-RevId: 343432873
sungsoo committed -
Background: 1. When the player has multiple audio renderers, by default they share a single AudioSink. 2. When any new renderer is enabled, all disabled renderers are reset prior to the new renderer being enabled. This is to give them a chance to free up resources in case the renderer being enabled needs them. These reset calls are expected to be no-ops for renderers that have never been enabled. The issue: The problematic case arises when there are two audio renderers and a third renderer (e.g., text) is being enabled. In this case, the disabled audio renderer's reset call ends up resetting the AudioSink that's shared with the enabled audio renderer. The enabled audio renderer is then unable to make progress, causing playback to freeze. This is a minimal fix that directly prevents the mentioned issue. There are multiple follow-ups that would probably make sense: 1. Having ExoPlayerImplInternal track which renderers need to be reset, and only resetting those renderers rather than all that are disabled. This seems like a good thing to do regardless, rather than relying on those calls being no-ops. 2. If we want to continue sharing AudioSink, we need to formalize this much better and make sure we have good test coverage. Messages like MSG_SET_VOLUME are also delivered to the AudioSink multiple times via each of the renderers, which works currently because DefaultAudioSink no-ops all but the first call in each case. This is pretty fragile though! Issue: #8203 PiperOrigin-RevId: 343296081
olly committed -
This is inline with other show-toast-on-error cases in this method, and avoids leaving the user on a completely black screen. Note that the maybeRequestReadExternalStoragePermission is an exception because it's not actually an error case. #minor-release PiperOrigin-RevId: 343264869
olly committed -
Issue: #7898 PiperOrigin-RevId: 343251455
olly committed -
ExoPlayer's traditional HLS preparation works by loading a chunk from each track group, and then tries to use the sample information plus the master playlist information to generate the preparation's resulting TrackGroups. There are 3 possible scenarios: - Supported case: Each variant has a single codec string per track type. We can assign each track the codec string which matches the loaded sample's type. - Supported case: Each variant has more than one codec string, but each track group has a single track. This is the case when different languages use different codecs. In this case, we can assign whichever codec matches the loaded sample's mime type. - Unsupported case: Each variant has more than one codec string, and track groups contain more than one track. We are not able to safely map tracks to codec strings because that would require loading a chunk from each track (which would considerably delay preparation). Broken in: https://github.com/google/ExoPlayer/commit/4783c329cc545da4269a9401a4975a41e75f2f43 PiperOrigin-RevId: 343072201
aquilescanta committed -
PiperOrigin-RevId: 342672124
olly committed -
Issue: #8090 #minor-release PiperOrigin-RevId: 342638922
olly committed -
This ensures the buffer is not full when the `DefaultLoadControl` determines whether we should continue loading and thus prevents a false warning about not having enough memory left. PiperOrigin-RevId: 342616623
tonihei committed -
This change also introduces gravity attribute to DefaultTimeBar. PiperOrigin-RevId: 342573167
insun committed -
PiperOrigin-RevId: 342512836
olly committed -
Pass the drm_key_request_properties specified in the json list when donwloading thee offline Widevide license in the demo app. PiperOrigin-RevId: 342243441
christosts committed
-
- 19 Nov, 2020 9 commits
-
-
#minor-release PiperOrigin-RevId: 341833274
olly committed -
#minor-release PiperOrigin-RevId: 341668326
olly committed -
Issue:#8191 PiperOrigin-RevId: 341632732
kimvde committed -
Issue: #7882 PiperOrigin-RevId: 341394254
bachinger committed -
PiperOrigin-RevId: 340826532
ibaker committed -
This test is not run in presubmit as it was too flaky, and is currently broken due to assets moving. Also migrate off ImaPlaybackTest off deprecated APIs. #minor-release PiperOrigin-RevId: 340405666
andrewlewis committed -
- Support 32-bit A_PCM/FLOAT/IEEE PCM - Support 8-bit and 16-bit A_PCM/INT/BIG PCM Issue: #8142 PiperOrigin-RevId: 340264679
olly committed -
PiperOrigin-RevId: 340254878
Oliver Woodman committed -
#minor-release PiperOrigin-RevId: 340249019
ibaker committed
-
- 18 Nov, 2020 13 commits
-
-
PiperOrigin-RevId: 340198099
andrewlewis committed -
Some content types always provide the license URL in the media. The PlayReady example in the demo app doesn't provide a default license URL for this reason, as an example. #minor-release PiperOrigin-RevId: 340125784
olly committed -
#minor-release PiperOrigin-RevId: 339447845
andrewlewis committed -
ImaAdsLoader notified onEnded whenever an ad finished playing, but when an ad is skipped in an ad pod we'd receive a playAd call before the player discontinuity for skipping to the next ad. Fix this behavior by checking that IMA's playing ad matches the player's playing ad before notifying onEnded. #minor-release PiperOrigin-RevId: 339424910
andrewlewis committed -
Add logging for ad progress and switch from deprecated getters to new millisecond getters. PiperOrigin-RevId: 339226534
andrewlewis committed -
Issue: #7832 PiperOrigin-RevId: 339087555
andrewlewis committed -
Without these lines, ProGuard fails on the demo app (R8 works). Also include some more `-dontwarn` lines from https://github.com/google/guava/wiki/UsingProGuardWithGuava Issue: #8103 PiperOrigin-RevId: 339050634
ibaker committed -
Call the new method AdsLoader.release() to allow the IMA SDK to dispose of its WebView. Issue: #7344 PiperOrigin-RevId: 339022162
andrewlewis committed -
Issue: #7983 #minor-release PiperOrigin-RevId: 339016928
aquilescanta committed -
Issue: #8106 Issue: #8087 PiperOrigin-RevId: 338664455
andrewlewis committed -
Issue: #7877 PiperOrigin-RevId: 338659937
aquilescanta committed -
This change fixes format creation for traditional preparation of streams where the master playlist contains more than one codec string per track type. Issue: #7877 PiperOrigin-RevId: 338538693
aquilescanta committed -
When disabling a TsExtractor track type because of a missing codec in the master playlist, look through the entire codecs string instead of checking the first codec with matching type. Issue: #7877 PiperOrigin-RevId: 338530046
aquilescanta committed
-
- 23 Oct, 2020 1 commit
-
-
Oliver Woodman committed
-