Commit graph

432 commits

Author SHA1 Message Date
andrewlewis
491edd1edc Update surface directly from SphericalSurfaceView
The SurfaceListener just sets the surface on the VideoComponent, but
SphericalSurfaceView already accesses the VideoComponent directly so it seems
simpler to update the surface directly.

PiperOrigin-RevId: 249242185
2019-05-23 13:26:19 +01:00
andrewlewis
f3f885c6aa Update a reference to SimpleExoPlayerView
PiperOrigin-RevId: 249068395
2019-05-21 13:52:30 +01:00
bachinger
a458635540 Add ProgressUpdateListener
Issue: #5834
PiperOrigin-RevId: 249067445
2019-05-21 13:52:14 +01:00
tonihei
33c677846a Use versioned manifest in all Robolectric tests.
We are currently defaulting to targetSdk=1 as no targetSdk is specified. Only
tests which explicitly ask for another SDK use another test SDK. With the
versioned manifest, all tests run using the targetSDK by default.

PiperOrigin-RevId: 249060796
2019-05-21 13:51:43 +01:00
aquilescanta
cf389268b0 Add links to the developer guide in some READMEs
PiperOrigin-RevId: 248221982
2019-05-15 18:14:07 +01:00
olly
f4968e1a8e Update translations
PiperOrigin-RevId: 246729123
2019-05-05 18:18:53 +01:00
olly
1ef49ed205 Fix broken Javadoc
PiperOrigin-RevId: 246728418
2019-05-05 18:18:34 +01:00
tonihei
c480818249 Fix some random AndroidStudio warnings.
PiperOrigin-RevId: 245956915
2019-04-30 22:08:07 +01:00
tonihei
0bb32a8f09 Add IntDef for Player states.
PiperOrigin-RevId: 245925254
2019-04-30 22:07:47 +01:00
tonihei
21b2a471bb Toggle playback controls according to standard Android click handling.
We currently toggle the view in onTouchEvent ACTION_DOWN which is non-standard
and causes problems when used in a ViewGroup intercepting touch events.

Switch to standard Android click handling instead which is also what most
other player apps are doing.

Issue:#5784
PiperOrigin-RevId: 245219728
2019-04-26 18:32:42 +01:00
andrewlewis
b01075f325 Play out remaining data on reconfiguration
Before this change we'd release the audio track and create a new one as soon
as audio processors had drained when reconfiguring.

Fix this behavior by stop()ing the AudioTrack to play out all written data.

Issue: #2446
PiperOrigin-RevId: 244812402
2019-04-26 18:27:53 +01:00
olly
82061e9afb Improve progress reporting logic
- Listener based reporting of progress allows the content length
  to be persisted into the download index (and notified via a
  download state change) as soon as it's available.
- Moved contentLength back into Download proper. It should only
  ever change once, so I'm not sure it belongs in the mutable part
  of Download.
- Made a DownloadProgress class, for naming sanity.

PiperOrigin-RevId: 244242487
2019-04-18 23:24:11 +01:00
eguven
f9f009645d Add missing DownloadService build*Intent and startWith* methods
PiperOrigin-RevId: 244196081
2019-04-18 23:22:35 +01:00
olly
ee08e7dcac Fix key and accessibility scrubbing
Issue: #5767
PiperOrigin-RevId: 243811443
2019-04-16 16:42:08 +01:00
olly
7b84a1ead7 DownloadManager.getCurrentDownloads: Return list instead of array
- Allows enforcing immutability, which in a future CL will allow
  avoiding allocating a new array/list on every call.
- Also some left over doc cleanup from the DownloadState rename.

PiperOrigin-RevId: 243627352
2019-04-16 15:27:03 +01:00
tonihei
1ee51518ae Use new exoplayer.dev domain everywhere.
The old domain automatically forwards to the new one. For consistency, change
all doc and code references regardless.

Also adds GitHub CNAME config file which configures our page for the custom
domain.

PiperOrigin-RevId: 243592110
2019-04-16 15:25:27 +01:00
olly
68993f233d Improve DownloadNotificationHelper
- Remove completed downloads from progress notification.
- Treat restarting as a downloading, When there are both
remove and download tasks ongoing, we prefer to show a
download notification to a remove one. A restarting task
encapsulates is basically a (remove+download) task. Given
our preference, we should treat it as a download rather
than as a removal.

