14953 Commits

Author SHA1 Message Date
christosts
5051b47f4c Misc improvement in Util
#minor-release

PiperOrigin-RevId: 455380010
(cherry picked from commit 4f5e99c5432a4fadf64e242fb74d31bc614f7487)
2022-06-16 14:39:46 +00:00
Marc Baechinger
87814498f4
Merge branch 'release-v2' into dev-v2-r2.18.0 2022-06-16 13:13:17 +00:00
bachinger
3da5ab74b9 Update JavaDoc
#minor-release

PiperOrigin-RevId: 455361427
(cherry picked from commit 87420fcdabbe362d571edfd09f3128b6bb3ae873)
2022-06-16 13:04:43 +00:00
bachinger
da127923c3 Add lint base xml file for string.xml files
Fixing lint errors in the string.xml files makes no sense because these are
overridden with the next automated string import. Adding a lint-baseline.xml
instead for the ui module.

See https://issuetracker.google.com/208178382

#minor-release

PiperOrigin-RevId: 455354304
(cherry picked from commit 495480a66adacff26fb0c9c10f4d44191656bbd0)
2022-06-16 13:04:42 +00:00
bachinger
3dcc24ef2e Version bump to exoplayer:2.18.0 and media3:1.0.0-beta01
#minor-release

PiperOrigin-RevId: 455350486
(cherry picked from commit 209d3085b710665d5659aaedd2290866f4561f7a)
2022-06-16 11:41:28 +00:00
Marc Baechinger
0a4684d045 Merge pull request #63 from ittiam-systems:rtp-h263
PiperOrigin-RevId: 455347182
(cherry picked from commit e220f5377bf8e72454218e8c13e297f0257bc49a)
2022-06-16 11:41:28 +00:00
hschlueter
3bca195c9f Wrap processor chain executor service for better exception handling.
The wrapper
* catches exceptions for each task and notifies the
  listener (this will be used more in follow-ups when processFrame
  is split into lots of listeners and callbacks),
* removes finished tasks from the queue and signals any exceptions
  that occurred to the listener each time a new task is executed.

PiperOrigin-RevId: 455345184
(cherry picked from commit bf9fa124115abe26764e163e755ed6046c4a0114)
2022-06-16 10:41:23 +00:00
christosts
643e78c4b0 Misc javadoc fix.
PiperOrigin-RevId: 455157744
(cherry picked from commit 91de5fa0cbbb976defd18bfd7d5d9981ce2dc577)
2022-06-15 17:05:54 +00:00
tonihei
fb6e3ea24b Update initial bitrate estimates
#minor-release

PiperOrigin-RevId: 455140203
(cherry picked from commit 05b69a7a1cbfba4d79a91f4bd2b160625a7a9615)
2022-06-15 16:51:04 +00:00
bachinger
cdd2157f5c Updating translations
#minor-release

PiperOrigin-RevId: 455128997
(cherry picked from commit 499d3f94a504c06fcd06de7518ea6fff2a943873)
2022-06-15 16:51:04 +00:00
Marc Baechinger
a785fbe014 Merge pull request #9915 from dburckh:avi
PiperOrigin-RevId: 455094147
(cherry picked from commit 1ca382d138b30ecebe3d1ceab2442e0e53bdd388)
2022-06-15 16:51:04 +00:00
bachinger
4739e4d2f1 Add lint base to make gradle lint run without errors
PiperOrigin-RevId: 454951844
(cherry picked from commit 8b65c6a0aa5fe9e9e797633b47f0d6dfd6a44cd1)
2022-06-15 16:51:04 +00:00
bachinger
341f158f3b Add many quantity for fr an fr-CA
See https://issuetracker.google.com/208178382

