13370 Commits

Author SHA1 Message Date
kimvde
1402bd6f54 Fix NPE in Transformer.getProgress()
If muxerWrapper.release() was throwing an exception, the progress state
was not updated and getProgress could throw an exception.

#minor-release

PiperOrigin-RevId: 424696783
2022-01-28 10:19:00 +00:00
andrewlewis
6e305936b8 Remove FOREGROUND_SERVICE permission
This shouldn't be required for transformer instrumentation tests, as they don't use a foreground service.

PiperOrigin-RevId: 424654463
2022-01-28 10:15:17 +00:00
kimvde
98a997295e Make sure that onTransformationError is called once
The second error is probably a consequence of the first one.

#minor-release

PiperOrigin-RevId: 424619944
2022-01-28 10:11:58 +00:00
kimvde
8ec18086f2 Fix transformer stuck forever
When the decoder output buffer was partially read, a call to
Codec.getOutputBuffer() was returning the same buffer, but with the
position reset to 0. The reason was that, in
Codec.maybeDequeueAndSetOutputBuffer(), mediaCodec.getOutputBuffer()
was called with the same buffer index (L350 in old rev), even though
there was already a buffer available (outputBufferIndex >=0). This
change avoids calling mediaCodec.getOutputBuffer() if the previous
buffer has not been released.

#minor-release

PiperOrigin-RevId: 424612197
2022-01-28 10:08:36 +00:00
hschlueter
8123ef5d71 Take encoder resolution fallback into account in video sample pipeline.
If the encoder picks a fallback resolution the video pipeline needs
to take this into account when configuring the frameEditor and when
setting up the fallback TransformationRequest that's passed to the
fallbackListener.

PiperOrigin-RevId: 424611290
2022-01-28 10:04:49 +00:00
krocard
901a5a4845 Make audio track min buffer size configurable.
Move the code in its own class as DefaultAudioTrack
is getting very big. It also help for testability.

The new class is easily configurable and highly tested.
Manual test was used to catch any regression.

https://github.com/google/ExoPlayer/issues/8891

PiperOrigin-RevId: 424602011
2022-01-28 10:01:27 +00:00
tonihei
777246d9dc Remove unneccessary nullability.
AnalyticsCollector can't be null when passed into ExoPlayerImplInternal,
so there is no need to pass it around as nullable.

PiperOrigin-RevId: 424594031
2022-01-28 09:58:06 +00:00
tonihei
145e923dce Fix flakiness in DefaultPlaybackSessionManagerTest
Two of the sessions are finished at the same time in the test
and the order of the corresponding callbacks depends on the randomly
generated session string and the order these strings are stored in a
HashSet.

Update test to assert both callbacks are called and they contain the
right arguments, but don't assert on the order of these two callbacks.

PiperOrigin-RevId: 424548819
2022-01-28 09:54:32 +00:00
tonihei
73d9728f6a Enforce unit speed for ad playback
Ad playback shouldn't be affected by manual speed adjustments set
by the user. This change enforces unit speed for ad playback.

Issue: google/ExoPlayer#9018
PiperOrigin-RevId: 424546258
2022-01-28 09:51:09 +00:00
ibaker
be43ac7563 Propagate error policy to ProgressiveMediaSource used for subtitles
This only affects playbacks using the
experimentalUseProgressiveMediaSourceForSubtitles method.

Also update the SingleSampleMediaSource instantiation to be more
similar, to try and highlight differences like this in future.

PiperOrigin-RevId: 424545980
2022-01-28 09:47:36 +00:00
tonihei
8c685aba4b Move playback speed update at period transitions to reading period.
In some cases we need to update the PlaybackParameters at period
boundaries, for example when switching from live to VOD and live
playback speed adjustment was still active at the point of switching.

Currently, we send the update when the playing MediaPeriod changes in
EPII, which is slightly too late because the new speed gets only applied
after the entire existing AudioTrack buffer has been played out.