PiperOrigin-RevId: 242867228
2019-04-13 01:39:24 +01:00
eguven
8688bd2d88 Rename DownloadState to Download
PiperOrigin-RevId: 242839480
2019-04-13 01:38:25 +01:00
tonihei
f0cd144baf Update UI translations.
We have new strings for track role types.

PiperOrigin-RevId: 242829944
2019-04-13 01:38:05 +01:00
bachinger
8b766ba4b8 Use FLAG_UPDATE_CURRENT for PendingIntents of playback commands.
ISSUE: #5734
PiperOrigin-RevId: 242459668
2019-04-13 01:34:27 +01:00
bachinger
baf00406c0 Provide option to include next/prev button in lock screen/compact mode.
Issue: #5616
PiperOrigin-RevId: 242452686
2019-04-13 01:33:28 +01:00
olly
0daaba443c Get rid of DownloadState.STATE_REMOVED
It's a transient state whose only use is when passing a removed
download to onDownloadStateChanged. It's a bit strange to have it
as a proper state, since we end up asserting that it's an invalid
value in other places.

This change adds an explicit onDownloadRemoved, which allows
removal of the transient STATE_REMOVED, related assertions, and
uncertainty when dealing with an @State variable whether it's
necessary to handle it being STATE_REMOVED.

PiperOrigin-RevId: 242444128
2019-04-13 01:32:08 +01:00
eguven
27884c70f8 Make DownloadState counters mutable
PiperOrigin-RevId: 241763220
2019-04-05 21:12:35 +01:00
tonihei
32924e3f17 Use role flags in DefaultTrackNameProvider.
Also make combination of language and role flags the default over the label,
as it's more readable and auto-translated into other languages.

PiperOrigin-RevId: 240801070
2019-03-29 16:51:12 +00:00
tonihei
e5aed73fba Switch format language tag to use full BCP 47 codes.
This allows to distinguish between regional variants and scripts.

We still need to normalize the language code itself to make track selection
independent of the whether 2 or 3 letter codes are used.

PiperOrigin-RevId: 239783115
2019-03-22 19:56:25 +00:00
tonihei
8e80acd18f Use androidx.test and extensions.
This replaces the deprecated usages of RobolectricTestRunner and
RuntimeEnvironent and fully migrates the tests to androidx.

PiperOrigin-RevId: 238011667
2019-03-15 04:53:12 +00:00
tonihei
57e2ec6a1d Actually use view atrribute for min update interval.
We didn't read the attribute value so far.

PiperOrigin-RevId: 237420697
2019-03-15 04:51:08 +00:00
Oliver Woodman
89908794e6 Merge pull request #5496 from szaboa:dev-v2-5040
PiperOrigin-RevId: 237412166
2019-03-15 04:50:32 +00:00
olly
f35dbeb567 TrackSelectionView: Default to Auto when last check box deselected
PiperOrigin-RevId: 237052890
2019-03-06 17:29:18 +00:00
tonihei
36060e36cb Fix TrackSelectionView selection/deselection again.
There are 6 different situations which are now more explicitly covered to
ensure we handle them correctly:
1. Radio button (non-adaptive, single group only)
   Selected -> Do nothing.
   Unselected -> Replace override with selected track.
2. Check box (non-adaptive, but multi-group allowed)
   Selected -> Remove track (and override). If last one, set isDisabled flag.
   Unselected -> Replace override with selected track.
3. Check box (adaptive allowed, single or multi group)
   Selected -> Remove track. If last, remove override and maybe set isDisabled.
   Unselected -> Add track to override.

PiperOrigin-RevId: 236668642
2019-03-06 17:29:18 +00:00
tonihei
b48ceb19bd Remove unneccessary deprecated constants and classes.
This constants and classes are defined by the same name in the super class and
thus can be safely removed.

PiperOrigin-RevId: 236136197
2019-03-06 17:29:18 +00:00
tonihei
3eeb3acb3b Remove nullness suppressions.
These were added in an internal clean-up and are better fixed than suppressed.

