LibFlac internally can skip ID3 tags correctly. Therefore, we don't need to keep track of the whole ID3 header section and skip through this section in Java code. We can just set the whole stream to the native library, and it will handle skipping ID3 tags correctly.
The only thing that the Java part need to do is peeking and parsing ID3 tags (if present), in order to populate the track format metadata.
GitHub: #4055.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193327602
This makes DownloadService easier to use in general and when only single
notification is used for all downloads.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193165982
*** Reason for rollback ***
Added the missing initialization to Timeline.EMPTY.
*** Original change description ***
Automated g4 rollback of changelist 192742299.
*** Reason for rollback ***
Culprit for b/78018932.
*** Original change description ***
Auto-register analytics collector in SimpleExoPlayer.
This automatically registers and deregisters an analytics collector in
SimpleExoPlayer. Doing this also allows to write integration tests checking
whether the reported window indices and media period ids are correct.
***
***
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193006701
*** Reason for rollback ***
Culprit for b/78018932.
*** Original change description ***
Auto-register analytics collector in SimpleExoPlayer.
This automatically registers and deregisters an analytics collector in
SimpleExoPlayer. Doing this also allows to write integration tests checking
whether the reported window indices and media period ids are correct.
***
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192816182
*** Reason for rollback ***
Rolling back to re-disable the exception as the crash is still appearing on latest version
*** Original change description ***
Automated g4 rollback of changelist 191128111.
*** Reason for rollback ***
This was a temp fix to be cherrypicked into YouTube Andorid Main App 13.12 to resolve P0 b/77315136.
*** Original change description ***
Temp fix for b/77315136: Don't lock or check cache directories in SimpleCache
To be immediately rolled back after submission
Submitting on behalf of cblay.
***
***
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192789263
Also add testing media to verify FLAC extension can play these sample rates.
Github: #3769.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192783193
This will help with removing selection factories from
SelectionOverride. It doesn't seem worth the effort to
have this togglable and in the UI of our demo app.
This change will also:
- Help to move TrackSelectionHelper into the UI module,
since it removes the part that's obviously debug-only.
- Make it possible to specify the ABR algorithm for each
sample, which might be nice as we start implementing
more of them.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192760196
I was considering putting this directly in DefaultHttpDataSource, however:
- We'd need to modify at least OkHttpDataSource as well. I'm not sure whether
Cronet follows this type of redirect automatically or not.
- HttpDataSource instances don't know how they're going to be used, so it's
probably correct that they behave like the underlying network stack.
Issue: #4108
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192745408
This automatically registers and deregisters an analytics collector in
SimpleExoPlayer. Doing this also allows to write integration tests checking
whether the reported window indices and media period ids are correct.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192742299
Allow trimming an arbitrary small number of samples (needing to trim up to two
samples actually seems to be common). For larger numbers of samples we do coarse
trimming by applying the edit list in the normal path, and don't use gapless
playback.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192736956
Currently, pending stream offset changes are kept until an output buffer
timestamp surpasses the next pending stream offset. However, this is
problematic if the next stream offset overlaps with the current output
buffer sample times (e.g. because the next stream starts at a non-zero start
time).
To correctly time the switch to the next stream offset, this change keeps
the timestamp of the last queued input sample as switch point. And we only
switch to the new offset after an output sample timestamp reached this switch
point.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192736637
*** Reason for rollback ***
Rollback only needed to cherry-pick into Photos release.
*** Original change description ***
Automated g4 rollback of changelist 190906020.
*** Reason for rollback ***
Breaks looping.
*** Original change description ***
Automated g4 rollback of changelist 190628272.
*** Reason for rollback ***
b/76391022 was caused by a timestamp correction in StabilizableSimpleExoPlayer which will be fixed with this CL.
*** Original change description ***
Automated g4 rollback of changelist 189570277.
*** Reason for rollback ***
causes b/76391022, motion still playback in Photos is broken
**...
***
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192621719
*** Reason for rollback ***
Breaks looping.
*** Original change description ***
Automated g4 rollback of changelist 190628272.
*** Reason for rollback ***
b/76391022 was caused by a timestamp correction in StabilizableSimpleExoPlayer which will be fixed with this CL.
*** Original change description ***
Automated g4 rollback of changelist 189570277.
*** Reason for rollback ***
causes b/76391022, motion still playback in Photos is broken
*** Original change description ***
Used fixed time frame in clipping media period.
Currently, whenever the clipping is updated, we...
***
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192621199
Fix bug which causes the PlayerActivity to finish whenever the
android.permission.READ_EXTERNAL_STORAGE permission is requested.
A better solution would involve not requesting permissions if a
previous request is still pending. This would involve keeping
extra state in the activity, so this solution is used to keep
the demo app's complexity at a minimum.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192588821
This fixes gapless playback of streams with encoder padding on devices where the
decoder could set the end of stream flag on a non-empty final buffer.
Issue: #3449
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192407924
Support parsing ID3 tags at the beginning of FLAC files, even though FLAC spec
does not require this.
GitHub: #4055.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192127929
A renderer configuration being null is equivalent to the
renderer being disabled. Remove the redundant state.
Issue: #3915
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192126015
Also added an assertion to the DRM event dispatcher to cause
immediate failure when this happens. This is consistent with
the assertion in the equivalent MediaSource class.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191892735
Also refactor the tests to make them behavioral (rather than testing the method)
and inline simple assertions.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191867614
These don't seem to be needed anymore. All tests run without them in gradle
and Blaze.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191867518
In MatroskaExtractor TrueHD audio samples are joined into larger chunks. For
some streams the resulting chunked samples seem never to start with a syncframe.
This could result in playback of TrueHD streams getting stuck after seeking
because we could never read a syncframe at the start of a sample to determine
the sample size.
Instead of expecting to find a syncframe at the start of a sample, search for it
within the sample, to fix this issue.
Note: this means that we may search a few thousand bytes to find the sample
size, but the cost is only incurred for the first audio sample read.
Issue: #3845
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191775779