Catching OOM errors is bad practise unless there is a specific known
cause that tried to allocate a large amount of memory. Without this
known cause with a large allocation, the source of the error is
likely somewhere else in the app and every random small further
allocation may lead to additional OOM errors (for example b/145134199).
We have three known causes in ExoPlayer:
1. Source allocations based on unexpected values in streams. This is
caught on the loader thread and reported as an
UnexpectedLoaderException.
2. Output buffer allocations by non-MediaCodec decoders. These are
caught in SimpleDecoder on the decoder thread and reported as
UnexpectedDecodeException.
3. Input buffer allocations by non-MediaCodc decoders in their
constructors. These are currently caught on a higher-level and
reported as ExoPlaybackException.TYPE_OUT_OF_MEMORY.
For consistency and to prevent catching OOM errors without known cause
we can remove the generic TYPE_OUT_OF_MEMORY and catch the specific
exception where it occurs to report it as an
ExoPlaybackException.TYPE_RENDERER. This also has the added advantage
that the format metadata is added to the exception.
PiperOrigin-RevId: 351326688
| Name |
Last commit
|
Last Update |
|---|---|---|
| .github/ISSUE_TEMPLATE | Loading commit data... | |
| .idea | Loading commit data... | |
| demos | Loading commit data... | |
| extensions | Loading commit data... | |
| gradle/wrapper | Loading commit data... | |
| library | Loading commit data... | |
| playbacktests | Loading commit data... | |
| robolectricutils | Loading commit data... | |
| testdata | Loading commit data... | |
| testutils | Loading commit data... | |
| .gitignore | Loading commit data... | |
| .hgignore | Loading commit data... | |
| CONTRIBUTING.md | Loading commit data... | |
| LICENSE | Loading commit data... | |
| README.md | Loading commit data... | |
| RELEASENOTES.md | Loading commit data... | |
| build.gradle | Loading commit data... | |
| common_library_config.gradle | Loading commit data... | |
| constants.gradle | Loading commit data... | |
| core_settings.gradle | Loading commit data... | |
| gradle.properties | Loading commit data... | |
| gradlew | Loading commit data... | |
| gradlew.bat | Loading commit data... | |
| javadoc_combined.gradle | Loading commit data... | |
| javadoc_library.gradle | Loading commit data... | |
| javadoc_util.gradle | Loading commit data... | |
| publish.gradle | Loading commit data... | |
| settings.gradle | Loading commit data... |