- 19 May, 2021 8 commits
-
-
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 8 commits
-
-
Oliver Woodman committed
-
Oliver Woodman committed
-
r2.14.0
Oliver Woodman committed -
Issue: #8927 #minor-release PiperOrigin-RevId: 373752448
ibaker committed -
Oliver Woodman committed
-
Issue: #8927 #minor-release PiperOrigin-RevId: 373752448
ibaker committed -
There are two main changes that need to be made: 1. Whenever we determine the next ad to play, we need to select a server-side inserted ad even if it has been played already (because it's part of the stream). 2. When the Timeline is updated in the player, we need to avoid changes that would unnecessarily reset the renderers. Whenever a Timeline change replaces content with a server-side inserted ad at the same position we can just keep the existing MediaPeriod and also if the duration of the current MediaPeriod is reduced but it is followed by a MediaPeriod in the same SSAI stream, we can don't need to reset the renderers as we keep playing the same stream. PiperOrigin-RevId: 373745031tonihei committed -
Tested: $ ./gradlew :media-test-session-current:cAT $ blaze test test_session_current/src/androidTest:test_with_current_support_app The tests run but seem flaky, not related to this change. PiperOrigin-RevId: 373677924
gyumin committed
-
- 13 May, 2021 12 commits
-
-
This is mainly so that developers can try out RTSP with the main demo app without having to change the build.gradle file. The change also aligns what media can be played across the different demo apps. #minor-release PiperOrigin-RevId: 373591974
olly committed -
This is mainly so that developers can try out RTSP with the main demo app without having to change the build.gradle file. The change also aligns what media can be played across the different demo apps. #minor-release PiperOrigin-RevId: 373591974
olly committed -
#minor-release PiperOrigin-RevId: 373550935
olly committed -
#minor-release PiperOrigin-RevId: 373550935
olly committed -
#minor-release PiperOrigin-RevId: 373543587
olly committed -
#minor-release PiperOrigin-RevId: 373543587
olly committed -
PiperOrigin-RevId: 373542819
aquilescanta committed -
This helps both player the logic and clients like UI or analytics to detect SSAI ads. PiperOrigin-RevId: 373540754
tonihei committed -
In order to deliver Cue objects between different processes (e.g. in Player#getCurrentCues), this CL makes it Bundleable. PiperOrigin-RevId: 373524501
klhyun committed -
In Android 12 mutability flags have to be set on PendingIntents. If they are not, and the app targets Android 12, then the app will be crashed by the system. PiperOrigin-RevId: 373427591
olly committed -
It's no longer used. PiperOrigin-RevId: 373426109
olly committed -
#minor-release PiperOrigin-RevId: 373410795
samrobinson committed
-
- 12 May, 2021 3 commits
-
-
#minor-release PiperOrigin-RevId: 373402932
olly committed -
#minor-release PiperOrigin-RevId: 373402932
olly committed -
Content after ad groups currently always resumes at the ad break position (unless overridden by a seek or similar). In some cases, media inserting ads wants to specify an offset after the ad group at which playback should resume. A common example is a live stream that inserts an ad and then wants to continue streaming at the current live edge. Support this use case by allowing ad groups to specify a content resume offset and making sure that the content start position after the ad group uses this offset. PiperOrigin-RevId: 373393807
tonihei committed
-