Commit graph

4155 commits

Author SHA1 Message Date
olly
918a43e48d Work around adaptation issue for Tab 4
The decoder doesn't claim to be adaptive, but if we're staying
in the same resolution we'll try and re-use the decoder anyway.
The H264 decoder can't handle this case on the Tab 4 can't deal
with this case.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213478378
2018-09-20 12:24:10 +01:00
andrewlewis
7fe5230a7e Use gapless edit duration as sample table duration
This matches the non-gapless case.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213462936
2018-09-20 12:22:43 +01:00
andrewlewis
e4f41880bd Add E-AC3 Ac3Extractor sample and test
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213451163
2018-09-20 12:21:13 +01:00
aquilescanta
bca2f5c3a0 Fix Ac3 extractor sniffing for E-AC-3 frames
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213443047
2018-09-20 12:19:43 +01:00
tonihei
a92344ac9e Log warning with stack trace if player is accessed from the wrong thread.
This doesn't break apps which violate this policy. But it creates a clear
warning which is also likely to be reported in analytics tools.

Issue:#4463

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213442510
2018-09-20 12:18:15 +01:00
aquilescanta
db33b3bbd1 Allow HlsSampleStreamWrapper to cancel partial media chunk loads
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213439145
2018-09-20 12:16:47 +01:00
tonihei
decbb33490 Add super-simple SimpleExoPlayer factory method.
The DefaultTrackSelector can now be constructed without leaving out a
vital part of the initialization. This allows this new simple factory method.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213438163
2018-09-20 12:15:19 +01:00
aquilescanta
a89645d092 For HLS segment sniffing, fall back on extractor creation by file extension
This reduces the possiblity of regressions.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213436912
2018-09-20 12:13:50 +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
aquilescanta
c9e4f6b429 Make HlsMediaSource.Factory take a factory of trackers instead of an instance
This allows creating multiple HLS media sources from a single Factory, as
required by the interface.

Issue:#4814

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213297850
2018-09-20 12:10:53 +01:00
olly
b09e36dcb7 SmoothStreaming: Test for fourCC equal to DFXP
Issue: #4824

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213285790
2018-09-17 17:58:03 +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
tonihei
c18ee3f96d Add some missing @Nullable to public API to improve Kotlin compatiblity.
Kotlin will throw NPE whenever a method returns null or an interface is
called with a null parameter and the respective values are not marked as
@Nullable.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213262886
2018-09-17 17:55:03 +01:00
aquilescanta
76255dfae7 Make ExtractorsFactory javadoc consistent
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213248388
2018-09-17 17:53:30 +01:00
tonihei
d1df41a39e Fix window index comparison.
To check the validity of a window index it needs to be compared with a greater
or equal sign to the window count.

Issue:#4822

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=213234403
2018-09-17 17:50:20 +01:00
aquilescanta
caa46d49e5 Explicitly document empty range removal in Util.removeRange.
Also prevent an unnecessary allocation when the removed range is empty.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212993427
2018-09-17 17:48:45 +01:00
tonihei
1284f9ea4d Add Nullable to message payload.
Not having this annotation may cause Kotlin implementations to fail.

Issue:#4802

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212980643
2018-09-17 17:47:11 +01:00
olly
6f6f381beb Fix audio and text track selection in the multi-renderer case
If we can select a track that has a strictly higher score than a
selection already made for a renderer of the same type, we should
prefer it.

Issue: #4711

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212835895
2018-09-13 18:44:53 +01:00
aquilescanta
3e4115ff3c No-op ConcatenatingMediaSource simplification
- Make addMediaSource a specific case of addMediaSources.
- Make clear a specific case of removeMediaSourceRange.
- Make removeMediaSource a specific case of removeMediaSourceRange.
- Remove the unnecessary message handling and constants.
- Move a method so that depending appears before depended.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212809667
2018-09-13 18:43:26 +01:00
olly
b17d49ed27 Add nullness annotations to a few more files
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212644046
2018-09-13 18:40:17 +01:00
olly
b4dfed874d Enable GZIP for SingleSampleMediaSource
Issue: #4771

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212623142
2018-09-12 15:32:14 +01:00
olly
a5a7e988e3 Clip DASH periods to their durations
Issue: #4185

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212619419
2018-09-12 15:30:47 +01:00
andrewlewis
35c230f3c6 Allow partial format for adaptation check
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212443793
2018-09-12 15:25:56 +01:00
tonihei
b1d48179e8 Add support to change shuffle order after playlist creation.
This allows to update the shuffle order after the ConcatenatingMediaSource
has been created. ShuffleOrder objects should be immutable to ensure thread
safety and thus there is no way to do this currently.

Issue:#4791

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212443146
2018-09-12 15:24:23 +01:00
olly
b31438b670 Clean up downstream format notification for ChunkSampleStream
- Fixes the referenced issue.
- Provides more consistent behavior for the edge case of empty
  chunks (i.e. chunks containing now samples). Format changes
  will now always be reported for such chunks, unless the empty
  chunk is discarded from upstream before there's a chance to
  do so.

Issue: #4533

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212443043
2018-09-12 15:22:47 +01:00
tonihei
21c5b0bf67 Add missing AudioSink discontinuity for stream changes.
When the stream is changed in the audio renderer, the timestamps of the
samples can no longer be expected to match the calculations in the AudioSink.

This change tracks the samples at which the stream is changed and notifies the
AudioSink of the discontinuity.

Issue:#4559
Issue:#3829

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212435859
2018-09-12 15:20:40 +01:00
olly
a083c29f7e Don't discard when a reset is pending
When a reset is pending the sample queues normally contain pre-seek
samples (which will be emptied when a pending load is canceled). The
position passed to discard will be a post-seek position. I don't
think anything bad happened in any of the cases being changed, but
discarding is unnecessary in such cases, and reasoning about such
cases is difficult.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212435556
2018-09-12 15:18:56 +01:00
olly
46af49e282 Clean up easy cases of downstream format notification
- This makes it so that onDownstreamFormatChanged will occur before the corresponding
  renderer event. This was not previously the case, since the renderer would typically
  read the format (and report its event), then a sample (causing the
  onDownstreamFormatChanged event).
- The remaining ones to update are ChunkSampleStream (DASH + HLS), which will be done
  in a way that fixes #4533, and HLS.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212434874