PiperOrigin-RevId: 236118715
2019-03-06 17:29:18 +00:00
tonihei
84e20216d7 Do not allow deselection of radio button.
Instead just set the currently clicked item as override. If the already
selected button is clicked, the override is reset with the same value.

PiperOrigin-RevId: 236118429
2019-03-06 17:29:18 +00:00
tonihei
0bb123aa4c TrackSelectionView: Use same "isAdaptive" logic in updateViews and onClick.
We currently do not show check boxes if the renderer does not support adaptive
switches between tracks in one group. However, we assume check boxes in the
onClick method.

Use same logic for both methods to be consistent.

PiperOrigin-RevId: 236118372
2019-03-06 17:29:18 +00:00
andrewlewis
253ea78679 Register the overlay view as non-obstructing
Currently IMA determines that the overlay is obstructing, even
if it's empty. Register it as friendly, which means we're
assuming that anything the apps puts in it is necessary for
playback.

PiperOrigin-RevId: 234963065
2019-02-21 11:56:10 +00:00
olly
1450b3713f Suppress warnings emitted by Checker Framework version 2.6.0
PiperOrigin-RevId: 234917536
2019-02-21 11:56:02 +00:00
olly
bfc60e1694 Set vertical orientation by default in TrackSelectionView
Horizontal orientation doesn't make sense. I thought about
overriding the setter to throw something, but it's probably
not worth the extra lines.

PiperOrigin-RevId: 234632530
2019-02-20 13:55:33 +00:00
olly
0622afe170 Migrate to androidx
Issue: #5489
PiperOrigin-RevId: 234507428

Add missing annotation dependency

Issue: #5489
PiperOrigin-RevId: 234566177
2019-02-19 13:22:54 +00:00
tonihei
c6195dbbaf Handle recreation of TrackSelectionView instances.
TrackSelectionView requires an initialization with a call to init(...).
That's why we shouldn't let the view retain its view hierarchy automatically
as the views won't be backed by data if restored. Instead add a listener
which lets the containing activity/fragment save and restore the state if
needed.

PiperOrigin-RevId: 234152491
2019-02-18 17:40:48 +00:00
tonihei
edabbd52d0 Update Robolectric and Truth.
PiperOrigin-RevId: 233612344
2019-02-18 15:59:32 +00:00
tonihei
399a963e02 Revert removal of single track option in TrackSelectionView.
PiperOrigin-RevId: 233584155
2019-02-18 15:59:12 +00:00
olly
a21572f0dd Fix minor issues and lint errors
PiperOrigin-RevId: 233428556
2019-02-18 15:58:37 +00:00
olly
6d461f5b25 Fix PlayerNotificationManager lint error
builder.mActions is marked as @RestrictTo(LIBRARY_GROUP). We'll
just have to put up with notification flicker on KitKat if the
actions change.

PiperOrigin-RevId: 233420076
2019-02-18 15:58:27 +00:00
andrewlewis
56944caa21 Allow registration of control overlays for ad viewability
Switch from passing an ad UI ViewGroup to passing an object that can also
provide information about controls overlays.

Also switch to using a dedicated overlay for ads instead of the overlay frame
layout, which apps have easy access to.

PiperOrigin-RevId: 233393500
2019-02-18 15:58:06 +00:00
olly
8401097ead Upgrade gradle plugin and friends
PiperOrigin-RevId: 233390513
2019-02-18 15:57:55 +00:00
tonihei
abb53d7ce7 Support multiple overrides in TrackSelectionView and factor out Builder.
Supporting multiple overrides allows to select tracks from multiple groups, if
enabled. As more options are added, the creation of the dialog is moved to a
separate builder class.

PiperOrigin-RevId: 233366282
2019-02-18 15:57:44 +00:00
andrewlewis
ef139b2e31 Add an overlay FrameLayout for ad UI
This will be used instead of the current overlay FrameLayout (which apps can
interact with directly).

