- 10 Jan, 2023 14 commits
-
-
PiperOrigin-RevId: 501010994
tonihei committed -
When audio processors are enabled during tunneling, they must produce output immediately, ensuring that the timestamps of the output samples correspond to the input and that no additional samples are produced. This requirement is documented in the Javadoc of DefaultAudioSink. However, this alone doesn't guarantee all buffers are immediately written to the AudioTrack, because the AudioTrack writes are non-blocking and may need multiple attempts. When draining the audio sink at the end of the stream, we currently fail in this situation because we assert that the timestamp must be set (=the drain operation is a no-op). But this may not be true when the previous non-blocking write wasn't fully handled. We can fix this by saving the last timestamp and reusing it during draining. Issue: google/ExoPlayer#10847 PiperOrigin-RevId: 500943891
tonihei committed -
There is no API to allow applications to use these currently. Until that exists, these classes do not need to be public. PiperOrigin-RevId: 500792401
samrobinson committed -
PiperOrigin-RevId: 500789076
samrobinson committed -
PiperOrigin-RevId: 500786191
samrobinson committed -
PiperOrigin-RevId: 500776260
samrobinson committed -
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 26 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
-