We can time the update slightly better by updating the values at the
point where we change the reading period. This makes the update slightly
too early because it also applies to all samples currently in the
decoder. But generally, this is a lot better because the time spent
in the decoder is likely to be considerably lower than the duration of
the AudioTrack buffer.

Note that this change isn't perfectly aligning to the period boundary,
but reduces the number of samples with the wrong speed to a minimum.
If we are getting around to add additional code that allows updating
the speed at exactly the boundary, it also needs to be triggered from
the reading period update, so the new code location is also helpful in
the future.

Issue: google/ExoPlayer#9018
PiperOrigin-RevId: 424540551
2022-01-28 09:44:07 +00:00
bachinger
bfa68866c3 Wrap expression in paranthesis
When I locally link to exoplayer source modules as described in the README and I
do this directly into a fig/citc client, I get an error saying
"missing_aar_type_workaround.gradle': 79: unexpected token: || @ line 79, column
29.". I can fix this by wrapping the expression in parenthesis (¯\_(ツ)_/¯).

I don't think this file lands in the public source tree, but if we want to
correct this, it may help someone from the team.

This CL can be ignored and reverted also.

PiperOrigin-RevId: 424537619
2022-01-28 09:40:37 +00:00
olly
5d7641c6f1 Fix some lint warnings
PiperOrigin-RevId: 424383900
2022-01-28 09:37:06 +00:00
Andrew Lewis
e58ffc0682 Merge pull request #9893 from moneytoo:mkv-vtt
PiperOrigin-RevId: 424382031
2022-01-28 09:33:35 +00:00
Andrew Lewis
db7b2e55c0 Merge pull request #9865 from aureliendrouet:unused-param-chunk-extractor-factory
PiperOrigin-RevId: 424379489
2022-01-28 09:29:51 +00:00
ibaker
a89a08f99f Reformat some README files
PiperOrigin-RevId: 424366617
2022-01-28 09:26:25 +00:00
Andrew Lewis
fe7e5b8181 Merge pull request #9864 from OxygenCobalt:vorbis-comments
PiperOrigin-RevId: 424355325
2022-01-28 09:22:51 +00:00
claincly
651fa0dbb7 Apply suggested AVC profile depending on the API version.
PiperOrigin-RevId: 424322341
2022-01-28 09:19:29 +00:00
samrobinson
76ceca70b4 Correct variable name in developer guide.
PiperOrigin-RevId: 424287392
2022-01-28 09:16:10 +00:00
kimvde
3a23383bc3 Fix NPE in Transformer.getProgress()
If muxerWrapper.release() was throwing an exception, the progress state
was not updated and getProgress could throw an exception.

#minor-release

PiperOrigin-RevId: 424696783
2022-01-28 08:59:27 +00:00
andrewlewis
cfbdc7ba5b Remove FOREGROUND_SERVICE permission
This shouldn't be required for transformer instrumentation tests, as they don't use a foreground service.

PiperOrigin-RevId: 424654463
2022-01-28 08:58:13 +00:00
kimvde
d6e5352285 Make sure that onTransformationError is called once
The second error is probably a consequence of the first one.

#minor-release

PiperOrigin-RevId: 424619944
2022-01-28 08:57:21 +00:00
kimvde
cf792cc576 Fix transformer stuck forever
When the decoder output buffer was partially read, a call to
Codec.getOutputBuffer() was returning the same buffer, but with the
position reset to 0. The reason was that, in
Codec.maybeDequeueAndSetOutputBuffer(), mediaCodec.getOutputBuffer()
was called with the same buffer index (L350 in old rev), even though
there was already a buffer available (outputBufferIndex >=0). This
change avoids calling mediaCodec.getOutputBuffer() if the previous
buffer has not been released.

#minor-release

PiperOrigin-RevId: 424612197
2022-01-28 08:56:01 +00:00
hschlueter
75c0896f7e Take encoder resolution fallback into account in video sample pipeline.
If the encoder picks a fallback resolution the video pipeline needs
to take this into account when configuring the frameEditor and when
setting up the fallback TransformationRequest that's passed to the
fallbackListener.