PiperOrigin-RevId: 233077175
2019-02-18 15:57:29 +00:00
Arnold Szabo
eaf0d40886 Extract time bar delay calculations to a static method 2019-02-16 12:17:09 +02:00
Arnold Szabo
ecfce46296 Changes according to the code review 2019-02-13 19:31:11 +02:00
Arnold Szabo
62e6455dce Taking consideration the current position before calculating the delay before the next update 2019-02-12 23:02:34 +02:00
Arnold Szabo
c905891d10 Taking into consideration the media's duration when updating the time bar 2019-02-10 21:43:34 +02:00
olly
ebfbb4f915 Hide progress bar for end state download notifications
Now we're reusing the builder, it's necessary to set maxProgress
back to 0 to avoid the progress bar appearing for end state
notifications.

PiperOrigin-RevId: 232520007
2019-02-06 15:46:18 +00:00
olly
e3981ec484 Fix notifications to avoid flicker on KitKat
On KitKat you need to reuse the same notification builder when
generating a notification that's intended to replace a previous
one. See:

https://stackoverflow.com/questions/6406730/updating-an-ongoing-notification-quietly

PiperOrigin-RevId: 232503682
2019-02-06 15:45:24 +00:00
andrewlewis
a738191627 Remove remainder of skip button focus hack
PiperOrigin-RevId: 231772920
2019-01-31 14:06:38 +00:00
olly
355b3d6334 Increase minSdkVersion to 16
The combination of pre-16 API levels accounting for ~0.5% of the device
population, and that the most important components in ExoPlayer (e.g.
the MediaCodec renderers) have always required API level 16, mean it's
very unlikely this will negatively impact on anyone.

PiperOrigin-RevId: 230701808
2019-01-29 16:41:45 +00:00
olly
4182f37b6e Make notification dismissible iff player is active
Seems like more useful default behaviour

PiperOrigin-RevId: 230356813
2019-01-29 16:40:20 +00:00
olly
29711b922d Cancel notification on dismiss
This doesn't happen automatically after all on older devices

PiperOrigin-RevId: 230251258
2019-01-29 16:39:56 +00:00
tonihei
ac86d3b5f6 Add missing @Nullable to SimpleExoPlayer fields and methods.
Issue:#5402
PiperOrigin-RevId: 229758525
2019-01-17 17:26:35 +00:00
bachinger
76baa5724c solve nullness check warnings with asserts
PiperOrigin-RevId: 229755532
2019-01-17 17:26:14 +00:00
bachinger
16a185de1d make PlayerNotificationListener better suited for foreground services
Issue: #5301
Issue: #4988
Issue: #4813
Issue: #5344
Issue: #5117
PiperOrigin-RevId: 229603354
2019-01-17 14:37:23 +00:00
bachinger
8adc16a623 allow developers to set the subText of the notifcation
Issue: #5344
PiperOrigin-RevId: 229527963
2019-01-17 14:37:00 +00:00
eguven
7ae768376c Prepare DownloadState for upcoming changes
Made DownloadState top level class.
Replaced action field DownloadAction fields.
Added removing, removed and restarting states.
Renamed started state to downloading.

PiperOrigin-RevId: 227664735
2019-01-08 07:33:23 +00:00
tonihei
9728ac54ba Improve doc for setKeepContentOnPlayerReset.
This also applies when seeking or transitioning to unprepared media, which
isn't clear from the current documentation.

Issue:#5267
PiperOrigin-RevId: 226486685
2019-01-08 07:31:49 +00:00
olly
c2c5e560e9 Add missing ..
PiperOrigin-RevId: 225379305
2018-12-14 15:42:07 +00:00
olly
9c4258fef9 Clarify that the shutter can prevent flicker
PiperOrigin-RevId: 225374071
2018-12-14 15:41:47 +00:00
Oliver Woodman
3bfe103b82 Merge pull request #5245 from natario1:videosize-override
PiperOrigin-RevId: 225187852
2018-12-14 15:40:57 +00:00
eguven
4bf42bd2ad Rename TaskState to DownloadState
PiperOrigin-RevId: 225145311
2018-12-14 15:40:16 +00:00
tonihei
defbd04675 Update StartDownloadDialogHelper to use TrackSelectionView.
This is now possible as the download helper uses a track selector.