2018-09-12 15:17:19 +01:00
olly
6c3c71b554 Fix SampleQueue splicing when sampleOffsetUs != 0
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212432661
2018-09-12 15:15:41 +01:00
olly
ba8c22aba5 Make seeking when there's a pending reset more obviously correct
If there's already a pending reset, we need only update the pending
reset position. We can currently end up calling cancelLoading more
than once on the loader for the same task, which is hard to reason
about (although I don't think anything actually broke in practice).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212432266
2018-09-12 15:14:02 +01:00
tonihei
72efc80037 Correct timescale of edit list duration parsing for stbl atoms.
We currently apply the track.timescale whereas we should be applying the
track.movieTimescale. The parsing for the trak atom does this correctly
and the duration from the trak atom currently always takes precedence over the
durations from the stbl atoms as it's always larger.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212421687
2018-09-12 15:12:20 +01:00
andrewlewis
be11369966 Remove UnhandledEditListException
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212303130
2018-09-12 15:10:44 +01:00
tonihei
bf0a7937e2 Fix util nullness warnings.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212276150
2018-09-12 15:09:09 +01:00
andrewlewis
09aaec6b01 Add proguard configuration for download actions
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212266041
2018-09-12 15:07:31 +01:00
tonihei
95aa5db148 Reenable edit lists without keyframe again but remove samples before keyframe.
Ignoring all edit lists if they don't start with a keyframe causes A/V sync
issues when valid edit lists are applied at the beginning.

This change allows such edit lists again but removes all samples before the
first keyframe (these samples would be ignored by the renderer anyway if at
the beginning OR cause visible distortions when appended to an unrelated
keyframe).

Issue:#4774
Issue:#4348

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212244407
2018-09-12 15:05:53 +01:00
tonihei
1a80097308 Fix NPE in FrameworkMediaDrm.
Currently causing GTS tests to fail.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=212244198
2018-09-12 15:04:24 +01:00
aquilescanta
b14e0935b1 Add container format sniffing in HLS
Issue:#2025

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211977802
2018-09-12 15:02:57 +01:00
olly
cb5c78917c Simplify notification of downstream format change for embedded track
- There's no particular need to read or skip a sample before notifying
- Add missing isPendingReset check

Issue: #4533

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211959762
2018-09-12 15:00:01 +01:00
olly
38386c480a Be explicit about character set.
The default character set is always UTF-8 anyway on Android, but
we don't want our code to behave any differently where it's not
(e.g. robolectric test runs could potentially run in an environment
where UTF-8 isn't the default?).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211953885
2018-09-12 14:58:33 +01:00
tonihei
77a529f0ed Add static Util.EMPTY_BYTE_ARRAY
This prevents repeated instantiation of empty arrays.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211941723
2018-09-12 14:57:01 +01:00
josephmarques
aa7134d538 Adds support for the messageData attribute of the Event element in DASH MPDs for ExoPlayer.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211854408
2018-09-12 14:55:34 +01:00
aquilescanta
f47f1b9f4b Remove BOM check in Webvtt header checks
Reverts the BOM check changes in []

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211826731
2018-09-12 14:54:06 +01:00
tonihei
67a2bb3d28 Fix various period preparation and source info refresh error throwing issues
1. Currently, we may throw source info refresh errors while the previous media
   period is still playing.
2. We don't throw if the next period in a playlist fails to prepare and the
   previous renderers are all disabled.
3. We throw source info refresh errors for playlists before playback reaches
   the culprit source.

This change:
1. Defers the exceptions until all existing media periods have been played.
2. Checks for period preparation exception if the next period is not
   getting prepared and the renderer time reached the next period.
3. Does no longer throw from ConcatenatingMediaSource.maybeThrowSourceInfo
   RefreshError. The deferred media periods take care of that for each source
   individually.

Issue:#4661

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211819436
2018-09-12 14:52:33 +01:00
Nicklas Lundin
14f7b6111b Added setMaxFrameRate to ParametersBuilder 2018-09-06 16:17:27 +02:00
olly
502fae7cd4 Bump version to 2.9.0
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211792952
2018-09-06 13:47:59 +01:00
olly
c3c309b8a8 Blacklist OMX.SEC.mp3.dec on SM-T530
Issue: #4519

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211646358
2018-09-06 12:04:48 +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
Nicklas Lundin
4c0041f936 added maxFrameRate to the filtering done when selecting a fixed video track 2018-09-06 11:13:03 +02:00
Nicklas Lundin
4f834e7e1a added maxFrameRate to parameters and use it in the adaptive track selection filtering 2018-09-06 11:11:59 +02:00
olly
c57fe1897c Add ExoPlayer.retry convenience method
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211463309
2018-09-05 12:33:28 +01:00
aquilescanta
7959a691ad Add sniffing to WebvttExtractor
Preparation for sniffing in HLS

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211455454
2018-09-05 12:31:06 +01:00
olly
80e64e58ec WAV: Don't output data beyond the data limit
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211446207
2018-09-05 12:28:13 +01:00
Oliver Woodman
29ab6f7466 Automatic styling fix 2018-09-03 15:19:51 +01:00
ojw28
fc47f2222c
Merge pull request #4747 from kolpacheque/issue-4360-pcm-mulaw-support
Add parsing a-law and mu-law atom types
2018-09-03 15:17:18 +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
tonihei
3a802eb06c Add onDrmSessionAcquired and onDrmSessionReleased callbacks.
To report DRM session metrics in the future as part of the listener, we need
a callback at the end of the drm session to get the final metric state.
For completion, the session acquired callback is also added.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211328412
2018-09-03 14:15:51 +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
aquilescanta
514edb699f Add a type check for OGG files with a single payload page
Also make some javadocs more consistent with the rest of the library.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211071559
2018-09-03 14:12:47 +01:00
borrelli
595b6b8fde Add unit tests for AudioFocusManager.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210714110
2018-09-03 14:11:10 +01:00
tonihei
d308fff88d Restructure media period queue tracker in AnalyticsCollector.
The current structure tries to associate events to media periods and windows
based on the reported values and the current timeline. However the reported
EventTime may not always be consistent in case the timeline doesn't contain
windows or media periods yet or not anymore.

The recent changes to MediaPeriodId allow to use it as a unique identifer for
media periods independent of the timeline. This enables more accurate tracking
of the media period queue and prevents reporting events with inconsistent
data.

Issue:#4492
Issue:#4634

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210713120
2018-09-03 14:09:35 +01:00
eguven
ca0e276798 Reset camera motion rotation when camera motion track is disabled
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210696525
2018-09-03 14:07:58 +01:00
olly
13889c9116 Pass multiple PSSH boxes to Widevine CDM
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210551848
2018-09-03 14:06:22 +01:00
tonihei
6b9e1824ad Extend updateSelectedTrack method with additional information.
This provides the list of currently buffered media chunks and iterators over
the potential next chunks to the track selection. Having these two parameters
enables more advanced decision logic based on this data.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210551812
2018-09-03 14:04:45 +01:00
Art Vynogradov
89080874af Add parsing a-law and mu-law atom types 2018-08-29 16:23:34 +02: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
olly
ce1d8d6ce2 Remove obsolete SDK_INT modification
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210531569
2018-08-28 16:42:28 +01:00
andrewlewis
efe8f09f45 Propagate EoS in renderer when using video tunneling
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210529471
2018-08-28 16:40:55 +01:00
eguven
23817eecfd Release zip inflater when finished
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210513776
2018-08-28 16:38:42 +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
ff1812d3fe Fix ClearKey prior to API 27
There are C.CLEARKEY_UUID.equals(uuid) checks in FrameworkMediaDrm,
so uuid needs to be CLEARKEY_UUID, not COMMON_PSSH_UUID

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210094372
2018-08-24 16:17:45 +01:00
olly
fdda2bb841 Make setConstantBitrateSeekingEnabled consistent with other method
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210093143
2018-08-24 16:16:24 +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
olly
0da7f6ca08 Use EventLogger in ExoHostedTest
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210082909
2018-08-24 16:11:07 +01:00
tonihei
335fa13063 Use set-like behaviour for BaseDataSource listeners.
This prevents problems caused by unintended double-registration of the same
transfer listener.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210078454
2018-08-24 16:07:11 +01:00
olly
38f2f352f9 Move playback tests off deprecated APIs
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210077548
2018-08-24 16:05:40 +01:00
tonihei
a71e28440d Add parameter to force disable adaptive track selection.
This option is currently not available as a non-null adaptive track selection
has to be provided. Adds a parameter "forceHighestSupportedBitrate" which
corresponds to the default fixed track selection for audio and video.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210073675
2018-08-24 16:04:06 +01:00
andrewlewis
9c36773602 Fix playback of postrolls with multiple ads
At the point of starting to play a postroll, source info refreshes for future
postroll ads in the same ad group would cause a seek that incorrectly identified
the media period to play as the content media period. Fix the logic in
getAdGroupIndexForPositionUs to address this.

Also handle empty postroll ad breaks by resetting the expected ad group index
when we send content complete.

Issue: #4710
Issue: #4681

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210071054
2018-08-24 16:02:38 +01:00
aquilescanta
24d04a26e4 Add support for variable substition in HLS
Issue:#4422

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209958623
2018-08-24 16:01:08 +01:00
olly
4d8a5c44b3 Fix some more lint issues
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209947034
2018-08-24 15:59:32 +01:00
tonihei
2a9d5c21e2 Clarify doc for Player.getDuration and add Player.getContentDuration.
Similar to getBufferedPosition and getCurrentPosition, getDuration should
mention that it also returns the duration of the current ad.

And, also similar to getContentBufferedDuration and getContentPosition, a
new method getContentDuration simplifies querying the content duration while
playing an ad.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209914696
2018-08-24 15:58:01 +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
74e2384fb6 Add response headers to LoadEventInfo.
The response headers of the last load are available from the loading source
when creating media source events and can be easily forwarded.

Issue:#4361
Issue:#4615

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209900693
2018-08-24 15:55:01 +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
eguven
14c7c2995c Add android.permission.FOREGROUND_SERVICE
Apps targeting P or later now must request this permission in order to
use foreground services.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209762160
2018-08-24 15:51:58 +01:00
eguven
509be44fe8 Ignore cache span rename error
This happens rarely and SimpleCache can continue fine.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209759996
2018-08-24 15:50:28 +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
tonihei
bf43cca302 Fix flaky ExoPlayerTest tests.
Some tests were flaky because of the PlayUntilPosition action which called
player.setPlayWhenReady from the wrong thread. Also fixed some other misc
flakiness.

ExoPlayerTest seems to be non-flaky now (tested with 10000 runs).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209743076
2018-08-24 15:39:49 +01:00
aquilescanta
afebd60ee4 Do not seek to the start of live Transport Streams after preparation
Issue:#4666

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209742008
2018-08-24 15:36:44 +01:00
olly
bcc69efc7c Remove deprecated SimpleExoPlayer constructor
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209580625
2018-08-24 15:35:10 +01:00
tonihei
56aecf6614 Make HLS and SS chunk iterators private.
They don't need to be accessed publicly and are can be moved into the
respective chunk sources. This is the same structure used for Dash.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209507217
2018-08-24 15:33:41 +01:00
tonihei
d51b98dd1f Replace period index with uid in MediaPeriodId.
The MediaPeriodId with index is only properly defined together with a
timeline containing the index. Changing it to the period uid allows to use
the MediaPeriodId independent of the corresponding timeline.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209430257
2018-08-24 15:32:11 +01:00
aquilescanta
2cd7d7102b Add DummyExtractorOutput
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209417004
2018-08-24 15:29:04 +01:00
andrewlewis
5c2dd9ca42 Move all tests to JUnit 4
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209412403
2018-08-24 15:25:56 +01:00
olly
05dcf502e5 Add missing cases to IntDef switch + fix default locale usage
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209396260
2018-08-24 15:24:14 +01:00
aquilescanta
f64ec43acd Remove usage of deprecated method from the Demo app
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209390036
2018-08-24 15:22:40 +01:00
eguven
b58f6940eb Add VideoFrameMetadataListener
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209193233
2018-08-24 15:21:03 +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
olly
b34c46415d Bump version to 2.8.4
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209134753
2018-08-17 13:27:42 +01:00
andrewlewis
d05d2fcea9 Support seamless adaptation of xHE-AAC audio streams
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=209113673
2018-08-17 11:15:58 +01:00
aquilescanta
4530944ed7 Rework HlsPlaylist attribute inheritance
The reason for the change is that variable substititution requires
master playlist variable definitions at the moment of parsing.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208997963
2018-08-17 11:14:42 +01:00
olly
7a34869f9a Fix seeking in progressive live streams
Issue: https://github.com/google/ExoPlayer/issues/4493

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208992790
2018-08-16 17:15:25 +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
52b6b3b8e0
Merge pull request #4564 from BrainCrumbz/feat/playlist-remove-range
feat(playlist): remove MediaSource range
2018-08-16 16:45:47 +01:00
ojw28
d06b01c220
Merge pull request #4602 from gpinigin/webvtt-extractor-public
WebvttExtractor: make public to allow create custom HlsExtractorFactory outside of library
2018-08-16 16:45:36 +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
94c7fbbc24 Add more information to unexpected assertion failure
Issue: #4532

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208968252
2018-08-16 16:42:09 +01:00
andrewlewis
80f5b7e7b2 Check CodecProfileLevels for audio decoders
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208796064
2018-08-16 16:40:45 +01:00
andrewlewis
e7ef75342c Scale up initial video decoder maximum input size
When playing a playlist where the exact maximum input size is known from the
container for each item, it may be necessary to recreate the decoder to increase
its maximum input buffer size at the point of transitioning from one item to the
next, which can make transitions non-seamless.

Scale up the initial video decoder maximum input size so playlist item
transitions with small increases in maximum sample size don't require
reinitialization.

Issue: #4510

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208650244
2018-08-16 16:39:38 +01:00
aquilescanta
c5bc2d5f80 Add support for reporting AudioCapabilities changes on custom threads
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208622197
2018-08-16 16:38:32 +01:00
andrewlewis
8854aa415f Add support for setting auxiliary audio effects
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208611493
2018-08-14 10:02:58 +01:00
bachinger
c4024e17f6 adjust timestamps for cea608 and emsg in FMP4
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208526775
2018-08-14 10:01:58 +01:00
andrewlewis
32035e1bf3 Fix NPE in ExtractorMediaPeriod
Also turn on nullity checks for ExtractorMediaPeriod.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208467644
2018-08-14 10:00:31 +01:00
andrewlewis
1c09af02f7 Fix handling of text codecs strings in DashManifestParser
Also fix an NPE in FfmpegAudioRenderer if sampleMimeType wasn't set.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208230947
2018-08-13 14:06:57 +01:00
andrewlewis
9d14a3b31b Remove unneeded null check
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208208099
2018-08-13 14:05:37 +01:00
andrewlewis
5f75d6ea13 Target API 28
Apps targeting API 28 by default do not grant permission for cleartext traffic,
so update the demo app to show a warning if loading an HTTP URI will fail. See
https://developer.android.com/about/versions/pie/android-9.0-changes-28 for
information on behavior changes in API 28.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208204937
2018-08-13 14:04:14 +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
eguven
2ed42409a7 Add missing fields to Format hashcode calculation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208176661
2018-08-13 14:01:41 +01:00
aquilescanta
d399c00f9e Add support for multiple alternative EXT-X-KEY in HLS
Also add support for parsing PlayReady DRM information

Issue:#4180

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208094290
2018-08-13 14:00:34 +01:00
andrewlewis
5b3b4e64f9 Revert MediaCodecSelector API change
Future changes for checking codec capabilities will go in the renderer rather
than in the codec selector, so the codec selector only needs a MIME type as
before.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208076716
2018-08-13 13:59:14 +01:00
tsvi
4b2e382725 Adjust trim silence parameters to make it less aggressive.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208071000
2018-08-13 13:57:51 +01:00
borrelli
9db0dbc0e9 Allow SimpleExoPlayer to handle audio focus
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
2018-08-13 13:52:32 +01:00
aquilescanta
c1998da44e Fix missing error handling durations in HLS
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208023954
2018-08-13 13:51:09 +01:00
aquilescanta
d5c7bff643 Use LoadErrorHandlingPolicy in SsMediaSource and DashMediaSource
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208020030
2018-08-13 13:49:45 +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
1f89903bbb Minor javadoc fix
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207918525
2018-08-13 13:45:56 +01:00
eguven
eda408dc09 Move inflate method to Util class
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207857927
2018-08-13 13:41:32 +01:00
sammon
d3686cf8a2 Updating DefaultHttpDataSource to allow for http methods other than GET and POST,
as specified by DataSpec.httpMethod.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207769779
2018-08-13 13:39:10 +01:00
olly
ca473c86c7 Simplify DefaultDataSourceChain to use addTransferListener
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
2018-08-07 16:29:18 +01:00
olly
af507efb2a Deprecate/remove DataSource constructors that accept listeners
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207713478
2018-08-07 16:28:02 +01:00
andrewlewis
829f55e9cd Make AudioCapabilities constructor public
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207707035
2018-08-07 16:25:58 +01:00
olly
cab1d02c0c Allow setting constant bitrate flags in DefaultExtractorsFactory
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207566605
2018-08-07 16:25:01 +01:00
olly
ecee873b64 Mini cleanup of improved seeking support for release
* Make dedicated section in RELEASENOTES
* Clean up AMR FACTORY

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207550281
2018-08-06 17:18:51 +01:00
olly
dc8dc0e392 Declare all InternalState values in switch statement
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
2018-08-06 17:18:51 +01:00
olly
44101fc00b Use shifting for flag constants
Lint likes flags to be declared in this way, for safety, apparently

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207545382
2018-08-06 17:18:51 +01:00
hoangtc
077f2c3036 Supports seeking for TS Streams.
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
2018-08-06 14:35:12 +01:00
olly
7fcd6b6d65 Minimal fix for non-default cenc name prefixes in DASH manifests
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
2018-08-06 13:25:33 +01:00
aquilescanta
18d2a2ea2a Use LoadErrorHandlingPolicy in SingleSampleMediaSource
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207525746
2018-08-06 13:24:15 +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
olly
454b106921 Fix freezing playing multi-period DASH with EventStreams
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
2018-08-06 11:38:33 +01:00
hoangtc
c3d8ad2488 Add supports for Seeking in ADTS format using a constant bitrate seekmap.
- 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
2018-08-06 11:33:06 +01:00
andrewlewis
f3ad87d653 Update MP4RA URL
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207278934
2018-08-06 11:32:02 +01:00
hoangtc
0cdeb555d1 Use a custom video renderer for MetadataRetrieverImpl.
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
2018-08-06 11:30:48 +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
olly
4c7fbd67ea Suppress WrongConstant lint error
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
2018-08-06 11:26:39 +01:00
olly
f549cf5635 Fix Aes128DataSourceTest portability issue
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
2018-08-06 11:25:34 +01:00
jdong
2815ff1b02 Tiny cleanup: remove an extra "thread" in the comment for ExoPlayer interface.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207124509
2018-08-06 11:24:01 +01:00
aquilescanta
a7e9ebcf68 Build codecs string from SPS data in H.264
Issue:#4555

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=207096569
2018-08-06 11:22:37 +01:00
aquilescanta
cc2a8bb854 Fix encryption data extraction when default values should be used
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206963956
2018-08-06 11:19:51 +01:00
aquilescanta
d458b90cc7 Parameterize load error handling in ExtractorMediaSource
Issue:#2844
Issue:#3370
Issue:#2981

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206927295
2018-08-06 11:18:37 +01:00
olly
d0d6856725 Apply setOutputSurfaceWorkaround to required FireOS devices
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
2018-08-01 14:01:45 +01:00
hoangtc
0fbe083d4e Return empty track groups and track selections when user seeks to unprepared period
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
2018-08-01 13:59:35 +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
andrewlewis
5715960304 Add Context to SimpleExoPlayer factory methods
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
2018-08-01 13:49:21 +01:00
andrewlewis
429bf4d099 Expand passthrough channel count workaround to all devices
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206893078
2018-08-01 13:49:21 +01:00
hoangtc
f08ad55892 Supports seeking for MPEG PS Streams.
This CL adds support for seeking within PS streams by using binary search. For
any seek timestamp, it tries to find the location in the stream where SCR
timestamp is close to the target timestamp, and return this position as the
seek position.

Github: #4476.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206787691
2018-08-01 13:49:21 +01:00
hoangtc
377314a69f Remove unnecessary DefaultKeyStatus, DefaultKeyRequest and DefaultProvisionRequest.
Currently, we have KeyStatus, KeyRequest and ProvisionRequest as interface, so we can use
custom implementation for purpose such as wrapping native objects. However, these interfaces and the corresponding default classes are only used to bundle data, and in all existing implementation (including native code), it's just as efficient to just use the Java default implementation. Therefore we can just get rid of the interfaces, and change
the interfaces into classes with the default implementation.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206765389
2018-08-01 13:49:20 +01:00
andrewlewis
7ead310219 Use maximum bitrates for encoded output buffer sizes
There is some risk associated with this change, as audio track buffers come from
shared memory and limits may be device-specific. I've tested these sizes on
Nvidia Shield TV and Nexus Player on various builds. The maximum size allocated
is about 800 KB. We could implement support for retrying creating the audio
track if it fails to initialize, but it seems preferable to avoid the extra
complexity required to do that unless we know it's necessary to work around
device-specific limitations.

Issue: #3803

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206749222
2018-08-01 13:49:20 +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
aquilescanta
9ec14d1ada Fix SCTE-35 timestamp adjustment
Issue:#4573

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206737252
2018-08-01 13:49:20 +01:00
andrewlewis
e2bf474c1e Extend Nexus Player mono workaround to Oreo
The platform fix was merged into O MR1, not O. Nexus Player has
not received this build.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206734342
2018-08-01 13:49:20 +01:00
andrewlewis
19d24ac633 Remove extra brackets
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206725219
2018-08-01 13:49:20 +01:00
andrewlewis
ded2b2eb2a Allow outputting audio to a WAV file
Add TeeAudioProcessor that doesn't modify the input audio but writes it to an
AudioBufferSink, and WavFileAudioBufferSink for writing audio to a .wav file.

This is intended to be used for diagnostics and debugging.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206717458
2018-08-01 13:49:20 +01:00
andrewlewis
68add98c23 Fix detection of TrueHD syncframe in MatroskaExtractor
MatroskaExtractor was checking for INDEX_UNSET as the sample count for buffers
not containing syncframes, but actually 0 was returned for these. Theoretically
this could prevent us starting to play a TrueHD stream as we wait until we can
read the sample count from a syncframe before accepting the audio in
DefaultAudioSink, but it seems that rechunking avoided this issue arising in
practice.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206575462
2018-08-01 13:49:20 +01:00
tonihei
656c2172dd Fix event reporting for merging and looping media sources.
The looping media source doesn't convert the media period id to the externally
visible media period id. And the merging media source reports media period
creations multiple times which will break listeners assuming a media period
with a specific id will only be created once.

Also amend the doc for MediaSource.createPeriod to reflect that media periods
created in parallel do not actually have the same id.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206327241
2018-08-01 13:49:20 +01:00
tonihei
a237ae1810 Fix period transition with non-zero start position.
Period transitions with non-zero start position happen too early as the
playing period is advanced as soon as the renderer offset is reached not
taking into account that the start position needs to be added to that.

Issue:#4583

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206310328
2018-08-01 13:49:20 +01:00
andrewlewis
6a2f94ec4b Document top-level limitation of AdsMediaSource
Issue: #4591

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206307948
2018-08-01 13:49:20 +01:00
andrewlewis
0c0c5942ab Fix incorrect channel configuration for 8 ch pre-M
AudioTrack checks the channel configuration against a mask of allowed channels.
Before Android M the check in getMinBufferSize would always fail for 8 channel
output.

For Android L constants are available to build the required channel
configuration for a conventional 7.1 setup and these constants are part of the
allowed channels mask, so switch to using them.

Before Android L the constants for 7.1 aren't in the allowed channels mask, so
discard channels to give a 5.1 stream.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206307892
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
aquilescanta
4eee474555 Remove minLoadableRetryCount from HLS components
Remove minLoadableRetryCount from HLS components in favor of
LoadErrorHandlingPolicy#getMinimumLoadableRetryCount.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206298419
2018-08-01 13:49:20 +01:00
tonihei
d3c2cb2aa4 Update remaining DataSource's with new addTransferListener method.
The new method allows to add TransferListeners after the DataSource
has been created. Most implementations just forward to their wrapped
upstream DataSource. Implementation which directly read data implement
BaseDataSource instead.

Also removes the temporary default no-op implementation in DataSource.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206289986
2018-08-01 13:49:20 +01:00
Gleb Pinigin
8f624861e1 WebvttExtractor: make public to allow create custom HlsExtractorFactory outside of library 2018-07-31 19:45:30 +07: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
Oliver Woodman
3b61a400c5 Remove stray file 2018-07-26 19:06:33 +01:00
tonihei
133f5f16b8 Pass MediaPeriodId to DeferredMediaPeriod when actual period is created.
This helps to distinguish between the MediaPeriodId the deferred media period is being
created with and the MediaPeriodId which is used to create the actual underlying period.

This serves two purposes:
1. The error reporting of ad prepare errors uses the correct media period id (the
   externally visible ad media period id).
2. The transition to using media period uid instead of indices is simplified.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206160463
2018-07-26 18:27:46 +01:00
tonihei
49ef1f3f8c Fix nullness warnings in Util and Assertions, and provide own castNonNull.
Using our own no-op castNonNull prevents linking into checkerframeworks library.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206152148
2018-07-26 18:27:46 +01:00
andrewlewis
217247f113 Remove naming assumption for passthrough decoders
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206119357
2018-07-26 18:27:46 +01:00
andrewlewis
5da703a588 Fix some nullness warnings in audio classes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206021873
2018-07-26 18:27:46 +01:00
hoangtc
d810352f2c Refactor FlacBinarySearchSeeker.
Rewrite FlacBinarySearchSeeker and extract out the core binary search algorithm
into BinarySearchSeeker class so it can be re-used for other formats.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206012900
2018-07-26 18:27:46 +01: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
GiuseppePiscopo
7878bf6a31 chore(playlist): reorder message IDs, fix tabbing 2018-07-25 18:31:14 +02:00
GiuseppePiscopo
cc7f011ecb feat(playlist): stick to list.subList API 2018-07-25 18:30:35 +02:00
olly
14216ef53b Nullness fixes for emsg and id3 metadata classes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205972857
2018-07-25 15:14:50 +01:00
tonihei
3d55bc78f7 Use country and network based initial bitrate estimate.
This changes the default initial bitrate estimate to be country (group) and
network type specific. The existing overwrite still works as before and new
overwrites for the country or specific network types are provided for
customization.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205972705
2018-07-25 15:13:35 +01:00
Arnold Szabo
ae520a8c2c #4306 - Extract tags from SubRip subtitles, add support for alignment tags based on SSA v4+ 2018-07-25 01:29:07 +03:00
olly
0287fa21f3 Add PRO7S to surface switch workaround
Issue: #4468

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205821059
2018-07-24 15:00:16 +01:00
olly
340d846d9b Remove some files from the nullness blacklist
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205816544
2018-07-24 14:59:21 +01:00
tonihei
138b222457 Prevent dummy period id in ExoPlayerImplInternal from leaking into actual use.
While the timeline is empty, we keep a dummy MediaPeriodId in PlaybackInfo with
a period index of 0. We leak this MediaPeriodId in actual use in these
situations:
 1. When issuing an IllegalSeekPosition after preparation. The timeline becomes
    non-empty, but the media period id stays at its dummy value.
 2. When re-adding sources to a previously empty timeline. The dummy period id
    is used as the start position for the new non-empty timeline.

This change makes:
 - the constructor of PlaybackInfo using those dummy values more explicit
 - prevents the issues above by using the correct default position in the new
   non-empty timeline for the above mentioned cases.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205803006
2018-07-24 14:58:04 +01:00
tonihei
ffdc17d0e0 Remove generic type parameter from TransferListener.
All known instances use DataSource as generic type and thus code can be simplified
by removing the generic type altogether.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205798542
2018-07-24 14:56:45 +01: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
sammon
01b69854ff Refactoring DataSpec constructor calls to use DataSpec.withUri() and DataSpec.subrange().
This reduces the number of calls to the DataSpec constructor and minimizes the number of files that need to be updated when adding a new DataSpec parameter (ex: followup []

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205719005
2018-07-24 14:52:58 +01:00
GiuseppePiscopo
2c801ca267 docs(playlist): fix javadoc comments 2018-07-24 10:08:27 +02:00
GiuseppePiscopo
c9b6a73cd8 feat(playlist): add API to remove range of indices 2018-07-24 10:08:27 +02:00
Jovche Mitrejchevski
1f1762538f Support vector drawables to be used as default artwork 2018-07-24 08:16:53 +02:00
olly
61b838f414 Update release notes + bump version
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205660355
2018-07-23 15:57:51 +01:00
tonihei
5933d92394 Add simplified Dash and Ss media source factory constructors.
As the manifest and media data sources can be the same now, we can provide
a simplified constructor with just one data source factory.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205658046
2018-07-23 15:55:57 +01: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
tonihei
a67c73650e Add helper method to get uid of timeline period.
This removes the need to populate the entire period for the common usage of
getting the uid from the period.

Also add default implementation to get period by uid.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205638265
2018-07-23 12:22:57 +01:00
tonihei
97e66ef11b Update period index in DashMediaPeriod event dispatcher after manifest update.
Issue:#4492

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205636634
2018-07-23 12:21:44 +01:00
tonihei
0b3fa5176a Move media period end position from MediaperiodInfo to MediaPeriodId.
The end position is needed to make the MediaPeriodId unique as multiple
content periods may only vary in this parameter.

This also simplfies some other comparisons where the end position needed to
be compared in addition to the media period id.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205634508
2018-07-23 12:20:28 +01:00
Oliver Woodman
41345dcb83 Simplify DASH live presentation delay override 2018-07-23 10:39:02 +01:00
ojw28
58fcf52b17
Merge pull request #4534 from Chimerapps/dev-v2
Allow specifying the default live presentation delay
2018-07-23 10:37:45 +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
olly
7551d98087 Cleanup: Use lambdas for extractor factories
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205407693
2018-07-23 10:24:09 +01:00
tonihei
8be95042cc Fix typo in variable name.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205405072
2018-07-23 10:22:50 +01:00
Oliver Woodman
badd9356f8 Refine use of KEY_OPERATING_RATE 2018-07-20 16:15:30 +01:00
ojw28
f4219b55e6
Merge pull request #3634 from jinminghe/bugfix/format
Set KEY_OPERATING_RATE for MediaCodecVideoRenderer.
2018-07-20 16:12:04 +01:00
tonihei
0721d372a7 Fix issue with keeping window sequence number after repeated seeks.
The number is shelved in calls to queue.clear() to keep it for the next
media period. However, the queue may also become empty by repeated calls to
advancePlayingPeriod which may happen when seeking to an unprepared period.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205376036
2018-07-20 16:08:51 +01:00
hoangtc
ce62934861 Fix a bug with VideoRendererOutputCapturer when extracting frames of different size
Currently, when the VideoRendererOutputCapturer updates output size, it will
set the new surface, then release the old surface. This can lead to problem
when both surface depends on EGL, since the second release() can release EGL
resources of the first surface.

This CL reverses this process, and ensures that the old surface is released before the new one is created.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205235451
2018-07-20 11:01:54 +01:00
Nicola Verbeeck
cf99963aab Typo in docs 2018-07-19 11:53:42 +02:00
Nicola Verbeeck
26a7516b55 Updated formatting 2018-07-19 11:22:03 +02:00
Nicola Verbeeck
fbc0db965a Updated formatting
Added constructor and field in source itself
2018-07-19 11:20:18 +02:00
Nicola Verbeeck
e6d32d3fb5 Updated formatting 2018-07-19 11:04:28 +02:00
Nicola Verbeeck
fbef465ca8 Allow specifying the default live presentation delay instead of using hardcoded constant 2018-07-19 10:58:58 +02:00
tonihei
a076924caa Simplify using DataSource factories without a TransferListener.
Setting the transfer listener on the data source factories is only needed for debug
purposes, logging and for custom bandwidth metering which doesn't use the
player-provided bandwidth meter. As such, it is not compulsary and it should be easy
to set up the data source factory without a transfer listener.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204926083
2018-07-17 20:40:56 +01:00
tonihei
59b18a52d2 Make passing BandwidthMeter to TrackSelector and TrackSelection non-optional.
This was only needed temporatily until we could ensure that the player always
provides a BandwidthMeter.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204903640
2018-07-17 20:38:34 +01:00
olly
73af056da3 Widen setOutputSurface workaround
As part of this change:

- Don't apply the workaround on API level 27+. GTS coverage
  should prevent such devices from existing.
- Use Util.DEVICE consistently.
- Remove the "// Device name", which don't really add much
  but make extra work when updating the list.

Issue: #4468

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204889657
2018-07-17 20:35:51 +01:00
aquilescanta
f155aa2563 Add getMinimumLoadableRetryCount to LoadErrorHandlingPolicy.
This will allow deduplicating the argument from all Loader clients.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204889331
2018-07-17 20:34:36 +01:00
tonihei
6aab2bdc55 Set bandwidth meter at player level.
This bandwidth meter is then forwarded to the track selection and as a transfer
listener to media and data sources.

When no bandwidth meter is specified in the ExoPlayerFactory methods, a static
singleton instance will be used.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204881497
2018-07-17 20:32:59 +01:00
tonihei
74dadae520 Make values forwarded to bandwidth listener final again.
When notifying the bandwidth listeners of new samples, the forwarded values
need to be final to prevent concurrent access. Putting the event forwarding
into a separate method ensures the values are final.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204877650
2018-07-17 20:30:13 +01:00
olly
b25a124239 HLS: Fill primary sample formats with track format info (e.g. bitrate)
Issue: #3297

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204732266
2018-07-17 20:28:52 +01:00
eguven
7b2da629ea Make it possible to disable DownloadService notifications
Issue: #4389

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204728270
2018-07-17 20:27:30 +01:00
olly
8f0729b5ad Add AudioListener (audio equivalent to VideoListener)
Issue: #3994

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204722997
2018-07-17 20:26:27 +01:00
aquilescanta
e247a08a36 Parameterize load error handling in HLS
Issue:#2844
Issue:#2981

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204718939
2018-07-17 20:25:18 +01:00
olly
e2059eabe1 Enhance copyWithManifestFormatInfo to handle muxed manifest formats
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204470264
2018-07-17 20:22:33 +01:00
olly
450448b220 Fix bug where sourceId wasn't set for the first chunk
The sample queues haven't been created when the first init call
occurs. In this case we need to set sourceId when we subsequently
create the queues.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204467538
2018-07-17 20:21:10 +01:00
olly
ef728178a8 Improve format derivation for chunkless preparation
1. Copy label into derived formats
2. If audio is the primary track type, copy additional fields from
   the variant formats. This is probably a no-op in practice, since
   I don't think variant formats have these fields set anyway, but
   it seems like the right thing to do in case they ever are set in
   the future.

Note: It's a bit strange to use createXContainerFormat rather than
createXSampleFormat, but in practice the methods used here are
better matched for what we're trying to do.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204467287
2018-07-17 20:19:57 +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
hoangtc
7cba5429fc Add supports for frame-capture retrying for MetadataRetriever.
For the MetadataRetriever, for certain queries, after setting up the player to
render a frame (by seeking to the position), sometimes the player will seek to
the same position and ignore the seek, leading to the frame not being captured,
leaving the retriever in deadlock, waiting for the frame forever. This CL adds
a retry timer to avoid this and make sure we can return query result after some
time.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204460200
2018-07-17 20:17:36 +01:00
olly
cba6da8906 No-op cleanup of DashTimeline
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204451894
2018-07-17 20:16:14 +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
Jinming he
5cdb886db1 Address comments. 2018-07-16 21:36:00 +08:00
Jinming he
db53606c1d Merge master into bugfix/format. 2018-07-16 21:04:25 +08: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
Oliver Woodman
e4b05a5ae6 Merge branch 'dev-v2' of https://github.com/JungleGenius/ExoPlayer into JungleGenius-dev-v2 2018-07-12 15:54:47 +01:00
ojw28
423cfa3b73
Merge pull request #4442 from keiththompson/keiththompson__/skip_ad_within_ad_group
Add withSkippedAd method to AdPlaybackState.
2018-07-12 15:48:05 +01:00
ojw28
651cfd9ebb
Merge pull request #4480 from drhill/dev-v2_mkv_forced_default_flipped
MKV Extractor flip default and forced flag values to their proper names
2018-07-12 15:46:49 +01:00
andrewlewis
44c253058e Ignore all edit lists if one track's edits can't be applied
Issue: #4348

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204261718
2018-07-12 15:40:11 +01:00
tonihei
78d7754f29 Add addListener/removeListener to BandwidthMeter.
That allows to add listeners after the BandwidthMeter has been created which is
helpful as the BandwidthMeter instances are often long-lived static instances.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204255299
2018-07-12 15:39:05 +01:00
matttt
9914587894 Remove the static modifier from DefaultDashChunkSource::newMediaChunk and DefaultDashChunkSource::newInitializationChunk allowing for overrides.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204167521
2018-07-12 15:37:52 +01:00
aquilescanta
32a91b5689 Add LoadErrorHandlingPolicy to customize blacklisting and backoff logic
Issue:#2844
Issue:#3370
Issue:#2981

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204149284
2018-07-12 15:36:35 +01:00
tonihei
095c6e4bf8 Add MediaChunkIterator for HLS media playlists.
This allows to iterate through the available segments of the playlist.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=204100116
2018-07-11 14:57:49 +01:00
hoangtc
39b812298d Add supports for reading duration for a PS stream.
Add supports for reading duration for a PS stream by reading SCR values from
the header of packs at the start and at the end of the stream, calculating the
difference, and converting that into stream duration.

Github: #4476

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203954752
2018-07-11 14:56:54 +01:00
tonihei
68822c0c41 Remove BandaidTransferListener.
It has now become an empty shell as the real TransferListener provides all its
methods.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203950443
2018-07-11 14:55:54 +01:00
tonihei
c3df64f102 Extend TransferListener with onTransferInitializing and additional parameters.
This allows more fine-grained analysis of transfers.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203950327
2018-07-11 14:54:35 +01:00
tonihei
2b1434dfcb Change DataSource.Type to a boolean.
There are only two types at the moment and we can therefore use a boolean.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203937357
2018-07-11 14:53:14 +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
anjalibh
e60de62588 Libvpx: Support directly outputting YUV to SurfaceView. This is supposed to use hardware (not GPU) to convert YUV to RGB and overall use less power.
Power Comparison:

TextureView                          1080p         720p
                H264 HW              498, 496      507, 478
                VP9 RGB              1050, 1104    1185, 1152
                VP9 ANativeWindow    1070, 985     700, 674
GLSurfaceView
                VP9 YUV              1075, 1112    716, 635
SurfaceView
                H264 HW              419, 409      397, 377
                VP9 RGB              1044, 1139    654, 671
                VP9 ANativeWindow    975, 835      617, 623
                VP9 MediaCodec       683, 679      488, 476

Measures average current drawn mAH on a Nexus 6 at full brightness from time t=3 to t=95 seconds. The same clip was used for all tests. Two measurements were taken for each category.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203847744
2018-07-10 14:01:50 +01:00
olly
17a58969af Move subsampleOffset in Format
It's no longer text specific (it's used for metadata as well, and
in theory could apply to any stream in which samples contain multiple
sub-samples)

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203767825
2018-07-10 14:00:30 +01:00
tonihei
5c9fd1649a Fix wrong loop variable in DashMediaPeriod.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203766579
2018-07-10 13:59:19 +01:00
tonihei
74d8f89cb6 Restructure track selection in DashMediaPeriod.
Until now, the streams were released and re-enabled for each type of stream
(primary, event, embedded) in that order. That leads to problems when replacing
streams from one type to another (for example embedded to primary).

This change restructures the track selection to:
1. Release and reset all streams that need to be released or replaced.
 1(a). Including embedded orphan streams.
2. Select new streams.

Issue:#4477

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203751233
2018-07-10 13:58:18 +01:00
olly
dc8b73d372 Apply setOutputSurface workaround to all non-Google decoders
Where a device has this issue, it most likely applies to all
SOC vendor provided decoders, which are normally the only
video decoders other than the OMX.google software decoders
on the device. The fact we currently only blacklist for AVC
decoders is likely just a side effect of AVC's popularity.

I checked two devices already on the blacklist, and both
failed with other SOC vendor decoders on the device as well
(but passed if forced to use OMX.google decoders instead)

Issue: #4468

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203728285
2018-07-10 13:57:10 +01:00
olly
13789a3c1d Tweak DefaultTrackSelector documentation
Viewport constraints apply to adaptive content even if the
actual playback isn't adaptive (i.e. because the selector
ends up making a fixed track selection).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203726831
2018-07-10 13:55:51 +01:00
Drew Hill
e807212514 flip flag values to their proper names so that trackselector parameters can be useful 2018-07-07 12:28:58 -04:00
Oliver Woodman
8fa34c1ed6 Delete stray file 2018-07-06 18:26:49 +01:00
hoangtc
c1acf87fba Support handling frame queries for MetadataRetriever.
- Support handling frame queries (i.e get frames at times, output to certain
sizes) from MetadataRetriever.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203489788
2018-07-06 17:59:21 +01:00
tonihei
2c00be1aa3 Add workaround for unmatched track indices in tkhd and tfhd.
If there is only one track, we can assume that both boxes refer to the same track
even if the track indices don't match.

Issue:#4083

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203485872
2018-07-06 17:58:08 +01:00
olly
3b70d1d889 Avoid providing invalid responses to MediaDrm
MediaDrm.provideXResponse methods only accept the response
corresponding to the most recent MediaDrm.getXRequest call.
Previously, our code allowed the following incorrect call
sequence:

a = getKeyRequest
b = getKeyRequest
provideKeyResponse(responseFor(a));

This would occur in the edge case of a second key request
being triggered whilst the first was still in flight. The
provideKeyResponse call would then fail.

This change fixes the problem by treating responseFor(a)
as stale. Note that a slightly better fix would be to
defer calling getKeyRequest the second time until after
processing the response corresponding to the first one,
however this is significantly harder to implement, and is
probably not worth it for what should be an edge case.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203481685
2018-07-06 17:56:58 +01:00
tonihei
1cf8b255dc Add workaround for unmatched track indices in trex and tkhd.
Both boxes should contain the same list of track indices. However, if only one
track index in each list does not match, we can just assume that these belong
together.

Issue:#4477

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203481258
2018-07-06 17:55:47 +01:00
olly
bd952a802a Re-merge output surface workarounds and add TODO list
Issue: #4468

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203479944
2018-07-06 17:54:33 +01:00
Oliver Woodman
3b29eeaef8 Merge branch 'joomcode-dev-v2' into dev-v2 2018-07-06 14:50:24 +01:00
olly
0ed8e86ba4 Allow overriding of setOutputSurface workarounds
Since this is an ongoing problem, it's reasonable that we allow
developers to toggle these workarounds without too much hassle.

Issue: #4468

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203364488
2018-07-06 14:38:23 +01:00
tonihei
264bed06f2 Forward addTransferListener for all wrapping data sources.
This allows to register a listener on an outer wrapping data source which
receives data transfer events from the wrapped source.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203358981
2018-07-06 14:37:19 +01:00
andrewlewis
5047a5a4da Fix pre-L codec buffer initialization
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203341457
2018-07-06 14:36:19 +01:00
tonihei
acbe52d0d7 Forward TransferListener from MediaSources to DataSources.
This wires up recent changes of passing a transfer listener to the MediaSource and
allowing DataSources to accept new listeners.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203280818
2018-07-06 14:35:17 +01:00
tonihei
abb4d6ff70 Use correct generics type bounds for TransferListener in MediaSources.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203260699
2018-07-06 14:32:46 +01:00
hoangtc
2237603a4d Add supports for reading duration for a TS stream.
Add supports for reading duration for a TS stream by reading PCR values of the PCR PID packets at the start and at the end of the stream, calculating the difference, and converting that into stream duration.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203254626
2018-07-06 14:31:27 +01:00
andrewlewis
0b631b05c2 Optionally fall back to other decoders if init fails
Codec initialization may fail in creation, configuration or when start()ing the
codec. If codec initialization fails, there may be other codecs available that
could handle the same format, but currently ExoPlayer can only try to use the
first listed codec for the input format and gives up if it fails to initialize.

This change implements support for optionally falling back to alternative
decoders if initialization fails. MediaCodecSelector can now return a list of
decoders to try in priority order, and use the Format when choosing a codec.
With the default implementation, the codecs and order come from MediaCodecList,
and matches the order used internally by MediaCodec.createDecoderByType (which
implements the same kind of fallback though only to the creation step, without
configuring/starting the codec).

This feature is useful for apps that want to play several videos concurrently on
devices that have software decoders (like OMX.google.h264.decoder), as the new
behavior allows new codecs to be created when no hardware-accelerated decoders
are available.

The list of available codecs is queried when initializing the codec after a
format change that requires a new codec to be instantiated. When a decoder fails
to initialize it is removed from the list of available decoders and won't be
tried again until the next format change (or until the renderer is disabled).

Note: this change does not affect the renderer capabilities API, as when
checking format support we don't know which codec will be used.

Issue: #273

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203242285
2018-07-06 14:30:16 +01:00
andrewlewis
930833627f Use androidx test runner in gradle configuration
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203141421
2018-07-06 14:29:14 +01:00
tonihei
f2b01275cb Add back old deprecated MediaSource.prepareSource - remove for next release!
This ensures compatiblity of other apps depending on our public GitHub code.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203129076
2018-07-06 14:28:14 +01:00
tonihei
f4bcfe082d Add MediaChunkIterator for SmoothStreaming stream elements.
This allows to iterate through the available chunks of the stream.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203105813
2018-07-06 14:26:56 +01:00
tonihei
97120bc6cb Add MediaChunkIterator for FakeAdaptiveDataSet.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203102464
2018-07-06 14:25:38 +01:00
tonihei
55ce085a0d Add transferInitializing to BaseDataSource.
This allows implementations to notify when the transfer is about to be started.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203102117
2018-07-06 14:24:21 +01:00
tonihei
985160a47d Use BaseDataSource for all internal leaf data sources.
This allows all leaf data sources (i.e. ones which do not forward the requests
to other data sources) to accept multiple listeners.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=203097587
2018-07-06 14:23:02 +01:00
tonihei
c8af6d176f Forward queue of media chunks to getNextChunk.
This allows to use this queue in the track selection in the future.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202954871
2018-07-03 11:57:26 +01:00
olly
04341394a3 Add section to guide about track selection
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202948642
2018-07-03 11:56:12 +01:00
tonihei
8ca9a32d8e Add MediaChunkIterator interface and DASH implementation.
This will allow to provide available information about future chunks to the
track selection.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202940994
2018-07-03 11:54:58 +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
aquilescanta
caa90844c6 Allow overridable empty closed caption format list in DefaultTsPayloadReaderFactory
Issue:#4451

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202923630
2018-07-03 11:52:31 +01:00
olly
c23910ad3a Exclude text streams from duration calculations
Issue: #4029

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202912333
2018-07-03 11:51:32 +01:00
brettchabot
1ee36101f6 Replace references to android.support.test with androidx.test.
The Android Test Support Library is being renamed to AndroidX Test, with its root java namespace changing from android.support.test to androidx.test.
And code location changing from tp/android/android_test_support to tp/android/androidx_test.

More information: []

TAP global presubmit: []

BUG:
79205333

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202796842
2018-07-03 11:50:39 +01:00
olly
62b90c83df Fix application of styles for CEA-608
Issue: #4321

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202660712
2018-07-03 11:49:42 +01:00
tonihei
6f6c72266e Add addTransferListener method to DataSource and provide BaseDataSource.
The new method allows to add transfer listeners (e.g. the BandwidthMeter) after
the data source has been created. To simplify the implementation for
subclasses, this change also introduces a BaseDataSource which handles
the list of listeners and the listener registration.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202649563
2018-07-03 11:48:28 +01:00
tonihei
98afaa60d0 Forward TransferListener to media sources.
In the future, this allows to register the BandwidthMeter (managed by the player)
as a listener to all media transfers related to this media source.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202643946
2018-07-03 11:47:15 +01:00
hoangtc
824c0b20a5 Add supports for Seeking in AMR format using a constant bitrate seekmap.
- Extract ConstantBitrateSeeker from Mp3 package into a more general
ConstantBitrateSeekMap.
- Use this seekmap to implement seeking for AMR format.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202638183
2018-07-03 11:46:03 +01:00
aquilescanta
efa714ab4f Support EXT-X-INDEPENDENT-SEGMENTS in the master playlist
From the spec:

If the EXT-X-INDEPENDENT-SEGMENTS tag appears in a Master
Playlist, it applies to every Media Segment in every Media
Playlist in the Master Playlist.

----

This requires propagation of attributes from the master
playlist to the media playlists. This CL only includes
independent segments, but other inheritable attributes
will be supported in following changes. Other inheritable
attributes include variable substitution definitions and
session keys.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202628422
2018-07-03 11:44:56 +01:00
Dmitry Kostyrev
db88222660 Opt out of using DummySurface on Asus Zenfone Go
Issue: #4460
2018-07-03 11:46:23 +03:00
olly
557fa17945 Simplify DefaultTrackSelector documentation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202623116
2018-06-29 12:07:13 +01:00
olly
f934df7780 Improve DefaultTrackSelector documentation
It's quite hard to find the defaults currently. Placing them
on each variable makes them easier to find.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202495929
2018-06-29 12:06:15 +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
ojw28
7d489a8893
Merge pull request #4441 from murdly/dev-v2
opt out of using DummySurface on specific Fire TV device
2018-06-28 16:22:28 +01:00
hoangtc
4f57c46560 Do not discard TS PES payload readers on Seek for TSExtractor in non-HLS mode.
Currently, we are discarding all TS PES payload readers on seek. This is to fix
a bug that makes PES stream readers read packets inconsistently after seeking (first
time, the readers ignore all packets before PMT, second seek time after PMT is
read, the readers will read all packets before PMT).
This works fine if we don't support seeking to arbitrary position within the TS
stream. However, this may lead to a problem if we want to support seeking, because
some TS streams only have track format at the begining of the stream, and reseting
the payload readers after seeking can lead to track format not available anymore.

This change reverts the original fix (do not discard TS PES payload readers on seek
anymore). Instead, in non-HLS mode, after we have processed all PMTs packets in
the strea, we will re-seek to the beginning and perform readin again to make sure
the result will be consistent across multiple seeks. This is a prepare step to
support seeking in TS streams.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202466233
2018-06-28 16:18:50 +01:00
tonihei
dd14500eba Add url (after redirection) to LoadEventInfo.
This url is readily available when creating media source events (from the
data source) but so far not published to external listeners. This change
adds a new field to LoadEventInfo which corresponds to DataSource.getUri().

Issue:#2054

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202459049
2018-06-28 16:18:50 +01:00
tonihei
236eb5cef6 Add some leeway for finding additional tracks in PsExtractor.
Currently we immediately stop searching after we found one video and one
audio track. This change adds some leeway to detect additional tracks.

Issue:#4406

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202455491
2018-06-28 16:18:50 +01:00
aquilescanta
fc2168eb61 Add an errorCount argument to onLoadError
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202313695
2018-06-28 16:18:50 +01:00
eguven
93cbae5bff Use default Deserializers if non given to DownloadManager
Also moved shared code to SegmentDownloadAction between its subclasses.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202294880
2018-06-28 16:18:50 +01:00
tonihei
f2ce0d8981 Make RepresentationHolder immutable.
This allows to use it as a snapshot of the representation.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202287466
2018-06-28 16:18:50 +01:00
tonihei
65a58ffcb5 Add DRM workaround for Asus Zenfone 2.
Issue: #4413

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202277924
2018-06-28 16:18:50 +01:00
aquilescanta
f850c0de73 Rename HlsPlaylistTracker's release to stop
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202103550
2018-06-28 16:18:50 +01:00
andrewlewis
57b7e18b23 Add a test for preroll ad playback with ImaAdsLoader
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202080962
2018-06-28 16:18:50 +01:00
Keith Thompson
8342b1dae4
Add withSkippedAd method to AdPlaybackState. Currently it is only possible to skip entire ad groups but not individual ads within a given ad group. 2018-06-27 16:19:22 +01:00
Arek Karbowy
99d3e8f1d3
opt out of using DummySurface on specific Fire TV device 2018-06-27 11:29:04 +01:00
aquilescanta
a1f89bec0d Allow configuration of the Loader retry delay
Issue:#3370

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201996109
2018-06-25 22:38:29 +01:00
hoangtc
eb8c686243 Fix a bug with MetadataRetriever getMedatadata query.
When getMedatadata from an ExtractorMediaPeriod, due to the MediaPeriod refreshing its Timeline twice, the MetadataRetriever may wrongly reset periodIndex of the current trackGroup to C.TIME_UNSET, which makes it unable to handle subsequent metadata queries.

This CL changes the MetadataRetriever to keep track of periodUid of the current trackGroup instead of period index. PeriodUid is not changed on timeline refreshing, so is not prone the existing problem.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201969350
2018-06-25 22:37:15 +01:00
hoangtc
de57f09801 Refactor TS Extractor.
Refactor sniff(), and extract a few methods out from read() to make it look clearer. This CL does not change any functionality.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201933207
2018-06-25 22:35:55 +01:00
tonihei
24c21a292f Deprecate DefaultAnalyticsListener in favor of default no-ops in interface.
The DefaultAnalyticsListener 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=201931770
2018-06-25 22:34:35 +01:00
olly
a407c028d4 Wait for DRM keys before codec configuration on FireOS devices
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201695876
2018-06-22 17:50:33 +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
aquilescanta
b031c3d6bb Parse ms:laurl from ContentProtection in DASH
Issue:#3393

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201694813
2018-06-22 17:46:45 +01:00
olly
78d83304af Extract scheme specific data from PSSH for some FireOS devices
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201679215
2018-06-22 17:45:23 +01:00
olly
04d1d5a8b6 Add some FireOS workarounds for max input buffer size limitations
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201678686
2018-06-22 17:44:16 +01:00
olly
2043d90a73 Enable EOS workaround for FireTV Gen 2
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201678261
2018-06-22 17:43:12 +01:00
tonihei
fcc0bd403f Report uri and response headers of chunks.
Both values are helpful for event reporting, but are only available while
the data source is open. Similar to bytesLoaded, they need to be reported
through the Chunk.

Issue:#2054
Issue:#4361

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201664907
2018-06-22 17:41:51 +01:00
andrewlewis
ddda4a026d Add AudioComponent to the Player interface
This will make it possible for ImaAdsLoader to access the player volume when
used with SimpleExoPlayer.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201664189
2018-06-22 17:40:28 +01:00
aquilescanta
8802da6bb3 Fix re-starting of DefaultHlsPlalyistTracker
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201530049
2018-06-22 17:39:04 +01:00
andrewlewis
a610857017 Fix download cancellation
Issue: #4403

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201525284
2018-06-22 17:37:41 +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
andrewlewis
38096fb734 Add some Robolectric tests for ImaAdsLoader
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201484853
2018-06-22 17:35:22 +01:00
andrewlewis
8ab8b86a7b Fully clean up resources in EGLSurfaceTexture
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201376315
2018-06-22 17:33:56 +01:00
Brandon Davis
4b6edc5785 Fix CaptioningManager background being shown behind cue background.
remove extra space
2018-06-22 08:12:41 -06:00
hoangtc
8dbec616c4 Use isAtLeast() instead of (>=) to make the tests clearer.
Replace assertThat(a >= b).isTrue() with assertThat(a).isAtLeast(b) because it
reads more natural, and in case the assertion fails, it will print out the
actual values to help debugging.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201371993
2018-06-20 18:34:22 +01:00
tonihei
4f2b596062 Allow to specify player looper at the time of ExoPlayer creation.
Currently, the looper of the thread the player is created on is used (or the
main looper if this thread doesn't have a looper). To allow more control over
the threading, this change lets users specificy the looper which must be used
to call player methods and which is used for event callbacks.

Issue:#4278

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201331564
2018-06-20 18:05:52 +01:00
eguven
01ce549e8f Fix HlsMediaPlaylist download using HlsDownloadHelper
Issue: #4396

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201324467
2018-06-20 18:04:20 +01:00
andrewlewis
a75b5fb6a9 Pass through all ID3 internal data from udta
Also switch from using a CommentFrame to a new InternalFrame type for ID3 data
stored with ID '----', to distinguish internal data from actual ID3 comments.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201315254
2018-06-20 18:03:01 +01:00
aquilescanta
d8a61aade7 Normalize timestamps in HlsChunkSource
Issue:#4394

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201178909
2018-06-20 18:01:31 +01:00
hoangtc
3d3ab1f72e Add VideoRendererOutputCapturer
Added a capturer that can capture output from video renderer into bitmaps. This
class uses SurfaceCapturer to setup a surface, then configures this surface as the
output for a video renderer. Once the output is set, it will capture the
output frames from the video renderer and return them as bitmaps.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=201148184
2018-06-20 18:00:03 +01: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
andrewlewis
6c733702de Make no context current when releasing DummySurface
This avoids a small native leak.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200955086
2018-06-18 11:20:28 +01:00
eguven
e4f9ff5d91 Add ability to update download requirements to DownloadService
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200689527
2018-06-18 11:18:20 +01:00
olly
afc19bf6db CEA608 - Add space when handling mid-row codes
Issue: #3906

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200526335
2018-06-18 11:16:59 +01:00
tonihei
4dc6c85de4 Use proper buffered duration in AnalyticsCollector.
This replaces the workaround calculation which was needed before the
referenced bug was fixed.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200217241
2018-06-18 11:15:36 +01:00
aquilescanta
943de70a15 Pass HTTP DataSource's response headers to HlsExtractorFactory
Issue:#2025

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200212344
2018-06-18 11:14:17 +01:00
tonihei
37516d3126 Add missing onLoadStarted events to HLS playlist tracker.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200211755
2018-06-18 11:13:13 +01:00
andrewlewis
7b10e637e7 Support mu-law and A-law PCM with ffmpeg
Issue: #4360

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200186465
2018-06-18 11:12:10 +01:00
tonihei
877c6965c3 Correctly report type of ParsingLoadable.
The helper method only reported DATA_TYPE_UNKNOWN even if the actual type
is known.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200067296
2018-06-18 11:09:43 +01: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
olly
d6878f152c Offset SIDX timestamps by presentationTimeOffset
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=199856613
2018-06-18 11:06:51 +01:00