PiperOrigin-RevId: 424611290
2022-01-28 08:55:11 +00:00
krocard
47f71cfe4d Make audio track min buffer size configurable.
Move the code in its own class as DefaultAudioTrack
is getting very big. It also help for testability.

The new class is easily configurable and highly tested.
Manual test was used to catch any regression.

https://github.com/google/ExoPlayer/issues/8891

PiperOrigin-RevId: 424602011
2022-01-28 08:54:19 +00:00
tonihei
fb8e99c778 Remove unneccessary nullability.
AnalyticsCollector can't be null when passed into ExoPlayerImplInternal,
so there is no need to pass it around as nullable.

PiperOrigin-RevId: 424594031
2022-01-28 08:53:30 +00:00
olly
78411006df Fix some additional lint warnings
PiperOrigin-RevId: 424584225
2022-01-28 08:52:11 +00:00
tonihei
c9e2a9eb30 Fix flakiness in DefaultPlaybackSessionManagerTest
Two of the sessions are finished at the same time in the test
and the order of the corresponding callbacks depends on the randomly
generated session string and the order these strings are stored in a
HashSet.

Update test to assert both callbacks are called and they contain the
right arguments, but don't assert on the order of these two callbacks.

PiperOrigin-RevId: 424548819
2022-01-28 08:51:19 +00:00
tonihei
2876908729 Enforce unit speed for ad playback
Ad playback shouldn't be affected by manual speed adjustments set
by the user. This change enforces unit speed for ad playback.

Issue: google/ExoPlayer#9018
PiperOrigin-RevId: 424546258
2022-01-28 08:50:23 +00:00
ibaker
8b230d8df0 Propagate error policy to ProgressiveMediaSource used for subtitles
This only affects playbacks using the
experimentalUseProgressiveMediaSourceForSubtitles method.

Also update the SingleSampleMediaSource instantiation to be more
similar, to try and highlight differences like this in future.

PiperOrigin-RevId: 424545980
2022-01-28 08:49:29 +00:00
tonihei
939643af13 Move playback speed update at period transitions to reading period.
In some cases we need to update the PlaybackParameters at period
boundaries, for example when switching from live to VOD and live
playback speed adjustment was still active at the point of switching.

Currently, we send the update when the playing MediaPeriod changes in
EPII, which is slightly too late because the new speed gets only applied
after the entire existing AudioTrack buffer has been played out.

We can time the update slightly better by updating the values at the
point where we change the reading period. This makes the update slightly
too early because it also applies to all samples currently in the
decoder. But generally, this is a lot better because the time spent
in the decoder is likely to be considerably lower than the duration of
the AudioTrack buffer.

Note that this change isn't perfectly aligning to the period boundary,
but reduces the number of samples with the wrong speed to a minimum.
If we are getting around to add additional code that allows updating
the speed at exactly the boundary, it also needs to be triggered from
the reading period update, so the new code location is also helpful in
the future.

Issue: google/ExoPlayer#9018
PiperOrigin-RevId: 424540551
2022-01-28 08:48:41 +00:00
bachinger
0b6837208b Wrap expression in paranthesis
When I locally link to exoplayer source modules as described in the README and I
do this directly into a fig/citc client, I get an error saying
"missing_aar_type_workaround.gradle': 79: unexpected token: || @ line 79, column
29.". I can fix this by wrapping the expression in parenthesis (¯\_(ツ)_/¯).

I don't think this file lands in the public source tree, but if we want to
correct this, it may help someone from the team.

This CL can be ignored and reverted also.

