ParsableBitArray.readBit in particular was doing an excessive
amount of work. The new implementation is ~20% faster on desktop.
Issue: #3040
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=161666420
Really low hanging fruit optimization for TS extraction.
ParsableBitArray is quite expensive. In particular readBits
contains at least 2 if blocks and a for loop, and was being
called 5 times per 188 byte packet (4 times via readBit). A
separate change will follow that optimizes readBit, but for
this particular case there's no real value to using a
ParsableBitArray anyway; use of ParsableBitArray IMO only
really becomes useful when you need to parse a bitstream more
than 4 bytes long, or where parsing the bitstream requires
some control flow (if/for) to parse.
There are probably other places where we're using
ParsableBitArray over-zealously. I'll roll that into a
tracking bug for looking in more detail at all extractors.
Issue: #3040
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=161650940
1. maybeRenotifyVideoSizeChanged should report reported* variables
2. Add check into maybeNotifyVideoSizeChanged to suppress reporting
in the case that the width and height are still unknown.
Issue: #3007
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=160879625
Two of MediaPeriod's methods are only called after the media period has been
prepared. Added this to JavaDoc of these method to simplify implementations.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=160510373
Make DrmSessionException takes in Throwable cause instead of Exception cause, which is more limiting and doesn't add any benefit.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=160121486
This prevents strange behaviors for streams that changes the track declaration
order in the PMT.
NOTE: This should not change ANY behavior other than the one described above.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=158140890
- Return early if the selection is unchanged.
- Remove unnecessary variables.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=158138187
When updating track selection, we should only revert back from ideal
track selection to current track selection if the currently selected
track is not black-listed.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=158135644
This is necessary to make sure that the correct thing happens
where MediaCodecInfo.adaptive is queried directly (for example,
MediaCodecVideoRenderer uses the field to determine how to size
input buffers). Also disable adaptive on Nexus 10.
Issue: #2806
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=157583473
We do this everywhere for index based seeking already.
Issue: #2876
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=157568788
Use AUDIO_UNKNOWN instead. This is in line with our handling
of video tracks with VIDEO_UNKNOWN.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=157209428
- Call onDisabled last. onDisabled really shouldn't be doing
anything with the stream, so pretty sure this is fine (and
guarantees the stream is cleared properly even if onDisabled
throws a RTE).
- Remove super.onDisabled calls from Text/Metadata renderers.
This is just for consistency; we don't make such calls in
other direct descendants of BaseRenderer.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=156130640
Even though this is not strictly spec compliant, this will make exoplayer
behave like it used to before multiple program support. Developers
who want to take advantage of the multiple program support are probably
less than the ones who only want their stream to "just work". This is
particularly useful for streams obtained after a filtering component,
like a tv tuner.
Issue:#2757
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=155486122
This is most commonly caused by malformed media, where
the media indicates that something we need to make an
allocation for is *really huge*. Failing playback is
appropriate for this case; killing the process is not.
Issue: #2780
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=155408062