media/library
krocard 93b3f43ed2 Fix some extractor nullness checks
Fix Matroska, Heif, FLAC, Ogg, Opus, Vorbis
extractor nullness check.

There should be no functional change.
Every media that fail to be parsed should still fail.
Every media that parsed successfully should still succeed.

This refactor aims to push all nullness constraints up the call stack to clarify each API nullness contract. This ensures implementation and caller have to prove their respective contract close to where such logic is implemented. This also allows to fail early if an nullness contract is broken instead of deep in the call stack.

For example, by adding a requirement that all implementation of `StreamReader.readHeaders` have to initialize `setupData.format` if the return false, each overriding method is forced to prove this next to the logic initializing it. This also means the runtime check might not be needed because the nullnessChecker can prove itself the contract holds.

This is in contrast with adding a null check at the point of usage, which will not catch logic errors where they are produce, but later when they are perceived; making it harder to debug and catching the issue at run time instead of compile time.

#exofixit

PiperOrigin-RevId: 346163124
2020-12-14 10:15:45 +00:00
..
all Move common gradle setup to a setting file. 2020-06-26 11:13:25 +01:00
common Move ExoPlaybackException in common 2020-12-14 10:15:25 +00:00
core Add an TrackSelector base interface 2020-12-14 10:15:35 +00:00
dash Replace PeriodSeekInfo by static methods. 2020-11-30 09:33:22 +00:00
extractor Fix some extractor nullness checks 2020-12-14 10:15:45 +00:00
hls Use parts when choosing next chunk after track change 2020-12-14 10:15:05 +00:00
smoothstreaming Remove deprecated MediaSource builder methods and constructors. 2020-10-13 16:27:20 +01:00
ui Update StyledPlayers control overlay scrim from 30% opacity to 60% opacity for Accessibility requirements. 2020-12-03 17:10:44 +00:00
README.md

ExoPlayer library

The ExoPlayer library is split into multiple modules. See ExoPlayer's top level README for more information about the available library modules and how to use them.