Commit graph

3424 commits

Author SHA1 Message Date
olly
9c15c63d4e Add util method for starting foreground services
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194761771
2018-05-07 06:25:40 +01:00
olly
85384cf45b Add extra context to strings
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194691625
2018-05-07 06:24:29 +01:00
olly
159979e69e Remove spurious TargetApi annotation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194535300
2018-05-07 06:23:06 +01:00
hoangtc
ed994517b2 Changes MetadataRetrieverTest to use a TestRunner.
Add a TestRunner for MetadataRetriever that roughly follow the test runner for
ExoPlayer. The TestRunner supports scheduling test steps in a sequence, compare
expected callbacks with actual callbacks, and block the test until it is done.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194518738
2018-05-07 06:22:03 +01:00
olly
3e76464666 Fix download percentage reporting
- When calculating the downloaded percentage in DASH, there was no
  way to disambiguate between 0 of 0 segments being downloaded because
  there are no cached indexes (i.e. 0% downloaded) and 0 of 0 segments
  being downloaded because the index defines 0 segments (i.e. 100%
  downloaded).
- Also replace use of NaN with a named constant.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194453202
2018-05-07 06:20:59 +01:00
hoangtc
fe32401792 Supports extracting from AMR container format.
Supports extracting data from AMR container format for both narrow and wide
band formats. Also added AmrExtractor as one of the default extractor to be
used in DefaultExtractorsFactory.

GitHub: #2527.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194407507
2018-05-07 06:19:55 +01:00
olly
59f01ec333 Use manifest filtering when downloading.
When we play downloaded content, we rely on the manifest filters
to produce a manifest that contains only the content that was
downloaded. It makes sense just to use the same filters during
download too, so we don't have to worry about any implementation
differences.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194380704
2018-05-07 06:18:51 +01:00
olly
6ac252843e Move TrackSelectionHelper to UI module
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194373357
2018-05-07 06:17:46 +01:00
aquilescanta
ddef32c9e2 Support multiple EXT-X-MAP tags
Issue:#4182

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194223312
2018-05-07 06:16:32 +01:00
olly
dcff063709 Fix DefaultTrackSelector bug + improve equals check
- clone() wasn't performing a deep enough copy
- Sort tracks in overrides to improve equals check

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194220596
2018-05-07 06:15:29 +01:00
olly
0d9d1998f4 Centralize manifest filtering.
The generic type for track key will go away soon.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194220450
2018-05-07 06:14:25 +01:00
olly
b77d6c4ef4 Remove Downloader.ProgressListener
ProgressiveDownloader never implemented this properly, and we
don't use it in DownloadManager/DownloadService, both of which
use a polling model. A polling model is also what's used elsewhere,
for example to query the current playback position.

This is effectively doing the TODO in ProgressiveDownloader.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194214579
2018-05-07 06:13:24 +01:00
olly
b6f646ed96 Clean up DownloadAction instances
This removes a fair chunk of code. The line delta would
be more negative if it not for adding all the /* x= */
comments in DashDownloadActionTest!

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194136689
2018-05-07 06:11:49 +01:00
olly
c9bb102f93 Use Uri rather than string for ProgressiveDownloadAction
This makes it consistent with the other download types.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194089486
2018-05-07 06:10:44 +01:00
tonihei
f320d9e0ab Deprecate add/remove video/audio debug listener in SimpleExoPlayer.
Using addAnalyticsListener provides the same functionality with additional
information.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194071893
2018-05-07 06:09:40 +01:00
olly
1f3adacac3 Use parcelable keys for HLS downloads to remove special casing
This removes the need for separate String/Parcelable filter paths in
the demo app. Hopefully this is a temporary measure as we work
toward using track groups + consistent keys for all media types.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194065499
2018-05-07 06:08:34 +01:00
tonihei
874dc202f8 Prevent timeline access in AnalyticsCollector for future windows and periods.
Some of the events are emitted by the media periods itself and their index may
not be available in the publicly accessible timeline yet.

