120 Commits

Author SHA1 Message Date
vyao
ebc1b2d2cc Automated g4 rollback of changelist 191834511.
*** 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
2018-04-16 10:53:07 +01:00
olly
67cde97a70 Move code unrelated to mapping to DefaultTrackSelector
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192759210
2018-04-16 10:47:55 +01:00
tonihei
b4a3385a6f 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=192742299
2018-04-16 10:44:05 +01:00
tonihei
0802ecfee3 Automated g4 rollback of changelist 192621199.
*** 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
2018-04-16 10:38:48 +01:00
falhassen
692b7a674a 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

*** 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
2018-04-16 10:37:29 +01:00
olly
3c93142a4e Move MappingTrackSelector tests to DefaultTrackSelector
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192263391
2018-04-11 00:31:11 +01:00
hoangtc
986095a4a3 Support FLAC files with ID3 headers.
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
2018-04-11 00:28:35 +01:00
olly
6dc6f79f64 Remove redundant state from TrackSelectorResult
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
2018-04-11 00:27:15 +01:00
olly
75338530ef Simplify disabling renderers in ExoPlayerTest
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191901120
2018-04-08 16:39:57 +01:00
andrewlewis
f5b568fc7d Scale the minimum buffer size in shouldContinueLoading
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191885689
2018-04-08 16:39:57 +01:00
olly
9a507db171 Fix ClearKey response conversion pre O-MR1
Issue: #4075

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191872512
2018-04-08 16:39:57 +01:00
andrewlewis
02bc2d7ce1 Add DefaultLoadControl test for starting playback
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
2018-04-08 16:39:57 +01:00
tonihei
66d2b76a6c Remove test max SDK version overrides.
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
2018-04-08 16:39:57 +01:00
danarapagna
8a74acbe6f Automated g4 rollback of changelist 191128111.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191834511
2018-04-08 16:40:58 +01:00
tonihei
6b82d1c2bd Add setters to MediaSource factories for custom window tag.
This field (formerly "id") is almost impossible to use so far. Having setters
in the factories allows to specify custom tags for all media sources.

Also added a ExoPlayer.getCurrentTag() method to retrieve the tag of the
currently playing media source in a convenient way.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191738754
2018-04-07 19:12:21 +01:00
andrewlewis
f2399c1c85 Make flush() update parameters, and make Sonic flushable
Previously it was necessary to create a new Sonic instance every time the
processor was flushed. Add a flush() method to Sonic so that it can be reused
when seeking. It still needs to be recreated when parameters change.

SonicAudioProcessor and SilenceSkippingAudioProcessor have methods for setting
parameters that are documented as taking effect after a call to flush(), but
actually the value returned by isActive() was updated immediately. Track the
pending values and apply them in flush() to fix this.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191442336
2018-04-03 18:47:55 +01:00
olly
8b5a34769f Remove unnecessary line from test manifests
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191409777
2018-04-03 15:30:40 +01:00
danarapagna
6380f26a7f 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=191128111
2018-04-03 15:27:26 +01:00
andrewlewis
7820497006 Add speed-only constructor for PlaybackParameters
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190927811
2018-03-29 17:53:18 +01:00
tonihei
39e4112e8f Add proper live stream clipping.
This adds two options to the ClippingMediaSource which allow proper clipping
of live streams:
 1. The clipping stays fixed relative to already created media periods. That
    means that playback actually progresses through the clipped media and
    eventually reaches the end of the clipping. The window is also marked
    as non-dynamic to let playback end in this case.
 2. Allow to specify a clipping duration relative to the default position to
    be able to specify the duration of live stream which is to be played.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190911049
2018-03-29 13:54:06 +01:00
tonihei
4db6d6fbaa 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 move the time frame of the
clipped period to start at 0. This causes problems when we are already playing
this period and the renderer position does no longer match the stream
positions.

This change keeps the time frame of the...

***

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190906020
2018-03-29 13:50:44 +01:00
andrewlewis
78ff4af6a7 Clean up AudioProcessor implementations
- Ensure that no memory is used by audio processors that are always inactive, by
  only allocating in flush() if active. If data was already allocated but a
  processor becomes inactive we assume that the allocation may be needed in
  future so do not remove it (e.g., in the case of ResamplingAudioProcessor).
- Make SilenceSkippingAudioProcessor set up its buffers in flush(), and clarify
  that it is always necessary to call flush() if configure() returns true.
- Make reset() reset all state for all processors.
- Use @Nullable state or empty arrays for inactive audio processor buffers.
- Miscellaneous style/consistency cleanup.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190895783
2018-03-29 13:47:19 +01:00
eguven
acca4f238b Add missing @Nullable annotations
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190817805
2018-03-29 13:45:38 +01:00
eguven
f40add5244 Add a DownloadManager constructor with default parameter values
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190782395
2018-03-29 13:38:54 +01:00
andrewlewis
6dcfe57fd3 Add SilenceSkippingAudioProcessor
This uses a simple threshold-based algorithm for classifying audio frames as
silent, and removes silences from input audio that last longer than a given
duration.

The plan is to expose this functionality via PlaybackParameters in a later
change.