PiperOrigin-RevId: 225014517
2018-12-14 15:39:43 +00:00
Mattia Iavarone
c819856530 Add protected method to override the AspectRatioFrameLayout aspect ratio 2018-12-12 11:48:42 +01:00
olly
05a79a417a Fall back to TYPE_ROTATION_VECTOR if TYPE_GAME_ROTATION_VECTOR unavailable
Issue: #5119
PiperOrigin-RevId: 222978448
2018-11-27 15:46:10 +00:00
olly
f4d9deddaf Remove spurious VisibleForTesting annotation
It needs to have package visiblity, otherwise nothing can use it.

PiperOrigin-RevId: 222821546
2018-11-26 16:40:40 +00:00
olly
ea8696d820 Ensure changes are reflected into attrs
PiperOrigin-RevId: 222628386
2018-11-23 17:40:42 +00:00
tonihei
1a9705e247 Fix show_buffering attribute values.
The corresponding IntDef has changed without updating the attribute values.

Issue:#5139
PiperOrigin-RevId: 222598044
2018-11-23 12:31:24 +00:00
olly
9ca019b8f8 PlaybackNotificationManager should show play button in ENDED state
- This brings it in line with PlayerControlView. The play action is displayed
instead, and pressing it seeks to the default position of the current window.
- Do the same for MediaSessionConnector
- Add support for PlaybackPreparer consistent with PlayerControlView

Issue: #5072

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=221076008
2018-11-14 18:01:34 +00:00
olly
eb6859e436 Align navigation implementation across UI components
This change also paves the way for splitting out functionality into a utility class.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=221070262
2018-11-14 17:56:39 +00:00
olly
7508219416 Simplify PlayerControlView fast forward and rewind implementation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=221065798
2018-11-14 17:54:58 +00:00
bachinger
91d9fbd95d pass the notification listener to the constructor
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220616166
2018-11-14 17:41:45 +00:00
olly
15dda17905 Make TimelineQueueNavigator shuffle aware
Issue: #5065

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220468285
2018-11-07 17:57:42 +00:00
olly
0dfd478a20 Add missing update on repeat toggle mode change
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220461315
2018-11-07 17:57:42 +00:00
eguven
7a114cb374 Uncomment VisibleForTesting annotations
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220432564
2018-11-07 17:57:42 +00:00
eguven
d7e23f826b Fix package visibility comments
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220323772
2018-11-07 17:57:42 +00:00
andrewlewis
abb7d8a2d5 Include UI module tests in open source push
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220277660
2018-11-07 17:57:42 +00:00
eguven
37f4540156 Move BaseGvrPlayerActivity to com.google.android.exoplayer2.ext.gvr
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219829614
2018-11-06 11:07:06 +00:00
olly
e1c6229cc8 Bump version to 2.9.1
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219609471
2018-11-01 11:22:39 +00:00
andrewlewis
1094da2b61 Fix player state transitions for postroll ads
Before this change, the player state would be STATE_ENDED then
STATE_BUFFERING (when the postroll ad was marked as played) then
STATE_ENDED again.

Queueing a final content media period with start point equal to
the content duration after a postroll ensures that the player
state doesn't change to STATE_ENDED transiently.

Switch from using C.TIME_END_OF_SOURCE to C.TIME_UNSET for media
periods that should not have an end point and are not followed
by an ad.

Content media periods before postrolls have end position
C.TIME_END_OF_SOURCE. If the postroll ad loads, its content
position is set to the content duration, which should be known
at the point of loading the postroll, then a final 'empty'
content media period with start position equal to its duration
is queued. If the postroll fails to load, this empty content
media period is queued up directly after the preceding content
media period.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219443683
2018-10-31 13:54:15 +00:00
eguven
5de17b9adc Add support for playing spherical videos on Daydream
RELNOTES=true

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219119888
2018-10-31 13:42:19 +00:00
olly
194d0f3331 Add a bit of structure DefaultTrackSelector, for sanity
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219109829
2018-10-31 13:38:51 +00:00
aquilescanta
9ea678c5e6 Add ExoCastMessage
ExoCastMessage contains all player management messages that the sender app can
send to the receiver app. ExoCastMessages can be serialized as JSON strings.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218846977
2018-10-31 13:35:22 +00:00
olly
ede62e97b2 Fix track selection when forceLowestBitrate is enabled:
- Only use bitrate when comparing two tracks if their bitrates are
  actually different.