To prevent this, we currently check for timeline.isEmpty() only. But this may
also happen for dynamic changes, e.g. when new sources are added in fast
succession and a manifest for one of the new sources starts loading before the
updated timeline is reported.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194057401
2018-05-07 06:07:29 +01:00
bachinger
301bb3ada4 add flag to hide play/pause button
exoghi/4056

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193960004
2018-05-07 06:05:16 +01:00
olly
f7c5e475a7 Prevent native crash in raw decoder
Playback will still fail if an input sample is larger
than 32K, but will now fail gracefully.

Issue: #4057

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193951955
2018-05-07 06:04:13 +01:00
olly
895ac660a8 Default playClearSamplesWithoutKeys consistently to false
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193942368
2018-05-07 06:03:12 +01:00
andrewlewis
ddd603a1ee Add DownloadService constructor for notification channel
Also move NotificationUtil from the UI module to the core module.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193941401
2018-05-07 06:02:07 +01:00
andrewlewis
f6d5cb9934 Add a convenience constructor for DownloadManagers
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193940183
2018-05-07 05:59:59 +01:00
olly
adc77fd0b1 Simplify & clean up offline support in demo app
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193938140
2018-05-07 05:58:59 +01:00
bachinger
e0af050163 add notification priority for lower API levels
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193934212
2018-05-07 05:57:53 +01:00
olly
7d6b0e1fda Move renderer flags, overrides and tunneling ID into Parameters
- This is needed to make DefaultTrackSelector properly thread
  safe, and enable atomic changes to the selector that, for
  example, disable a renderer and enable another one at the same
  time.

- This change also saves/restores parameters and the start
  position in PlayerActivity, resolving the ref'd issue.

Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193913350
2018-05-07 05:56:48 +01:00
andrewlewis
5926e20105 Use the codec MIME type for configuration
This may differ from the format MIME type for audio/eac3-joc.