Issue: #2635

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190737027
2018-03-29 13:28:42 +01:00
olly
0a4ea1cd3e Make DefaultTrackSelector.Parameters parcelable
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190635670
2018-03-28 01:01:55 +01:00
byungh
82b72c9358 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 move the time frame of the
clipped period to start at 0. This causes problems when we are already playing
this period and the renderer position does no longer match the stream
positions.

This change keeps the time frame of the clipped media period as it is and
instead specifies the offset of the window in the period.

***

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190628272
2018-03-28 00:58:38 +01:00
eguven
5925f92482 Persist content redirected URI in CacheDataSource
Issue: #2360

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190597773
2018-03-28 00:53:40 +01:00
olly
f7cd9f7d1d Seek to sync frame within moof in FragmentedMp4Extractor
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190498206
2018-03-28 00:44:54 +01:00
tonihei
eb84b144bf Move window index and media period id out of MediaLoadData again.
This gives the MediaSourceEventListener API a consistent look when new methods are
added which only have a window index and media period id.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190450270
2018-03-28 00:38:09 +01:00
olly
dfe4bfba03 Trim zero padding from EBML string values
Issue #4010

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190442962
2018-03-28 00:36:24 +01:00
tonihei
432d746d82 Remove default 60sec renderer offset.
This was only needed to ensure a ClippingMediaSource can provide samples from
a key frame before the clipping start time. Now the ClippingMediaSource will
not report negative timestamps, this workaround can be removed.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190045302
2018-03-28 00:28:59 +01:00
tonihei
e3a90a44b7 Support media source events for composite media sources.
This is achieved by automatically registering a listener for child sources in
compositions. The composite media source has the chance to correct the
reported window index and media period id in the MediaLoadData of the events.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189575414
2018-03-28 00:06:58 +01:00
tonihei
6b527da462 Used fixed time frame in clipping media period.
Currently, whenever the clipping is updated, we move the time frame of the
clipped period to start at 0. This causes problems when we are already playing
this period and the renderer position does no longer match the stream
positions.

This change keeps the time frame of the clipped media period as it is and
instead specifies the offset of the window in the period.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189570277
2018-03-28 00:05:35 +01:00
eguven
371f3acea8 Prevent multiple instances of SimpleCache in the same folder
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189562865
2018-03-28 00:04:14 +01:00
tonihei
c7c9a1e9e4 Send media source events for fake media sources.
This allows to test sending events when using fake media sources.
The FakeMediaSource now simulates a manifest load when being prepared.
And the FakeMediaPeriod simulates a media load when being prepared.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189205285
2018-03-27 23:58:52 +01:00
eguven
bb71b050c9 Add getContentMetadata and applyContentMetadataMutations to SimpleCache
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189169899
2018-03-27 23:53:23 +01:00
eguven
10a48e778e Make CachedContent serialize whole metadata
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189166039
2018-03-27 23:51:56 +01:00
hoangtc
42d7a319cd Match codecs starting with "mp4a" to different Audio MimeTypes
Currently, we are treating all codecs starting with "mp4a" as AAC. However,
some codec strings starting with "mp4a" are not AAC format, as should be
treated differently.

GitHub: #3779

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=189163517
2018-03-27 23:50:31 +01:00
eguven
e565a46a7d Add DefaultContentMetadata serialization and deserialization
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188889091
2018-03-27 23:40:25 +01:00
andrewlewis
07f898d441 Use @IntDef for some more int-based enumerations
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188853170
2018-03-13 15:41:06 +00:00
eguven
00a7306fd8 Make CachedContent store content length in ContentMetadata
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188742379
2018-03-13 15:37:45 +00:00
eguven
e13789bfcc Hide internal DownloadManager states
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188481259
2018-03-12 15:19:16 +00:00
andrewlewis
a58bffbe52 Fix clipping to end of source
Issue: #3966

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188465096
2018-03-12 15:17:09 +00:00
eguven
ebfd9d0535 Convert AbstractContentMetadata to DefaultContentMetadata
As it turns out there isn't much gain by subclassing
AbstractContentMetadata. Moved abstract onChange method to a listener
interface.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188353673
2018-03-12 15:13:42 +00:00
eguven
5f576819d7 Add test for DefaultLoadControl.shouldContinueLoading
Also simplified shouldContinueLoading condition code and added a builder for DefaultLoadControl.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188306213
2018-03-12 15:04:02 +00:00
olly
b7c9912a3d Make TrackGroup and TrackGroupArray parcelable
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188047131
2018-03-07 15:27:45 +00:00
eguven
f81dc44112 Add ContentMetadata and AbstractContentMetadata
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188041418
2018-03-07 15:26:08 +00:00
tonihei
82fc5730e7 Fix divergence of timeline between ExoPlayerImpl and ExoPlayerImplInternal.
The playback state in ExoPlayerImpl and ExoPlayerImplInternal is usually kept
in sync. Only the timeline was so far not updated in the same way with the
internal player using a null timeline while ExoPlayerImpl keeps the previous
timeline.

This change removes the need to keep a null timeline which allows to update
the internal timeline in the same way as the external one. This fixes problems
when retrying a failed playback multiple times.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188034988
2018-03-07 15:22:58 +00:00
tonihei
4e69f71e52 Fix wrong start position in resetInternal.
The start position was set to the old start position instead of the current
playback position. We need to set the start position to the current playback
position to ensure a repreperation with the same media starts from the last
playback position.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=188025439
2018-03-07 15:21:16 +00:00