PiperOrigin-RevId: 424537619
2022-01-28 08:47:49 +00:00
olly
d2cc14a98b Fix some lint warnings
PiperOrigin-RevId: 424383900
2022-01-28 08:46:46 +00:00
Andrew Lewis
497f55a4bb Merge pull request #9893 from moneytoo:mkv-vtt
PiperOrigin-RevId: 424382031
2022-01-28 08:45:44 +00:00
Andrew Lewis
0c4d9b10c0 Merge pull request #9865 from aureliendrouet:unused-param-chunk-extractor-factory
PiperOrigin-RevId: 424379489
2022-01-28 08:44:39 +00:00
Andrew Lewis
b2152f1988 Merge pull request #9864 from OxygenCobalt:vorbis-comments
PiperOrigin-RevId: 424355325
2022-01-28 08:42:33 +00:00
claincly
2ed1deb52d Apply suggested AVC profile depending on the API version.
PiperOrigin-RevId: 424322341
2022-01-28 08:41:12 +00:00
ibaker
ceaa76bf6a Move misplaced release note
PiperOrigin-RevId: 424081451
2022-01-25 20:08:53 +00:00
olly
aceacb05ca Fix spurious unsupported tracks toast in demo apps
PiperOrigin-RevId: 424062588
2022-01-25 20:05:06 +00:00
olly
abef4f4e14 Use translatable playback speed strings
Issue: google/ExoPlayer#9811
PiperOrigin-RevId: 423855051
2022-01-25 20:01:06 +00:00
olly
34102ee1e2 Update translations
Issue: google/ExoPlayer#9811
PiperOrigin-RevId: 423849421
2022-01-25 19:57:15 +00:00
kimvde
793a0993c5 Various nits in Transformer
PiperOrigin-RevId: 423822317
2022-01-25 19:53:21 +00:00
olly
cc144f5875 Fix 1 ErrorProneStyle finding:
* @CryptoType is a TYPE_USE annotation, so should appear after modifiers and directly before the type.
  (see go/java-style#s4.8.5-annotations)

This CL looks good? Just LGTM and Approve it!
This CL doesn’t look good? This is what you can do:
* Revert this CL, by replying "REVERT: <provide reason>"
* File a bug under go/error-prone-bug for category ErrorProneStyle if the change looks generally problematic.
* Revert this CL and not get a CL that cleans up these paths in the future by
replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to
opt out the respective paths in your CL Robot configuration instead:
go/clrobot-opt-out.

This CL was generated by CL Robot - a tool that cleans up code findings
(go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA.
Anything wrong with the signup? File a bug at go/clrobot-bug.

#codehealth

Tested:
    Local presubmit tests passed.

PiperOrigin-RevId: 423821355
2022-01-25 19:49:34 +00:00
tonihei
caa0a09c2f Finish pending session if there is one before creating a new one.
PiperOrigin-RevId: 423819515
2022-01-25 19:45:46 +00:00
olly
6af74e7f0f Add missing AudioFormat encoding conversions
PiperOrigin-RevId: 423786422
2022-01-25 19:41:56 +00:00
kimvde
5e583d34ee Fix Javadoc formatting
#minor-release

PiperOrigin-RevId: 423314840
2022-01-25 19:37:38 +00:00
hschlueter
2f4ef89510 Delete old TODO.
This was resolved in 081700f72b where the
Video/AudioSamplePipeline call this method before calling
the FallbackListener.

PiperOrigin-RevId: 423284258
2022-01-25 19:33:44 +00:00
claincly
cd076f7622 Ignore invalid RTP-Info header value.
Issue: google/ExoPlayer#9619

(and a few other GH issues related to invalid RTP-Info header)

PiperOrigin-RevId: 423283017
2022-01-25 19:29:51 +00:00
claincly
5a60db3328 Handle when RTSP track timing is not available.
Issue: google/ExoPlayer#9775

We got a few issues for this on GH already. Some RTSP servers do not provide
track timing in PLAY responses, or the timings are invalid.

Missing timing means the RTSP stream is not seekable. Added method to
1. Update the timeline that seek is not possible
2. Report read discontinuity so that playback can start from the beginning.

PiperOrigin-RevId: 423281439
2022-01-25 19:26:04 +00:00
olly
47fd32f1d4 Fix spurious unsupported tracks toast in demo apps
PiperOrigin-RevId: 424062588
2022-01-25 19:22:30 +00:00