- For audio, prefer to use bitrate over selection flags.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218660886
2018-10-31 13:33:32 +00:00
eguven
ea49d39a4d Add VR string and icon
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218137830
2018-10-24 18:29:10 +01:00
vsethia
048c8bd68f Snapshots are going to become the default soon and these tests are failing when
reloading frmo snapshots. b/117347850. This is a no-op change as the current
default == _fullboot. When we globally flip and make snapshots the default,
these tests would fail and we are moving them over so that when we flip your
tests still pass.

https://groups.google.com[]forum/#!topic/mobile-ninjas/Y69PTAT5GyY

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=216634430
2018-10-15 09:28:21 +01:00
tonihei
0a7745bc03 Fix some random Android Studio warnings.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=215904019
2018-10-15 09:26:36 +01:00
eguven
e91065c4b0 Remove ProjectionRenderer.EyeType
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=215562599
2018-10-03 22:13:34 +01:00
tonihei
f0e0a7cf57 Fix left position for subtitles.
When SubtitlePainter positions the cues centred in the given box, it must add
the left offset of the box to get the correct position.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=215535289
2018-10-03 22:08:57 +01:00
tonihei
43c01562d1 Fix positioning of subtitles.
SubtitleView forwards the cue box position to SubtitlePainter. This should be
the position relative to the canvas of the SubtitleView. Currently, however,
we forward the position relative to the parent of SubtitleView. That causes
problems if SubtitleView has a non-zero offset position to its parent.

Issue:#4788

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=215535281
2018-10-03 22:07:25 +01:00
tonihei
5c8dabade6 Add @Documented to @IntDef and @StringDef annotations.
This makes the annotations appear in the generated JavaDoc.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=214952419
2018-10-01 19:22:34 +01:00
eguven
c9ebaacae0 Use GlUtil class to share GL methods
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=214582295
2018-09-26 13:05:17 +01:00
eguven
e86d5efb21 Recenter SphericalSurfaceView view on startup
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=214261973
2018-09-24 15:36:10 +01:00
tonihei
e25b7d2148 Add wrapper for Log messages to allow settig the log level.
Currently there is no way to disable (or reduce) the logcat output generated
by ExoPlayer.

Issue:#4665

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213421072
2018-09-20 12:12:21 +01:00
tonihei
585806de24 Clarify doc of components which only allow a main thread player.
ExoPlayer can be run on a background thread, but some components (UI and IMA)
only support players on the main thread. This adds some documentation and
assertions for that.

To simplify assertions, this also moves the getApplicationLooper method from
ExoPlayer to Player.

Issue:#4439

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213280359
2018-09-17 17:56:36 +01:00
bachinger
0e12eb4d92 Dispatch notification actions to the originating PlayerNotificationManager only.
Issue #4643

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211613803
2018-09-06 12:00:55 +01:00
olly
8d0c4b1b87 Fix some Javadoc
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211352749
2018-09-03 15:16:47 +01:00
eguven
5335b258de Make SceneRenderer implement VideoFrameMetadataListener and CameraMotionListener
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211084127
2018-09-03 14:14:23 +01:00
eguven
a429f4819e Use camera motion metadata to stabilize 360 videos
RELNOTES=true

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210537375
2018-08-28 16:43:53 +01:00
tonihei
d0161ad18b Fix all error-prone, style, optional suggestion, etc. issues.
This fixes or suppresses all reported issues by the code review linter tools.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210107759
2018-08-28 16:37:14 +01:00
olly
924a76d532 Clean up use of deprecated APIs
- Add @Deprecated on overrides of deprecated method.
- Suppress deprecation warnings where appropriate.
- Use non-deprecated alternatives where appropriate.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210092434
2018-08-24 16:12:44 +01:00
eguven
3f70454cc2 Fix controller ui toggling when using SphericalSurfaceView
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209909845
2018-08-24 15:56:28 +01:00
tonihei
4bf5e4991c Improve IntDef javadoc.
The doc can be improved by enumerating and linking all possible values from
the interface doc.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209772309
2018-08-24 15:53:30 +01:00
olly
9f0303b079 Fix a bunch of misc analysis warnings
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209758330
2018-08-24 15:48:58 +01:00
olly
9ccbb5bd6d Add some missing Nullable annotations
Also remove NonNull, since we assume NonNull by default. Except
where explicitly overriding a method with NonNull annotated args,
in which case we're still expected to use it.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209758204
2018-08-24 15:47:31 +01:00
eguven
02a8964fe2 Support VR180 videos
If available parse and use spherical metadata:
https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md

