- 15 Dec, 2022 2 commits
-
-
BasePlayer simplifies implementations by handling all the various seek methods and forwarding to a single method that can then be implemented by subclasses. However, this loses the information about the concrete entry point used for seeking, which is relevant when the subclass wants to verify or filter by Player.Command. This can be improved by adding the command as a new parameter. Since we have to change the method anyway, we can also incorporate the boolean flag about whether the current item is repeated to avoid the separate method. PiperOrigin-RevId: 494948094
tonihei committed -
PiperOrigin-RevId: 494736085
samrobinson committed
-
- 12 Dec, 2022 38 commits
-
-
PiperOrigin-RevId: 494651985
samrobinson committed -
This is a step towards allowing apps to inject a custom AssetLoader PiperOrigin-RevId: 494185078
kimvde committed -
#minor-release PiperOrigin-RevId: 494166943
samrobinson committed -
- Use a single `VideoSize` instance instead of four primitive fields. - Clarify that the reported size is the decoded size, that is the encoded video size. PiperOrigin-RevId: 494148190
claincly committed -
calls setbounds() on the drawable as the bounds of a drawable must be set for the .draw() method to work as noted in the [Drawable Documentation](https://developer.android.com/reference/android/graphics/drawable/Drawable#draw(android.graphics.Canvas)). Also fixes createStaticDrawableOverlay() not taking specified overlay settings into account. PiperOrigin-RevId: 494116077
tofunmi committed -
The duration in TransformerInternal.ComponentListener is set on the Transformer internal thread, and is read on the playback thread. Making this field volatile ensures that the playback thread reads the updated value. PiperOrigin-RevId: 493908385
kimvde committed -
https://github.com/google/ExoPlayer/commit/90d4fdcf0f4a3cb7b6c8cfeebc79f3f3db7eab31
*** Original commit *** Fix gradle build Add required import for androidx.window.java.layout.WindowInfoTrackerCallbackAdapter *** PiperOrigin-RevId: 493907749
michaelkatz committed -
https://github.com/google/ExoPlayer/commit/749d77b1d9989d091dc11269087093bc2c48d216
*** Original commit *** Make PlayerView fold aware *** PiperOrigin-RevId: 493846471
ibaker committed -
Some Player methods like getting the Looper and adding listeners were always allowed to be called from any thread, but this is undocumented. This change makes the threading rules of these methods more explicit. Removing listeners was never meant to be called from another thread and we also don't support it safely because final callbacks may be triggered from the wrong thread. To find potential issues, we can assert the correct thread when releasing listeners. Finally, there is a potential race condition when calling addListener from a different thread at the same time as release, which may lead to a registered listener that could receive callbacks after the player is released. PiperOrigin-RevId: 493843981
tonihei committed -
It looks like this was added accidentally in <unknown commit>. PiperOrigin-RevId: 493834134
tonihei committed -
An AndroidTest is needed to test the message sending from ExoPlayerImpl to a video renderer (MCVR in this case). The test will be added later. PiperOrigin-RevId: 493602259
claincly committed -
PiperOrigin-RevId: 493557119
claincly committed -
The folder type has a mix of information about the item. It shows whether the item is browsable (type != FOLDER_TYPE_NONE) and which Bluetooth folder type to set for legacy session information. It's a lot clearer to split this into a boolean isBrowsable and use the existing mediaType to map back to the bluetooth folder type where required. folderType is not marked as deprecated yet as this would be an API change, which will be done later. PiperOrigin-RevId: 493544589
tonihei committed -
This adds support for the release handling. To align with the established behavior in ExoPlayer, the player can only call listeners from within the release methods (and not afterwards) and automatically enforces an IDLE state (without listener call) in case getters of the player are used after release. PiperOrigin-RevId: 493543958
tonihei committed -
PiperOrigin-RevId: 493543188
tofunmi committed -
This shouldn't really have anything to do with HDR. PiperOrigin-RevId: 493357915
huangdarwin committed -
Implements milestone 1.4.2 of the [overlays implementation plan](https://docs.google.com/document/d/1EcP2GN8k8N74hHZyD0KTqm9oQo5-W1dZMqIVyqVGtlo/edit#bookmark=id.76uzcie1dg9d) PiperOrigin-RevId: 493324764
tofunmi committed -
Rename ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED to ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED. This makes the error code more consistent with ERROR_CODE_DECODING_FAILED on the decoding side. Also, the error code is in the "Encoding errors (4xxx)" section, so muxer errors probably should be in the "Muxer errors (7xxx)" section instead. Additionally, no muxer errors currently seem to use ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED, so this should be a safe change. PiperOrigin-RevId: 493322880
huangdarwin committed -
PiperOrigin-RevId: 493300556
kimvde committed -
This is necessary to move video slow motion flattening to the AssetLoader because this step can change the duration. As we use the duration before flattening to calculate the progress, we must also use the position before flattening. PiperOrigin-RevId: 493291990
kimvde committed -
Implements milestone 1.4.1 of the [overlays implementation plan](https://docs.google.com/document/d/1EcP2GN8k8N74hHZyD0KTqm9oQo5-W1dZMqIVyqVGtlo/edit#bookmark=id.76uzcie1dg9d) PiperOrigin-RevId: 493291813
tofunmi committed -
Implements milestone 1.3 of the [overlays implementation plan](https://docs.google.com/document/d/1EcP2GN8k8N74hHZyD0KTqm9oQo5-W1dZMqIVyqVGtlo/edit#bookmark=id.76uzcie1dg9d) PiperOrigin-RevId: 493290147
tofunmi committed -
Implements milestone 1.2 of the [overlays implementation plan](https://docs.google.com/document/d/1EcP2GN8k8N74hHZyD0KTqm9oQo5-W1dZMqIVyqVGtlo/edit#bookmark=id.76uzcie1dg9d) PiperOrigin-RevId: 493282868
tofunmi committed -
PiperOrigin-RevId: 493281221
claincly committed -
Fix some other link titles and destinations spotted along the way. #minor-release PiperOrigin-RevId: 493276172
ibaker committed -
These terms are easier to understand, and make sense in the context of MatrixTextureProcessor now that a MatrixTextureProcessor may have a different input and output transfer. PiperOrigin-RevId: 493265980
huangdarwin committed -
PiperOrigin-RevId: 493260798
kimvde committed -
Modify FrameProcessor and MatrixTextureProcessor interfaces to support different input and output color transfers. Does not implement conversion between color ranges (ex. HDR and SDR), but should allow for conversion between color transfers of the same color range (ex. HLG and PQ). This supports in-app tone mapping, where we need a single FrameProcessor to input HDR color transfers (ex. HLG/PQ) and output SDR (ex. gamma2.2). This also supports previewing, where we need a single FrameProcessor to be able to input HLG and output PQ. Manually tested by confirming colors still look right on SDR and HDR videos with a rotation and color affect applied. PiperOrigin-RevId: 493108678
huangdarwin committed -
By putting Listener as the last argument. PiperOrigin-RevId: 493100906
claincly committed -
PiperOrigin-RevId: 493040714
kimvde committed -
From this CL on, FrameProcessor listeners will be invoked from an Executor that is passed in when creating the FrameProcessor. GlTextureProcessor needs to invoke the ErrorListener on the said Executor too. PiperOrigin-RevId: 493018583
claincly committed -
PiperOrigin-RevId: 493001630
samrobinson committed -
Adds a modified version of sample.mp4 to the list, which has no audio. PiperOrigin-RevId: 492993918
samrobinson committed -
PiperOrigin-RevId: 492579961
Googler committed -
These have the same value (`-1`), and basically the same meaning (offset in an array/list/file/byte stream/etc), but 'position' is an overloaded term in a media playback library, and there's a risk people assume that methods like `Player.getCurrentPosition()` may return `C.POSITION_UNSET`, when in fact unset media times (whether duration or position) are always represented by `C.TIME_UNSET` which is a) a `long` (not `int`) and b) a different underlying value. (aside: `getCurrentPosition()` never returns an unset value, but it's a good example of the ambiguity of the word 'position' between 'byte offset' and 'media timestamp'.) PiperOrigin-RevId: 492493102
ibaker committed -
The callback is currently triggered on the ExoPlayer playback thread instead of the app thread that added the listener. PiperOrigin-RevId: 492474405
tonihei committed -
This inconsistency was exposed by an upcoming change to deprecate `POSITION_UNSET` in favour of `INDEX_UNSET` because position is an ambiguous term between 'byte offset' and 'media position', as shown here. PiperOrigin-RevId: 492470241
ibaker committed -
Discovered while investigating Issue: google/ExoPlayer#10823 Example stack trace with the previous code (I added the index value for debugging): ``` playerFailed [eventTime=44.07, mediaPos=44.01, window=0, period=0, errorCode=ERROR_CODE_FAILED_RUNTIME_CHECK androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:635) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loopOnce(Looper.java:202) at android.os.Looper.loop(Looper.java:291) at android.os.HandlerThread.run(HandlerThread.java:67) Caused by: java.lang.IllegalArgumentException: index=-1 at androidx.media3.common.util.Assertions.checkArgument(Assertions.java:55) at androidx.media3.extractor.text.webvtt.WebvttSubtitle.getEventTime(WebvttSubtitle.java:62) at androidx.media3.extractor.text.SubtitleOutputBuffer.getEventTime(SubtitleOutputBuffer.java:56) at androidx.media3.exoplayer.text.TextRenderer.getCurrentEventTimeUs(TextRenderer.java:435) at androidx.media3.exoplayer.text.TextRenderer.render(TextRenderer.java:268) at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1008) at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:509) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loopOnce(Looper.java:202) at android.os.Looper.loop(Looper.java:291) at android.os.HandlerThread.run(HandlerThread.java:67) ] ``` #minor-release PiperOrigin-RevId: 492464180ibaker committed
-