Issue: #4165

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193906521
2018-05-07 05:55:43 +01:00
olly
d3cdf52591 Sanitize MappedTrackInfo API
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193897041
2018-05-07 05:53:05 +01:00
falhassen
c116391fe2 Override RangedUri#toString.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193710604
2018-05-07 05:51:53 +01:00
andrewlewis
30e040a48d Add @DrawableRes for player notification manager icon
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193670840
2018-05-07 05:50:50 +01:00
andrewlewis
9de4e5d7ac Make MediaDescriptionAdapter the last argument
If the caller wants to pass an anonymous inner class for the media description
adapter, this results in slightly more readable code.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193666444
2018-05-07 05:49:45 +01:00
aquilescanta
400619c1c6 Preemptively declare an ID3 track for HLS chunkless preparation
Issue:#3149
Issue:#4016

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193664294
2018-05-07 05:48:42 +01:00
olly
a1b8aa1514 Adding useful track selection strings
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193663850
2018-05-07 05:47:33 +01:00
eguven
53a003bae2 Start downloads on DownloadService creation if there are no requirements
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193662396
2018-05-07 05:46:02 +01:00
andrewlewis
b125d79ed6 Add a convenience constructor for a notification manager + channel
Also fix duplicate action strings when using a custom stop action, and do some
misc no-op cleanup.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193652377
2018-05-07 05:44:57 +01:00
eguven
80c28f14b3 Re enable single SimpleCache instance assertion and add helper methods
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193637830
2018-05-07 05:42:40 +01:00
falhassen
0666e4f306 Override ChunkIndex#toString.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193600860
2018-05-07 05:41:36 +01:00
andrewlewis
117dd6f33f Mark optional parameters @Nullable
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193530582
2018-05-07 05:39:18 +01:00
andrewlewis
2b367759cf Allow overriding skipping/scaling with custom AudioProcessors
Issue: #3142

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193519029
2018-05-07 05:38:10 +01:00
aquilescanta
d2c6871ce6 Fix HLS encryption method detection
Issue:#4145

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193494319
2018-05-07 05:37:04 +01:00
olly
cdb13dd548 Make SelectionOverride parcelable
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193494016
2018-05-07 05:35:55 +01:00
andrewlewis
5fe0b0a13b Fix @link typo
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193491200
2018-05-07 05:34:49 +01:00
eguven
35e3892dbf Invoke CacheDataSource EventListener.onCacheIgnored once per request
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193480939
2018-05-07 05:33:45 +01:00
andrewlewis
8bbdb1b143 Add an @IntDef for notification channel importance
This is to avoid callers needing to do an API check or suppress inlined constant
warnings.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193476188
2018-05-07 05:32:40 +01:00
olly
d4aceef8a8 Add getPlaybackError to Player/ExoPlayer interface
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193400443
2018-05-07 05:31:37 +01:00
eguven
a8e16f3cfe Simplify DownloadService notification requirements
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
2018-05-07 05:29:20 +01:00
olly
fec7d32836 Remove TrackSelection.Factory from SelectionOverride
Issue: #3915

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193045534
2018-05-07 05:28:06 +01:00
olly
e99b8802eb Update translations
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193044028
2018-05-07 05:27:02 +01:00
olly
45ed7c304c Update moe equivalence
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193016758
2018-05-07 05:25:36 +01:00
cdotchen
693fe2841d fix timebar scrubber notify wrong start position 2018-04-24 22:08:30 +08:00
Oliver Woodman
d4eb2e5b85 Resync internal/external codebases 2018-04-16 11:36:59 +01:00
ojw28
b5912efb03
Merge pull request #3921 from wischnow/dev-v2
support zlib compressed PGS subtitles
2018-04-16 11:07:26 +01:00
ojw28
650f96fd6e
Merge pull request #4000 from jianx9/dev-v2
Provide an option to skip file descriptor sync in CacheDataSink. closeCurrentOutputStream
2018-04-16 11:07:11 +01:00
tonihei
92dd708ef8 Automated g4 rollback of changelist 192816182.
*** 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
2018-04-16 10:55:42 +01:00
falhassen
752b90027c 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=192816182
2018-04-16 10:54:28 +01:00
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
olly
0ee3963789 Follow 307/308 POST redirects for license requests
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
2018-04-16 10:46:38 +01:00
andrewlewis
22b8ab5c09 Fix initial application of playback parameters
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192744823
2018-04-16 10:45:19 +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
andrewlewis
387cc2f2bd Trim more than one sample for elst gapless
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
2018-04-16 10:42:48 +01:00
tonihei
0a68d1f09c Fix pending stream offset activation in video renderer.
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
2018-04-16 10:41:27 +01:00
eguven
9a4e083b4e Blacklist Philips QM163E from setOutputSurface
Issue: #4104

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192629223
2018-04-16 10:40:07 +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
eguven
8809193266 Add ContentMetadataInternal helper class
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192596362
2018-04-16 10:34:46 +01:00
andrewlewis
3c78dc22f6 Handle non-empty EoS buffers, for audio
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
2018-04-16 10:30:45 +01:00
aquilescanta
2084ba7b05 Update supported-formats and DrmSessionManager#canAcquireSession
Issue:#4022

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192297801
2018-04-11 00:32:24 +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
andrewlewis
c54b195a29 Allow applications to access codec capabilities
Issue: #3820

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192115208
2018-04-11 00:25:56 +01:00
tonihei
d4a03d3b36 Remove some superfluous "custom"s.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192100852
2018-04-11 00:24:33 +01:00
andrewlewis
60aecdf3b3 Expose setExtraAdGroupMarkers on PlayerView
Issue: #4097

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=192100000
2018-04-11 00:23:10 +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
olly
03a36ce6ba Fix NPE cause by demo app adding null listener to drm manager
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
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
tek
26cb32ab6a Migrating to new "android" handler from deprecated "androidlocalizer".
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191788495
2018-04-08 16:39:57 +01:00
andrewlewis
280cc545dd Search for TrueHD syncframes
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
2018-04-07 19:15:50 +01:00
andrewlewis
1b84544264 Improve TrueHD syncframe detection
Also increase the chunking size to sixteen samples.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191768169
2018-04-07 19:14:03 +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
tonihei
f25c7a859a Add analytics listener interface and default data collector.
The data collector keeps track of active media periods to assign each event to
the correct media period and/or window. This information, together with other
information like playback position and buffered duration, is then forwarded
with the event to all registered listeners.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191726408
2018-04-07 19:10:37 +01:00
olly
e26cad1a6d Blacklist Huawei P9 Lite from setOutputSurface
Issue: #4084

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191716636
2018-04-07 19:07:00 +01:00
andrewlewis
6ea79c8a4e Fix usage of 'samples' vs 'frames' for gapless
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191704629
2018-04-07 19:05:17 +01:00
andrewlewis
e3eddc4d20 Apply new playback parameters only once drained
Previously the SonicAudioProcessor and SilenceSkippingAudioProcessor would track
their pending playback parameters and only apply them in flush(). Having the
values only take effect once flushed made the processors a bit more difficult to
use, especially because the value returned by isActive wouldn't update
immediately.

