Add automatic audio focus handling to SimpleExoPlayer. Audio focus
handling is an opt-in feature that can be requested by passing
the system's AudioManager and an AudioFocusConfiguration to
SimpleExoPlayer.setAudioFocusConfiguration.
When audio focus is being managed by SimpleExoPlayer, the player
will transparently handle pausing playback during
AUDIOFOCUS_LOSS_TRANSIENT, as well as lowering playback volume
during AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208045732
Also locally cache length in BaseDataSource and use zero cost
castNonNull to make sure there's no performance regression.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207715734
* Make dedicated section in RELEASENOTES
* Clean up AMR FACTORY
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207550281
Lint likes all constants for an IntDef to be declared explicitly
in switch statements.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207545682
Lint likes flags to be declared in this way, for safety, apparently
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207545382
Add a demo app that shows case how to use APIs from MetadataRetriever to
retriever track groups and frames from some media.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207269221
This CL adds support for seeking witin TS streams by using binary search. For
any seek timestamp, it tries to find the location in the stream where PCR
timestamp is close to the target timestamp, and return this position as the
seek position.
Github: #966.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207529906
For now, just allow any prefix (and don't check the namespace).
Checking the namespace requires turning on the XmlPullParser
namespace awareness feature, but this can only be done before
parsing, and I think requires us to specify the namespace when
querying other attributes. This would also risk breaking services
who currently don't set namespaces correctly.
It's possible we'll run into similar issues with the few other
tags (e.g. mspr:pro). We should revisit enabling namespace
awareness if/when we see this.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207526883
EventSampleStream.readData required eventStreamUpdatable to be
false for END_OF_STREAM to be returned, but it was only being
set to false when the manifest became static. This change also
sets it to false if the period is not the last one in a dynamic
manifest. It also renames it the parameter to appendable, since
that's what it really represents. Events may still be removed
from the start of the EventStream as the period starts moving
out of the live window.
Issue: #4492
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207517265
The IMA SDK now handles focusing the skip button so remove the workaround.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207515573
- Use ConstantBitrateSeeker to implement seeking for ADTS format. Since most
ADTS streams are VBR, we use the average bitrate of the first 1000 frames as
the average bit rate.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207509651
Currently, MetadataRetrieverImpl uses MediaCodecVideoRenderer to renderering
frames to capture. It suffers from 2 issues:
- MediaCodecVideoRenderer has a lot of logic to time frame release, including
drop frames if late or try to keep up with feeding speed etc... These are not
necessary at all for frame retrieval.
- MediaCodecVideoRenderer always tries to render 1 frame after video surface
update. This may some times lead to the wrong image being rendered for
MetadataRetriever.
This CL replaces this with a custom video renderer, that does not time frame
releases, and only render first frame after position reset / renderer
re-enabling.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207276937
Add a demo app that shows case how to use APIs from MetadataRetriever to
retriever track groups and frames from some media.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207269221
The error is spurious, and is due to an incorrect annotation in
the framework.
[Internal: b/32137960]
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207234603
For background on why doing this works, see below. I don't want to change
how we get our Cipher instance in non-test code, since PKCS7 always works
on Android. It's only when the tests are running on a non-Android host
machine that they can fail. An alternative would be to make it an androidTest,
but androidTests are slow.
------
Background:
"While Java considers PKCS5 and PKCS7 padding to be the "same" (and
one should always use the string "AES/CBC/PKCS5Padding" because
"AES/CBC/PKCS7Padding" will cause NoSuchAlgorithmException to be thrown
when initializing an AES block cipher using the Java crypto API), I
consider this a gross misnaming in the Java platform because the pure
technical definitions of these paddings are not the same."
Ref: https://stackoverflow.com/questions/10193567/java-security-nosuchalgorithmexceptioncannot-find-any-provider-supporting-aes-e
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207234518
LSC: []
Additional details: []
Cleanup change automatically generated by javacflume/refactory
Refactoring: //third_party/java_src/robolectric/errorprone:ShadowUsageCheck
Tested:
TAP --sample for global presubmit queue
[]
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207014379
Amazon like to use Device.MODEL, so key on that instead for
these workarounds.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206917935
When user seeks to an unprepared period, since there is no period being played, currently the track groups and track selections are still the ones from previous period. This CL changes it so that when such seeking happens, PlaybackInfo's track groups and track selections are changed to empty.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206916109
This is needed for implementing (optional) support for audio focus handling in a
later change.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206899837