PiperOrigin-RevId: 454949204
(cherry picked from commit 6fd777c5ca9805816c689fd9ad65a27083c07942)
2022-06-15 16:51:04 +00:00
bachinger
d1e50de90f Make HttpDataSourceTestEnv require API 19
PiperOrigin-RevId: 454945333
(cherry picked from commit 4759472427555d70c91af86e495cffbf0f0ac8f8)
2022-06-15 16:51:04 +00:00
bachinger
ff582ec2a1 Suppress lint errors RestrictedApis in lib-media2
PiperOrigin-RevId: 454939082
(cherry picked from commit d1fbef810699688fdfb832ba0bde7282df3d3260)
2022-06-15 16:51:04 +00:00
olly
54f72e733f Don't export broadcast receivers that don't require it
Issue: google/ExoPlayer#10287
PiperOrigin-RevId: 455131138
(cherry picked from commit 9267ba3f9e14da4436bfbfe76045f7d09af80feb)
2022-06-15 15:00:47 +00:00
olly
92c3535de7 Cleanup: Remove unnecessary self-refs in Util
PiperOrigin-RevId: 455121899
(cherry picked from commit 545cd1eb461e504ff64d8d72295230824b4a6603)
2022-06-15 14:08:00 +00:00
hschlueter
da7ad3716b Replace FrameProcessorChain#isEnded with listener method.
PiperOrigin-RevId: 455114693
(cherry picked from commit 10050a1e8ccca217ba7facd21ecabab2b9811f8b)
2022-06-15 13:27:35 +00:00
hschlueter
5f142c4bbe Use FrameProcessorChain#SurfaceProvider for encoder compat transform.
This change adds a SurfaceProvider interface which is necessary to
allow for texture processors whose output size becomes available
asynchronously in follow-ups.
VTSP's implementation of this interface wraps the encoder and provides
its input surface together with the output frame width, height, and
orientation as used for encoder configuration.
The FrameProcessorChain converts the output frames to the provided
orientation and resolution using a ScaleToFitTransformation and
Presentation replacing EncoderCompatibilityTransformation.

PiperOrigin-RevId: 455112598
(cherry picked from commit d20f68498666ddf1f1946799cf002a9edb573a40)
2022-06-15 13:14:56 +00:00
hmzh
5a3454c8b0 Implement seeking to the start of a MIDI file
- Fixed MidiExtractor state issues which caused seeking to behave unexpectedly. Ensures the extractor is now always in the file loading state after returning RESULT_END_OF_INPUT.
- Fixed an infinite loop in MidiExtractor caused by the file data array having an initial size of 0. The extractor attempted to increase the capacity of the array by using this size of 0 in it's calculations.

PiperOrigin-RevId: 455107511
(cherry picked from commit e5260beea75b88f7b697f52ad75e891091ba2391)
2022-06-15 12:42:05 +00:00
christosts
fd1fb96aa0 Spatializer: Assume linear channel count for E-AC3 JOC streams
#minor-release

PiperOrigin-RevId: 454884692
(cherry picked from commit 6dc4b39cb7165577bfa862675c8111c10df843e1)
2022-06-14 17:42:21 +00:00
Marc Baechinger
941c5d84b0 Merge pull request #10322 from DolbyLaboratories:dev-v2-multichannel
PiperOrigin-RevId: 454641746
(cherry picked from commit 1c373d515991f5aef15d75f6a6de80492fe14d70)
2022-06-14 17:42:21 +00:00
olly
dc22f62ffb Suppress an ExtendsObjects violation
to support enabling this as a compile-time error.

More information: go/lsc-extends-object

PiperOrigin-RevId: 454582570
(cherry picked from commit d2f5f212b909fcbd81a48d84d805005724e5303e)
2022-06-13 12:34:43 +00:00
tonihei
c1f1eb7831 Use correct placeholder PlayerID value in test
The default constructor is only allowed to be called on
API < 32 and the test should use the defined UNSET constant
to be API independent.

#minor-release

