- 17 Apr, 2023 22 commits
-
-
This was just for testing and finishing this class is not useful as it can't wrap an existing MediaPlayer without owning it to track its state. PiperOrigin-RevId: 524851654
tonihei committed -
The actual csd data contains NAL units so it should always start with a NAL unit start code (00 00 00 01). This issue was not caught before because in the code there was no validation to check whether its a valid NAL unit. PiperOrigin-RevId: 524849867
sheenachhabra committed -
The sessions may have different application threads for their players, and the service with its notification provider runs on the main thread. To ensure everything runs on the correct thread, this change labels methods where needed and fixes thread access in some places. Issue: androidx/media#318 PiperOrigin-RevId: 524849598
tonihei committed -
PiperOrigin-RevId: 524846153
christosts committed -
PiperOrigin-RevId: 524802289
huangdarwin committed -
https://github.com/google/ExoPlayer/commit/87ac05be2868aaa972d271c1fb44bc61d1bd8121
*** Original commit *** Fix double initialisation of createIsoLanguageReplacementMap In the absence of any lock `createIsoLanguageReplacementMap` method was getting called twice due to race condition. Used Suppliers.memoize() which is by default thread safe. *** PiperOrigin-RevId: 524794650
ibaker committed -
Reusing the loader wrappers allows us to use the current RTSP connection without having to set up a new RTSP connection. Consequently, the Extractors, RTP readers are also preserved. PiperOrigin-RevId: 524663012
claincly committed -
In `ExternalTextureManager` in seemingly rare cases end of stream is signaled at the point where a frame is currently pending processing. In that case the video end of stream signal was lost. If the muxer timeout was enabled this case would result in throwing an exception, but otherwise the operation would get stuck Add code to signal end of stream in `onInputFrameProcessed` as well, so that we signal end of stream when the pending frame is handled. Tested by running `TransformerEndToEndTest.loopingTranscodedVideo_producesExpectedResult` several times. PiperOrigin-RevId: 524361069
andrewlewis committed -
PiperOrigin-RevId: 524349341
huangdarwin committed -
This happens when the input is an image. The output will always be video so the outputPlayer and outputVideoTextView will always present. PiperOrigin-RevId: 524329436
claincly committed -
Dackka doesn't support `@value` #minor-release PiperOrigin-RevId: 524309695
ibaker committed -
MediaMuxer does not support out-of-order video frames API 25. Use a test file with frames in order in loopingTranscodedAudio_producesExpectedResult. This is necessary for tests that transmux video samples. PiperOrigin-RevId: 524309318
kimvde committed -
PiperOrigin-RevId: 524305085
simakova committed -
PiperOrigin-RevId: 524301315
huangdarwin committed -
PiperOrigin-RevId: 524282997
claincly committed -
A passthrough effect allows for testing having an intermediate effect injected, which uses different OpenGL shaders from having no effects. PiperOrigin-RevId: 524276991
huangdarwin committed -
PiperOrigin-RevId: 524248369
claincly committed -
PiperOrigin-RevId: 524113489
Googler committed -
PiperOrigin-RevId: 524030672
tofunmi committed -
PiperOrigin-RevId: 524027177
claincly committed -
In the absence of any lock `createIsoLanguageReplacementMap` method was getting called twice due to race condition. Used Suppliers.memoize() which is by default thread safe. PiperOrigin-RevId: 524007754
sheenachhabra committed -
PiperOrigin-RevId: 524003092
michaelkatz committed
-
- 13 Apr, 2023 4 commits
-
-
The overrides specified by a MediaController may not use the exact same TrackGroup instances as known to the Player because the groups have been bundled to and from the controller. This bundling may alter the instance slightly depending on the version used on each side of the communication and the fields set (e.g. Format.metadata is not supported for bundling). This issue can be solved by creating unique track group ids for each group on the session side before bundling. On the way back, the groups in the track selection parameters can be mapped backed to their original instances based on this id. #minor-release Issue: androidx/media#296 PiperOrigin-RevId: 523986626
tonihei committed -
#minor-release PiperOrigin-RevId: 523983688
rohks committed -
Previously, ExoPlayerImpl had volume flags hardcoded to SHOW_UI, but now the developer can choose what happens on volume change. The old methods have been deprecated. PiperOrigin-RevId: 523974358
jbibik committed -
#minor-release PiperOrigin-RevId: 523959161
rohks committed
-
- 12 Apr, 2023 13 commits
-
-
#minor-release PiperOrigin-RevId: 523708424
rohks committed -
This field is also non-zero for h.265 tracks. PiperOrigin-RevId: 523676455
ibaker committed -
PiperOrigin-RevId: 523675327
sheenachhabra committed -
The setter command is only used for setPlaylistMetadata and can be named COMMAND_SET_PLAYLIST_METADATA. The getter commnad is used to access getMediaMetadata and getPlaylistMetadata and can be better named COMMAND_GET_METADATA to reflect this usage. PiperOrigin-RevId: 523673286
tonihei committed -
Previously `ChannelMixingAudioProcessor` output float because it was implemented using the audio mixer's float mixing support. Move the implementation over to just using the `ChannelMixingMatrix` and make it publicly visible in the common module so it can be used by apps for both playback and export. Also resolve a TODO that no longer had a bug attached by implementing support for putting multiple mixing matrices to handle different input audio channel counts, and fix some nits in the test code. Tested via unit tests and manually configuring a `ChannelMixingAudioProcessor` in the transformer demo app and playing an audio stream that identifies channels, and verifying that they are remapped as expected. PiperOrigin-RevId: 523653901
andrewlewis committed -
It is not possible to provide a safe deprecation path because BaseTrackSelection can't easily know which of the methods is implemented by subclasses. PiperOrigin-RevId: 523471578
tonihei committed -
Change what format is logged from MediaCodecAudioRenderer when AudioSink throws InitializationException. We printed the AudioSink's format, which most of the times is audio/raw (PCM) and not the renderer's format. With this change both formats are logged. #minor-release Issue: google/ExoPlayer#11066 PiperOrigin-RevId: 523456840
christosts committed -
In addition to the changes in https://github.com/google/ExoPlayer/commit/b18fb368cca9843aeca2cc4d5a01aa4fa41b4bd7 This change essentially reverts https://github.com/google/ExoPlayer/commit/30e5bc9837e2423cd2bb426c5797211e0f6ad76b (Merged Jul 2022). From this CL on, `VideoFrameProcessor` takes in non-offset, monotonically increasing timestamps. For example, with one 5s and one 10s video, - `VideoFrameProcessor`'s input should start from 0 - On switching to the second video (10s), the timestamp of the first frame in the second video should be at 5s. In ExoPlayer however, `streamOffset` is managed differently and thus needs correction before sending the frames to `VideoFrameProcessor`: - The timestamp of the first video is offset by a large int, so the first frame of the first media item has timestamp (assuming) 10000000000000000 - The last frame of the first media item has 10000005000000000 - At this point the stream off set is updated to 10000005000000000 - The pts of the first frame of the second video starts from 0 again. PiperOrigin-RevId: 523444236
claincly committed -
Implement HDR input support for texture output, and add HDR pixel tests. PiperOrigin-RevId: 523417701
huangdarwin committed -
PiperOrigin-RevId: 523413988
Googler committed -
Simplify the audio encoder input timestamp calculation. The new calculation avoids drifting by tracking the total number of bytes encoded rather than tracking the timestamp and remainder separately, and also makes the timestamps match the decoder output buffer timestamps. Also switch one of the export tests that was passing through AMR samples over to using WAVE audio. The problem with using AMR is that the compressed samples are not necessarily an integer number of audio frames and the shadow decoder would pass them from input to output, so the audio encoder was receiving non-integer numbers of audio frames. Tested by logging the timestamps at the decoder output and encoder input with forcing transcoding audio, and verifying that after this change the audio timestamps are no longer off by one. PiperOrigin-RevId: 523409869
andrewlewis committed -
The video asset loader renders decoder output to a surface texture, and if the video sample pipeline is in the process of updating the surface texture image at the moment when the asset loader video decoder is released this seems to cause `MediaCodec.release` to get stuck. Swap the release order so that we stop updating the texture before trying to release the codec. PiperOrigin-RevId: 523401619
andrewlewis committed -
Log at debug level immediately when MediaCodec throws. This logging will be output closer to the time when the error actually happened so should make it easier to identify the order of components failing. Downgrade logging of errors after export ends to warning level, as output may still be fine if there was a problem after exporting completed (though it's still worth logging a warning as the device may not be in a good state). PiperOrigin-RevId: 523370457
andrewlewis committed
-
- 11 Apr, 2023 1 commit
-
-
Turns out these could have been private, so not sure why they were public. PiperOrigin-RevId: 522545698
huangdarwin committed
-