RELNOTES=true

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209754080
2018-08-24 15:44:24 +01:00
olly
bd8a956d53 Use lamdas everywhere
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209162373
2018-08-24 15:19:30 +01:00
Oliver Woodman
32bd69d4b2 Cleanup recent merged pull requests 2018-08-16 17:02:08 +01:00
Oliver Woodman
94fa4d9989 Merge branch 'fix/vectorArtWork' of https://github.com/mitrejcevski/ExoPlayer into dev-v2 2018-08-16 16:58:31 +01:00
ojw28
4d931b9cad
Merge pull request #4585 from szaboa/feature/4304_buffering_view_option
#4304 - Add option to show buffering view when setPlayWhenReady is false
2018-08-16 16:45:25 +01:00
olly
bac597cb07 Update dependencies + misc fixes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208195761
2018-08-13 14:02:51 +01:00
olly
4ebc455c09 Fix ldpi fullscreen icons to be the correct size
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208017966
2018-08-13 13:48:22 +01:00
eguven
bf6b647088 Rename spherical/Utils class to GlUtil
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207525621
2018-08-06 13:22:51 +01:00
andrewlewis
b3b8356766 Fix DefaultTimeBar accessibility class name
See https://support.google.com/accessibility/android/answer/7661305.

Also fix/suppress nullability warnings.

Issue: #4611

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207245115
2018-08-06 11:28:03 +01:00
eguven
45c1e9eef3 Add missing Nullable annotation Player.EventListener.onTimelineChanged
Issue: #4593

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206911927
2018-08-01 13:49:21 +01:00
eguven
02e9972630 Add 360 video samples to the demo app
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206747144
2018-08-01 13:49:20 +01:00
eguven
30fecb71d2 Fix TouchTrackerTest
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206304655
2018-08-01 13:49:20 +01:00
Arnold Szabo
dbd25d5854 #4304 - Adjustments after code review 2018-07-27 13:41:02 +03:00
Jovche Mitrejchevski
5635ca2792 Reset aspect ratio 2018-07-27 12:03:39 +02:00
Arnold Szabo
1f12f22bb5 #4304 - Add option to show buffering view when setPlayWhenReady is false 2018-07-27 00:49:11 +03:00
Jovche Mitrejchevski
72a2b82370 Suggestions from Code Review 2018-07-26 12:26:29 +02:00
Jovche Mitrejchevski
46232977f6 Convert defaultArtwork from Bitmap to Drawable
Using bitmaps is still supported, but also this will allow using other types of drawables to be set as artwork.
2018-07-26 09:50:55 +02:00
bachinger
9d0ec37ead Show notification whilst ads are playing but hide playback actions.
Issue:#4535

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205722036
2018-07-24 14:55:24 +01:00
eguven
9c337c8806 Add monoscopic 360 surface type to PlayerView
Using this surface it's possible to play 360 videos in a non-VR Activity that is
affected by phone and touch input.

RELNOTES=true

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205720776
2018-07-24 14:54:05 +01:00
Jovche Mitrejchevski
1f1762538f Support vector drawables to be used as default artwork 2018-07-24 08:16:53 +02:00
tonihei
1d636520ca Auto-register AnalyticsCollector as bandwidth meter listener.
This allows to automatically forward bandwidth estimate events to
AnalyticsListeners.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205642752
2018-07-23 13:32:44 +01:00
Oliver Woodman
3c4b0aa11b Merge branch 'dev-v2' of https://github.com/peddisri/ExoPlayer into dev-v2 2018-07-23 12:32:18 +01:00
olly
d2eb3fbefa Cleanup: Remove unnecessary generic types
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205409290
2018-07-23 10:25:23 +01:00
hoangtc
19cc2c822a Fix a bug with TTML using font size as % of cellResolution.
After [] we support default font size for TTML, relative to the cellResolution of the document. However, this introduced a bug that makes TTML font-size in such case always follow the cellResolution font size, even when SubtitleView.setApplyEmbeddedStyles(false) and SubtitleView.setApplyEmbeddedFontSizes(false) were used.