PiperOrigin-RevId: 454568893
(cherry picked from commit 0ed53215c212753826d93daa7fb503e9aaf4ae8d)
2022-06-13 11:54:01 +00:00
ibaker
31e6ba9c71 Ensure DRAIN_ACTION_FLUSH_AND_UPDATE_DRM_SESSION is always executed
`codecDrainAction` is set to `DRAIN_ACTION_NONE` in 3 places in
`MediaCodecRenderer`:
* The constructor (so there's no prior state to worry about)
* `updateDrmSessionV23()`: Where `mediaCrypto` is reconfigured based
  on `sourceDrmSession` and `codecDrmSession` is also updated to
  `sourceDrmSession`.
* `resetCodecStateForFlush()`: Where (before this change) the action
  is unconditionally set back to `DRAIN_ACTION_NONE` and so any
  required updated implied by
  `DRAIN_ACTION_FLUSH_AND_UPDATE_DRM_SESSION` is not done.

This change ensures that `flushOrReleaseCodec()` handles
`DRAIN_ACTION_FLUSH_AND_UPDATE_DRM_SESSION` before calling .

This probably also resolves Issue: google/ExoPlayer#10274

#minor-release

PiperOrigin-RevId: 454114428
(cherry picked from commit c736a72c75ba5460de8db79482e920ff923dc580)
2022-06-13 11:54:01 +00:00
olly
72e1f12774 Update compileSdkVersion to 33
PiperOrigin-RevId: 454573995
(cherry picked from commit 85b4779ccb2fcd4fc6f4f55948fa05388ad398a2)
2022-06-13 11:37:38 +00:00
ibaker
beb0422e22 Remove ExoPlayerTest.PlayerStateGrabber
It's no longer needed

PiperOrigin-RevId: 454161070
(cherry picked from commit 86a2f297a5f8eb94fc04820ea943512c078205c4)
2022-06-10 14:32:54 +00:00
olly
996f94754d Fix permissions request for media provider content URIs
We need to request the external storage permission to access these

PiperOrigin-RevId: 454160546
(cherry picked from commit a90d5230e2856d08d1f7275b3d7244ed03fec466)
2022-06-10 14:29:55 +00:00
hschlueter
ddd8f4174f Combine all native GL errors in a GlException instead of logging.
The native GL errors are in an arbitrary order according to
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glGetError.xml
This means any of them could contain the most useful message
so it's better to use all for the GlException's message rather than
picking the last message and logging all others.

PiperOrigin-RevId: 454130460
(cherry picked from commit 92c2a304e10d0da968cf341080de47566ce551ed)
2022-06-10 11:03:38 +00:00
christosts
9a793dab70 DefaultTrackSelector: Constrain audio channel count
The track selector will select multi-channel formats when those can be
spatialized, otherwise the selector will prefer stereo/mono audio
tracks. When the device supports audio spatialization (Android 12L+),
the DefaultTrackSelector will monitor for changes in the platform
Spatializer and trigger a new track selection upon a
Spatializer change event.

Devices with a `television` UI mode are excluded from audio channel
count constraints.

#minor-release

PiperOrigin-RevId: 453957269
(cherry picked from commit 9f3c595e022bc98fd776a16dcad10adc66b37e67)
2022-06-09 18:51:27 +00:00
christosts
64d33adc2d Minor fix: remove final from methods of final class
#minor-release

PiperOrigin-RevId: 453408087
(cherry picked from commit 527db57b26e5d6ea46320d203c1e402078321d1b)
2022-06-09 18:51:27 +00:00
hschlueter
e4605583bc Check targetSdkVersion for frame dropping workaround.
Based on
https://developer.android.com/reference/android/media/MediaCodec#using-an-output-surface,
frame dropping behaviour depends on the target SDK version.
After this change transformer will only use
MediaFormat#KEY_ALLOW_FRAME_DROP if both the target and system SDK
version are at least 29 and default to its pre 29 behaviour where each
decoder output frame must be processed before a new one is rendered
to prevent frame dropping otherwise.

Also remove deprecated Transformer.Builder constructor without a
context and the context setter.

PiperOrigin-RevId: 453971097
(cherry picked from commit 3f718b0d10e1d577620cca9ec76d0af38efc542c)
2022-06-09 18:22:39 +00:00
christosts
b7cf772afb Fix bug: playback is frozen with HLS chunkless preparation
This change fixes a bug where the player is frozen with HLS chunkless
preparation because the audio stream wrappers are not marked as master
timestamp sources before preparation.

#minor-release

PiperOrigin-RevId: 453941815
(cherry picked from commit 917484100db2be8681f5a122d876012c1dd0f36b)
2022-06-09 18:08:16 +00:00
Marc Baechinger
56079ba84e Merge pull request #69 from ittiam-systems:rtp_amr_test
PiperOrigin-RevId: 453905355
(cherry picked from commit 8a31e33d41c198279e7c6008fcad43f39202c837)
2022-06-09 18:08:16 +00:00
tonihei
c1aff0dc8f Add COMMAND_SET_MEDIA_ITEM to Player.Commands
Some Player implementations have no playlist capability but can still
set a MediaItem for playback. Examples are a MediaController connected
to a legacy MediaSession, ExoPlayer up to 2.12 or MediaPlayer.

To indicate this capability, we need an allowed command in addition
to COMMAND_CHANGE_MEDIA_ITEMS that just allows to set a single item
that replaces everything that is currently played.

#minor-release

PiperOrigin-RevId: 453879626
(cherry picked from commit 2056152824512bcd8f2f09b2f7c1a752e913feac)
2022-06-09 18:08:16 +00:00
christosts
4e3617c2f1 Audio passthrough: handle unset audio format channel count
With HLS chunkless preparation, audio formats may have no value
for channel count. In this case, the DefaultAudioSink will either query
the platform for a supported channel count (API 29+) or assume a max
channel count based on the encoding spec in order to decide whether the
audio format can be played with audio passthrough.

Issue: google/ExoPlayer#10204

#minor-release

PiperOrigin-RevId: 453644548
(cherry picked from commit b3b57bc93df659c41412164bdc0df164c0c23041)
2022-06-09 18:08:16 +00:00
ibaker
2e2bbdd7b5 Clarify that ShuffleOrder must be consistent in both directions
#minor-release

PiperOrigin-RevId: 453622964
(cherry picked from commit 2c2be2da92b5cbefa81e5960d7f39f01979a2a78)
2022-06-09 18:08:16 +00:00
Marc Baechinger
68054de481 Merge pull request #53 from ittiam-systems:rtp_opus
PiperOrigin-RevId: 453490088
(cherry picked from commit ade3452e17773ae553f3e8ab6b0f6e6e6d6acc17)
2022-06-09 18:08:16 +00:00
hschlueter
9ecf722824 Make GlUtil.GlException checked and remove flag to disable it.
Transformer always enabled glAssertionsEnabled, so there should
be no functional change.

ExoPlayer previously disabled glAssertionsEnabled, so GlUtil logged
GlExceptions instead of throwing them. The GlExceptions are now
caught and logged by the callers so that there should also be no
functional change overall.

This change also replaces EGLSurfaceTexture#GlException with
GlUtil#GlException.

PiperOrigin-RevId: 453963741
(cherry picked from commit dc668f2b59bb0df12cdbb77cb88072babe0218eb)
2022-06-09 17:53:39 +00:00
claincly
092fbd6c83 Ensure re-encode on performance tests
PiperOrigin-RevId: 453933854
(cherry picked from commit fa22efb7058816444a20cd11a2a423e99e8e4837)
2022-06-09 15:41:09 +00:00
huangdarwin
a4ed533eb5 Transformer GL: Split Presentation and Crop.
This removes the prior restriction of needing to remember not to crop and set aspect ratio in the same Presentation.Builder, and makes each class a bit more targeted.

This is partially made feasible by the past work to merge consecutive
MatrixTransformations into a single MatrixTransformationFrameProcessor, which
ensures that there's no loss in quality between successive MatrixTransformations.

PiperOrigin-RevId: 453660582
(cherry picked from commit b33dc5e57b96d81f9c246a369a09fb7a23a119e2)
2022-06-08 12:51:28 +00:00
hschlueter
1086e3bfbf Mention alpha for matrix transformation background color.
PiperOrigin-RevId: 453633920
(cherry picked from commit d5e4faa9ef8da6ec0810dee14ac7d23da85c7b56)
2022-06-08 09:50:18 +00:00
hschlueter
df6c8f1d8a Implement default GlTextureProcessor in SingleFrameGlTextureProcessor.
SingleFrameGlTextureProcessor is now an abstract class containing a
default implementation of the more flexible GlTextureProcessor interface
while still exposing the same simple abstract methods for single frame
processing it previously did.

FrameProcessorChain and GlEffect will be changed to use
GlTextureProcessor in follow-ups.

PiperOrigin-RevId: 453633000
(cherry picked from commit 0b37d860d13df1ac638f5a75c7af32c840e02956)
2022-06-08 09:44:25 +00:00
olly
3748cc8a82 Fix handling of content URIs by demo apps
PiperOrigin-RevId: 453510883
(cherry picked from commit 21ad8cfd6b55096029556b5c7fe226891173a8fb)
2022-06-07 20:23:51 +00:00
ibaker
5030145c8f Use a shared keyForField implementation in track selection parameters
The current setup with distinct, private `keyForField` implementations,
leaves open the (theoretical) possibility of a clash in the `Bundle`
keys used by the superclass and subclass. This change brings
consistency with our only other extensible `Bundleable` type
(`PlaybackException`).

#minor-release

PiperOrigin-RevId: 453385875
(cherry picked from commit a056f08a3d06992ee59e596c80d13a7cc628a12a)
2022-06-07 17:54:38 +00:00
ibaker
dd27a9a8df Rename DefaultTrackSelector.ParametersBuilder to Parameters.Builder
We generally nest the `Builder` for `Foo` inside `Foo`. In this case,
there's already a `DefaultTrackSelector.Parameters.Builder` type visible
to a developer, it just happens to be the 'common'
`TrackSelectorParameters.Builder`, so using it is a bit weird. For
example this code snippet doesn't compile because
`DefaultTrackSelector.Parameters.Builder#build()` returns
`TrackSelectionParameters`. This CL fixes that problem and the code
snippet now compiles.

```java
DefaultTrackSelector.Parameters params =
   new DefaultTrackSelector.Parameters.Builder(context).build()
```

#minor-release

PiperOrigin-RevId: 453215702
(cherry picked from commit 881622385d073c816663dc24079b0a6f68ed06c5)
2022-06-07 17:54:38 +00:00
bachinger
aadd0c8779 Filter bogus AndroidX Media jar file when creating javadoc
#minor-release

PiperOrigin-RevId: 452282128
(cherry picked from commit 2441bc69903903dbc7f8a0c2ea112db90ba8cd1e)
2022-06-07 17:54:38 +00:00
ibaker
c107b94941 Fix HiddenTypedefConstant Metalava error on PlaybackException
This is done by removing the `@FieldNumber` IntDef completely. It's not
really adding much value anyway, because it's `open` so there's no real
enforcement to prevent passing 'incorrect' values.

#minor-release

PiperOrigin-RevId: 452108972
(cherry picked from commit 97210b5aa08ba662a33e9f2f91620ec80fe51902)
2022-06-07 17:54:38 +00:00
hschlueter
84b46c10de Add interface for async texture processors.
Implementations of this interface will be able to drop or add frames,
change timestamps, accept multiple input frames before producing
output, and process frames on their own background thread.

A default implementation of this interface will be added to SingleFrameGlTextureProcessor in a follow-up.

PiperOrigin-RevId: 453159835
(cherry picked from commit 023d19c8c5aa54841aeec12657846ac6a889dddb)
2022-06-06 10:18:26 +00:00
hschlueter
a04cc94afd Add async error listener to transformer to avoid exception wrapping.
This internal listener avoids wrapping the TransformationExceptions
in PlaybackExceptions that are handled via the Player.Listener and
is also used for FrameProcessingExceptions which already avoided
the PlaybackException layer previously.

This listener will also be useful in follow-ups for encoder-related
TransformationExceptions that are thrown in the SurfaceProvider that
will be called on the GL thread.

PiperOrigin-RevId: 452074575
(cherry picked from commit 960422e36f22a4c76e0617672aac9b9bcef50f43)
2022-05-31 17:01:02 +00:00