Make DefaultAudioSink only set the new speed/pitch/skip silence setting after
the audio processors have drained. This means it's no longer necessary to keep
track of pending parameter values and also fixes a bug where initial playback
parameters weren't applied because the audio processors weren't flushed while
uninitialized before DefaultAudioSink called isActive() on them.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191586727
2018-04-07 19:03:21 +01:00
tonihei
7c65b94578 Check for null listeners in deprecated paths in DefaultDrmSessionManager.
The previous API allowed to pass in null to the constructors although variants
without listeners exist. That's why we need to handle these null values.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191577891
2018-04-07 19:01:30 +01:00
olly
631e1db7f9 Bump version to 2.7.3 and update release notes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191561921
2018-04-04 10:09:05 +01:00
sxp
aca4db1131 Keep old Exoplayer API.
Partial rollback of [] which caused b/77294898 by deleting a public Exoplayer API.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191519591
2018-04-04 10:07:44 +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
5f03c37599 Don't refresh DASH manifest if minUpdatePeriod is unset
We currently refresh repeatedly in this case. According to the
DASH spec omitting minUpdatePeriod indicates that the manifest
does not change, and therefore we should not refresh. I think
it might be valid to omit minUpdatePeriod in a dynamic manifest
if relying exclusively on EMSGs to trigger manifest refresh.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191420247
2018-04-03 15:40:41 +01:00
eguven
f7e2cdbbbb Add missing synchronized keywords and assertions
applyContentMetadataMutations and getContentMetadata methods suppossed to be synchronized and assert the instance isn't released.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191419637
2018-04-03 15:37:20 +01:00
andrewlewis
53eae50c0c Simplify buffer resizing in Sonic
This is in preparation for making it possible to flush a Sonic instance so that
it's not necessary to create new ones every time the processor is flushed.

There should be no behavior changes here.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191410326
2018-04-03 15:32:20 +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
olly
3a98f7aa99 Make toUpperCase conversions locale invariant
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190942033
2018-03-29 18:00:05 +01:00
olly
1648e4e9f9 Don't call getLayoutDirection before API level 17
Weirdly, the Android Javadoc indicates that it returns something
before the API level on which the same Javadoc states it was added.
In any case, we can simply not call the method to avoid the
warning, since we only use the value if the API level is at least
23 anyway.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190941776
2018-03-29 17:58:38 +01:00
olly
d2fe3cf9c9 Bump version to 2.7.2 + update release notes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190941619
2018-03-29 17:56:48 +01:00