This CL updates the fix so that the default font-size using cellResolution works in the same way as other embedded styles, and can be turned off using setters from SubtitleView.

GitHub: #4491

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204467033
2018-07-17 20:18:52 +01:00
olly
18ab4b9112 Fix / improve format merging
1. Prefer label and language values in the manifest to those in
   the media. This is particularly helpful if the sample format
   contains "und" as the language.
2. Copy label when deriving formats in HlsSampleStreamWrapper
3. When there's only one variant in HlsSampleStreamWrapper, use
   the regular copyWithManifestFormatInfo. This allows more
   information to be retained from the sample format.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204340008
2018-07-17 20:13:23 +01:00
Oliver Woodman
05a31dfd24 Format cleanup 2018-07-12 16:08:11 +01:00
ojw28
41636ada88
Merge pull request #4391 from kaltura/add-label
Add label attribute support for DASH audio/text
2018-07-12 16:05:19 +01:00
Srikanth Peddibhotla
2a388ff852 Support CEA 608/708 captions in MPEG2 TS stream
[Problem] Sarnoff spec complaince tests streams are MPEG2 TS.
Currently, parsing CC data from MPEG2 TS is not supported

[Solution] Parsed CC data from MPEG2 stream because all Sarnoff streams are MPEG2
2018-07-11 18:41:00 +05:30
eguven
18d208ab93 Fix DownloadService doesn't stop when the app is killed
Also fixed showing "remove notification" when download is completed.

Issue:#4469
Issue:#4488

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203927268
2018-07-10 14:03:05 +01:00
bachinger
e50167ef54 prevent controls from hiding whilst the user is interacting with it
Issue:#2395

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202926448
2018-07-03 11:53:43 +01:00
Oliver Woodman
94784249eb Cleanup 2018-06-28 17:51:05 +01:00
ojw28
b06a38b614
Merge pull request #4411 from Comcast/bugfix/caption_background_fix
Fix system caption style background being used when cue style is provided.
2018-06-28 16:22:58 +01:00
tonihei
156e2317cc Deprecate Player.DefaultEventListener in favor of default no-ops in interface.
The DefaultEventListener was added for selective overrides. Now that Java 8
support is enabled, these selective listener overrides can be implemented
more easily and more flexible using default methods.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201695490
2018-06-22 17:49:25 +01:00
bachinger
10690630bf allow an app to force an update of the player notification
Issue:#4379

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201497585
2018-06-22 17:36:33 +01:00
Brandon Davis
4b6edc5785 Fix CaptioningManager background being shown behind cue background.
remove extra space
2018-06-22 08:12:41 -06:00
Itay Kinnrot
cd9041c089 Parse the label of audio and text from stream and add it to Format type + add it to default ui + update from dev-v2 2018-06-19 11:32:04 +03:00
olly
0e4cb52979 Don't show player controls unless key press is handled
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200991862
2018-06-18 15:40:40 +01:00
olly
9eedb8e855 Add isControllerVisible
Issue: #4385

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200986828
2018-06-18 15:39:20 +01:00
ojw28
eef986bf0c
Merge pull request #4384 from Khang-NT/fix_document
Correct document of PlayerView & PlayerControlView
2018-06-18 05:23:10 -07:00
tonihei
c1181000f9 Correctly report buffered position for multi-period window.
Currently only the buffered position in the current media period can be queried.

To achieve this, we save the buffered positions of all MediaPeriods to the
PlaybackInfo together with a list of MediaPeriodIds. ExoPlayerImpl can then
determine the correct buffered position for multi-period windows and windows
with midroll ads.

In addition, this change adds two new convenience methods to the Player interface
to query the total buffered duration across all windows and to get the buffered
duration of the content while playing an ad.

Issue:#4023

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200041791
2018-06-18 11:08:22 +01:00