- 10 Jan, 2023 8 commits
-
-
This makes more sense as SampleConsumer.dequeueInputBuffer returns the same buffer as long as it is not queued. PiperOrigin-RevId: 500631982
kimvde committed -
Whether to write a sample or not was based on the timestamp of the previous sample, rather than the current sample. PiperOrigin-RevId: 500195279
kimvde committed -
Split ExoPlayerAssetLoaderRenderer into audio and video renderers. PiperOrigin-RevId: 500102256
kimvde committed -
Initialising the fields as Integer and then getting a String on compute time is slow. Instead we directly initialise these fields as String. Improves the time taken in bundling PlayerInfo further to less than 200ms from ~300ms. Also modified a test to improve productive coverage. PiperOrigin-RevId: 500003935
rohks committed -
PiperOrigin-RevId: 499905136
rohks committed -
This brings together the multiple details about a muxer track, and reduces the need for additional variables and more complicated track tracking. PiperOrigin-RevId: 499872145
samrobinson committed -
PiperOrigin-RevId: 499808853
andrewlewis committed -
Throw a ParserException instead of a NullPointerException if the sample table (stbl) is missing a required sample description (stsd). As per the javadoc for AtomParsers.parseTrack, ParserException should be "thrown if the trak atom can't be parsed." PiperOrigin-RevId: 499522748
Googler committed
-
- 04 Jan, 2023 30 commits
-
-
Improves the time taken to construct playerInfo from its bundle from ~400 ms to ~300 ms. Also made `Timeline.Window.toBundle(boolean excludeMediaItem)` public as it was required to assert a condition in tests. PiperOrigin-RevId: 499512353
rohks committed -
The old names are not really correct anymore because: - The Audio/VideoTranscodingSamplePipelines do not decode anymore. - The pipelines now mux the encoded data. PiperOrigin-RevId: 499498446
kimvde committed -
Whilst testing fallback functionality, I found that we were aggressively reducing the resolution if it was not supported. A quick test found that we could reduce by a much smaller increments. Performance wise it appears these checks are incredibly quick. The code for checking supported sizes was duplicated, with one case having a bug because of this duplication (2/3 case). This CL abstracts this into a loop. PiperOrigin-RevId: 499497646
samrobinson committed -
PiperOrigin-RevId: 499469006
kimvde committed -
Added another check in each of these tests to make sure we don't add keys to bundle for fields with default values. Also fixed comments of similar changes in `AdPlaybackStateTest` and `MediaMetadataTest`. PiperOrigin-RevId: 499463581
rohks committed -
PiperOrigin-RevId: 499454273
kimvde committed -
Based on experimentation it seems that buffers can occasionally (roughly 1% of test runs) be dropped when rendering off-screen from EGL on the emulator. Specifically, in this test, sometimes after rendering three buffers with distinct timestamps only the first and third buffers' timestamps are handled in the `ImageReader`'s image available callback causing the assertion checking all frames rendered to fail. This behavior seems to be independent of the nanosecond presentation time attached to the buffers (as expected for off-screen rendering). Introducing a pause of 1 second between rendering each frame reduces the flake rate to around 1/2000. This increases the run time of some of the tests, so this change also removes the 5 second `FRAME_PROCESSING_WAIT_MS` (it seems to be unnecessary when rendering off-screen) and instead uses a latch to wait until the frame processor has handled 'end of stream'. PiperOrigin-RevId: 499440591
andrewlewis committed -
- Do not fail silently if selectedEffects is null. - Do not add an empty overlay effect to the Transformer to avoid transcoding video all the time. PiperOrigin-RevId: 499168759
kimvde committed -
PiperOrigin-RevId: 499160043
kimvde committed -
- Improve AssetLoader Javadoc - Fix Javadoc of sample pipelines - Improve Javadoc of Transformer.startTransformation - Move thread hops for Transformer listener callbacks to TransformerInternal PiperOrigin-RevId: 499156604
kimvde committed -
When a listener method is deprecated, the new method should (by default) called through to the deprecated one. This is because any class that implements the method that is now deprecated needs to still receive that callback. It appears when onTransformationError(MediaItem, Exception) was deprecated in favour of onTransformationError(MediaItem, TransformationException), this deprecation was the wrong way round, and the newer callback - onTransformationError(MediaItem, TransformationResult, TransformationException) continued this mistake. This CL now corrects this. PiperOrigin-RevId: 498221504
samrobinson committed -
PiperOrigin-RevId: 497921432
kimvde committed -
This change allows an overlay to be sized with respect to the video dimensions. PiperOrigin-RevId: 497337734
tofunmi committed -
PiperOrigin-RevId: 497335605
samrobinson committed -
Events on the wrapper should be propagated to TransformerInternal as soon as they occur, switching round the process so TransformerInternal does not have to query MuxerWrapper. This CL is a prerequisite for the child CL, where MuxerWrapper can simplify the internal state and logic. PiperOrigin-RevId: 497267202
samrobinson committed -
PiperOrigin-RevId: 497183220
bachinger committed -
We might as well keep this enabled by default, rather than having to manually toggle it on to investigate RTL issues like Issue: androidx/media#227. PiperOrigin-RevId: 497159744
ibaker committed -
Issue: androidx/media#227 #minor-release PiperOrigin-RevId: 497159283
ibaker committed -
PiperOrigin-RevId: 497113780
tofunmi committed -
PiperOrigin-RevId: 497112875
tofunmi committed -
Before, it was possible for onDurationUs() and onAllTracksRegistered() to be called before onTrackAdded() because they are called from different threads. onDurationUs() and onAllTracksRegistered() are called from the Transformer internal thread, and onTrackAdded() is called from the playback thread. PiperOrigin-RevId: 497102556
kimvde committed -
This is useful if an app passes a custom AssetLoader that can only output encoded or decoded samples. PiperOrigin-RevId: 497097492
kimvde committed -
Did not do this optimisation for `AdPlaybackState.AdGroup` as its length is zero for `AdPlaybackState` with no ads. No need to pass default values while fetching keys, which we always set in `AdPlaybackState.AdGroup.toBundle()`. PiperOrigin-RevId: 496995048
rohks committed -
PiperOrigin-RevId: 496956035
tofunmi committed -
Added another check in test to make sure we don't add keys to bundle for fields with `null` values. PiperOrigin-RevId: 496948705
rohks committed -
Issue: google/ExoPlayer#10845 PiperOrigin-RevId: 496947392
bachinger committed -
PiperOrigin-RevId: 496942702
kimvde committed -
AssetLoader declares the tracks with a setTrackCount() method. Setting the track count on the MuxerWrapper is easier than calling registerTrack() as many times as the number of tracks. PiperOrigin-RevId: 496933501
kimvde committed -
Issue: google/ExoPlayer#10854 PiperOrigin-RevId: 496922055
bachinger committed -
AssetLoader declares the tracks with a setTrackCount() method. Setting the track count on the FallbackListener is easier than calling registerTrack() as many times as the number of tracks. PiperOrigin-RevId: 496919969
kimvde committed
-
- 21 Dec, 2022 2 commits
-
-
The TransformationRequest passed to FallbackListener (and createSupportedTransformationRequest) can have null for values that are inferred from source. Within fallback, this can be height, width, video mime type and audio mime type (HDR mode is not linked to source). requestedFormat has these values populated from source, and supportedFormat then finds the closest supported values to the requested. If any of the values in supportedFormat do not match the requestedFormat, then this method would build upon the TransformationRequest and update ALL possible fallback fields. This is a problem because the fallback listener compares the original request to the fallback one and notifies about all the fields that have changed. This CL changes this so that only the values that are not the same as requested are changed in the supported request that is given to the fallback listener. PiperOrigin-RevId: 496908492
samrobinson committed -
When trying to run the test on Android Studio, error "incompatible types: Buffer cannot be converted to ByteBuffer" is logged. This is because ByteBuffer.flip() returns a Buffer (and not a ByteBuffer). Annotation @CovariantReturnType on ByteBuffer.flip() should resolve this automatically but it doesn't seem supported at the moment. PiperOrigin-RevId: 496894723
kimvde committed
-