- 21 May, 2021 9 commits
-
-
#minor-release PiperOrigin-RevId: 375097412
samrobinson committed -
Unlike Assertions, the introduced method cannot be disabled and throws a ParserException instead. This method is meant to replace regular assertions (which throw RuntimeExceptions) which check input in the parsing code. PiperOrigin-RevId: 375085160
aquilescanta committed -
Its absence seems to have caused https://github.com/google/ExoPlayer/issues/8969. #minor-release PiperOrigin-RevId: 375058222
krocard committed -
PiperOrigin-RevId: 375054051
olly committed -
We need to avoid reading and skipping into preload chunks as they may need to be discarded. The current code iterates over all chunks, but this can be simplified by just checking the last chunk knowing that the preload chunk must always be the last one. As a result, we avoid calling getFirstSampleIndex on all chunks. This is a bug since the method is not allowed to be called for chunks that have been spliced in. This still leaves the smaller issue of potentially calling this method for spliced-in preload chunks, which will be solved separately. Issue: #8937 #minor-release PiperOrigin-RevId: 375053638
tonihei committed -
Tweak the way directories are passed PiperOrigin-RevId: 374912886
olly committed -
PiperOrigin-RevId: 374885599
aquilescanta committed -
PiperOrigin-RevId: 374880929
aquilescanta committed -
PiperOrigin-RevId: 374874272
aquilescanta committed
-
- 20 May, 2021 9 commits
-
-
Preload chunks may still need to be discarded. However, we don't currently support discarding spliced-in chunks. Thus, we need to avoid loadng a preload chunk that needs to be spliced-in. Issue: #8937 #minor-release PiperOrigin-RevId: 374851661
tonihei committed -
PiperOrigin-RevId: 374847609
olly committed -
Colocate lines that refer to the same module, to reduce probability of accidentally removing one line and not the other (which has happened more than once :)). PiperOrigin-RevId: 374847082
olly committed -
This media source wraps another source and publishes a Timeline with ads. The created MediaPeriods for ad and content are mapped back to the original stream to allow seamless playback. PiperOrigin-RevId: 374836091
tonihei committed -
PiperOrigin-RevId: 374836046
tonihei committed -
There is a newly added condition to help advancing between SSAI ads and content in case the ad group position or ad duration changed. The condition currently doesn't check directly whether it's a SSAI transition but relies on indrect signals. Making this more direct helps to understand the purpose and avoid unintentional bugs where this condition would apply in other cases too. In addition, we need to exclude TextRenderer from the check because its read position doesn't correspond to the actual decode position since the decoding happens in the renderer itself (b/181312195). PiperOrigin-RevId: 374835985
tonihei committed -
We can instead just save this information in MediaPeriodInfo, similar to how we store whether the MediaPeriod is last in the timeline etc. PiperOrigin-RevId: 374835918
tonihei committed -
PiperOrigin-RevId: 374830877
olly committed -
It only covers MediaSession - MediaController (Does not consider cases that either a legacy session or a legacy controller is involved) Add PlayerInfo#Builder to clean it up. PiperOrigin-RevId: 374785779
klhyun committed
-
- 19 May, 2021 11 commits
-
-
PiperOrigin-RevId: 374621615
christosts committed -
This allows users to use `int` to store an optional command. PiperOrigin-RevId: 374600127
krocard committed -
#minor-release PiperOrigin-RevId: 374433331
claincly committed -
PiperOrigin-RevId: 374425179
aquilescanta committed -
Gradle warns against passing a relative path to `new File(String)`: https://docs.gradle.org/current/userguide/working_with_files.html#sec:single_file_paths This change fixes all usages of `exoplayerRoot` to pass it to Gradle's `Project.file()` first, which returns an absolute `File`. To reproduce the problem in Issue: #8927: 1. Checkout ExoPlayer git project, to e.g. `~/ExoPlayer/exoplayer-git` 2. Create a new Android Studio project in e.g. `~/AndroidStudioProjects/exoplayer-test` 3. Edit the new project's `settings.gradle` file as described in https://github.com/google/ExoPlayer/blob/release-v2/README.md using a relative path for `exoplayerRoot`: ``` gradle.ext.exoplayerRoot = '../../ExoPlayer/exoplayer-git' ``` 4. In a shell: ```bash $ cd ~/AndroidStudioProjects/exoplayer-test/app $ ../gradlew build ``` (Step 4 is important, it seems running `./gradlew` from the project root doesn't trigger the relative path problem) This change fixes the problem, and also works with `exoplayerRoot` as a `File` or `Path` object. `String`, `File` and `Path` all work with relative or absolute paths: ``` gradle.ext.exoplayerRoot = '/home/ibaker/ExoPlayer/exoplayer-git' gradle.ext.exoplayerRoot = '../../ExoPlayer/exoplayer-git' gradle.ext.exoplayerRoot = new File('/home/ibaker/ExoPlayer/exoplayer-git') gradle.ext.exoplayerRoot = new File('../../ExoPlayer/exoplayer-git') gradle.ext.exoplayerRoot = Paths.get('/home/ibaker/ExoPlayer/exoplayer-git') gradle.ext.exoplayerRoot = Paths.get('../../ExoPlayer/exoplayer-git') ``` Note: The Path versions above require importing `java.nio.file.Paths` and changing the `apply from:` line in the project's settings.gradle file to something like: ``` apply from: file(gradle.ext.exoplayerRoot.resolve('core_settings.gradle')) ``` It's assumed that a project wanting to pass a `Path` will make these changes. Issue: #8927 PiperOrigin-RevId: 374421627
ibaker committed -
PiperOrigin-RevId: 374418502
aquilescanta committed -
PiperOrigin-RevId: 374416794
aquilescanta committed -
Notes: - The only functional change is that createForRemote now assings ERROR_CODE_REMOTE_ERROR. - createForSource still uses ERROR_CODE_UNSPECIFIED, even though it expects an IOException. The reason for not using ERROR_CODE_IO_UNSPECIFIED is that the reason for the error might not be IO. For example, malformed media, or BehindLiveWindowException, which have non-IO error codes. So using UNSPECIFIED saves a later change in category. PiperOrigin-RevId: 374390407
aquilescanta committed -
When working with SSAI ads, we need to easily convert positions between the underlying stream and the media model that exposes ad groups. To simplify this, we can add util methods (that are testable on their own). In addition, we need an easy way to build AdPlaybackStates for SSAI inserted ads. The metadata is obtained out-of-band and usually has the ad group start and end times in the underlying stream only. Hence, we also add a util method to add a new ad group based on this information. PiperOrigin-RevId: 374369360
tonihei committed -
PiperOrigin-RevId: 374253036
aquilescanta committed -
#minor-release PiperOrigin-RevId: 374235979
samrobinson committed
-
- 17 May, 2021 9 commits
-
-
Also added test cases covering this. PiperOrigin-RevId: 374218514
tonihei committed -
PiperOrigin-RevId: 374216724
olly committed -
PiperOrigin-RevId: 374186953
tonihei committed -
MediaSession default command state contains all commands. To avoid having to update MediaSession when a command is added, allow to create a Commands.Builder that starts with all commands. PiperOrigin-RevId: 374183484
krocard committed -
The assertion doesn't check equality (as in x.equals(y)), but rather whether a subset of the fields are equal. PiperOrigin-RevId: 374183338
aquilescanta committed -
PiperOrigin-RevId: 374171038
olly committed -
#minor-release PiperOrigin-RevId: 374161340
olly committed -
Make ForwardingPlayer implement Player and not extend BasePlayer so that ForwardingPlayer forwards each Player method directly to the wrapped Player instance. PiperOrigin-RevId: 374161084
christosts committed -
The issue is fixed in 2.14.0 - keys are fetched ahead of playback #minor-release PiperOrigin-RevId: 374159998
ibaker committed
-
- 14 May, 2021 2 commits
-
-
Oliver Woodman committed
-
Oliver Woodman committed
-