Commit graph

811 commits

Author SHA1 Message Date
bachinger
6c10c94f94 MediaSessionConnector: Support ACTION_SET_CAPTIONING_ENABLED
PiperOrigin-RevId: 283546707
2019-12-04 10:00:04 +00:00
ibaker
fb6a8a2c5d Allow AdtsExtractor to encounter EOF
Fixes issue:#6700

sample_cbs_truncated.adts test file produced using
`$ split -b 31795 sample_truncated.adts` to remove the last 10 bytes

PiperOrigin-RevId: 283530136
2019-12-04 09:59:37 +00:00
samrobinson
7c1b1c456b Rename onOutputFormatChanged.
Clarify `Format` vs `MediaFormat` in MediaCodecRenderer.

PiperOrigin-RevId: 283353651
2019-12-04 09:59:11 +00:00
olly
b68d19bceb Add layer of indirection for drawables
This allows easy overriding of the resources by app developers

Issue: #6709
PiperOrigin-RevId: 283306121
2019-12-04 09:58:20 +00:00
andrewlewis
a0736cfbf5 Remove AdsManager listeners on release
Issue: #6687
PiperOrigin-RevId: 283023548
2019-12-04 09:58:07 +00:00
olly
1536a2ceea Rollback of e26a61b903
*** Original commit ***

Improve `Format` propagation within the `MediaCodecRenderer`.

For example, fix handling of pixel aspect ratio changes in
playlists where video resolution does not change.

Issue:#6646

***

PiperOrigin-RevId: 282903626
2019-12-04 09:58:00 +00:00
olly
69a2cb862f Fix release notes
PiperOrigin-RevId: 282837404
2019-11-27 22:47:00 +00:00
olly
7a2575c3dd Fix release notes
PiperOrigin-RevId: 282836739
2019-11-27 22:46:52 +00:00
andrewlewis
a81149d962 Fix audio processor draining for reconfiguration
When transitioning to a new stream in a different format, the audio
processors are reconfigured. After this, they are drained and then
flushed so that they are ready to handle data in updated formats for the
new stream.

Before this change, some audio processors made the assumption that after
reconfiguration no more input would be queued in their old input format,
but this assumption is not correct: during draining more input may be
queued. Fix this behavior so that the new configuration is not referred
to while draining and only becomes active once flushed.

Issue: #6601
PiperOrigin-RevId: 282515359
2019-11-27 22:29:07 +00:00
olly
64569a3e5a Fix and clean up 2.11.0 release notes
PiperOrigin-RevId: 282227866
2019-11-24 16:02:26 +00:00
kimvde
b18650fdcf Expose metadata in FLAC extractor
PiperOrigin-RevId: 281538423
2019-11-22 15:09:17 +00:00
aquilescanta
f6afbe6cb0 Make MediaLoadData a top level class
In order to reuse it in LoadErrorHandlingPolicy.

PiperOrigin-RevId: 281333287
2019-11-22 15:08:16 +00:00
samrobinson
e26a61b903 Improve Format propagation within the MediaCodecRenderer.
For example, fix handling of pixel aspect ratio changes in
playlists where video resolution does not change.

Issue:#6646
PiperOrigin-RevId: 281276023
2019-11-22 15:08:00 +00:00
andrewlewis
dbd7e055e5 Reconfigure audio sink when PCM encoding changes
Note:
- Fixing this uncovers another bug in how audio processor draining
  works, so the test playlist still doesn't play correctly after this
  change.
- Once we reconfigure the audio sink based on the ExoPlayer Format
  rather than the codec MediaFormat in a later change, this change can
  be reverted.

Issue: #6601
PiperOrigin-RevId: 281264149
2019-11-22 15:07:52 +00:00
aquilescanta
95d0921114 Make LoadEventInfo a top level class
In order to reuse it in LoadErrorHandlingPolicy.

PiperOrigin-RevId: 281087397
2019-11-18 17:55:51 +00:00
olly
3515a5112d Release notes for 2.10.8
PiperOrigin-RevId: 281084720
2019-11-18 17:55:36 +00:00
kimvde
9b2917a9ae Add Java FLAC extractor
Seeking, live streams support and exposure of vorbis and ID3 data
are not part of this commit.

Issue: #6406
PiperOrigin-RevId: 281083332
2019-11-18 17:55:28 +00:00
andrewlewis
a5e14b4dae Fix byte order for HDR10+ static metadata
The implementation of writing HDR10+ static metadata assumed that the
application would use default (big endian) byte order for this metadata but
MediaCodec expects the order to match the specification CTA-861.3.

PiperOrigin-RevId: 281050806
2019-11-18 17:54:56 +00:00
krocard
5579cc89c6 Propagate end of stream received from OnFrameRenderedListener
Previously the renderer EOS (aka last frame rendered), was reported as soon
as the last encoded frame was queued in the codec renderer.
This leaded to EOS reported too early.

PiperOrigin-RevId: 280456277
2019-11-15 05:16:19 +00:00
tonihei
c8e7ecd367 Merge consecutive segments for downloading.
This speeds up downloads where segments have the same URL with different
byte ranges. We limit the merged segments to 20 seconds to ensure the download
progress of demuxed streams is roughly in line with the playable media duration.

Issue:#5978
PiperOrigin-RevId: 280410761
2019-11-15 05:16:11 +00:00
aquilescanta
51711a0c97 Fix MediaDrm leaks in OfflineLicenseHelper
PiperOrigin-RevId: 280176216
2019-11-15 05:16:03 +00:00
olly
20ab05103b First pass at finalizing 2.11.0 release notes
PiperOrigin-RevId: 280056790
2019-11-15 05:15:16 +00:00
ibaker
ddb70d96ad Require an end timecode in SSA and Subrip subtitles
SSA spec allows the lines in any order, so they must all have an end time:
http://moodub.free.fr/video/ass-specs.doc

The Matroska write-up of SubRip assumes the end time is present:
https://matroska.org/technical/specs/subtitles/srt.html

This will massively simplify merging issue:#6595

PiperOrigin-RevId: 279926730
2019-11-15 05:14:43 +00:00
andrewlewis
0351177611 Handle new signaling for E-AC3 JOC in DASH
Issue: #6636
PiperOrigin-RevId: 279666771
2019-11-15 05:13:31 +00:00
olly
a9ef9c46c8 Bump version to 2.11.0
Note: Release notes are not final.
PiperOrigin-RevId: 279125474
2019-11-15 05:12:58 +00:00
olly
87003b30fc Bump version to 2.10.7
PiperOrigin-RevId: 278658259
2019-11-05 18:36:21 +00:00
ibaker
07e93c15f9 Add support for subtitle files in the demo app
issue:#5523
PiperOrigin-RevId: 277927555
2019-11-05 16:16:53 +00:00
andrewlewis
a4e7274cca Update audio extension build configurations
- Fix FLAC extension build (currently broken due to use of std::array,
  but fixed by migrating to NDK r20).
- Move opus and ffmpeg extensions to NDK r20. For ffmpeg, upgrade to
  release 4.2 which requires using libswresample and updates to the
  build script.

Issue: #6601
PiperOrigin-RevId: 277924119
2019-11-05 16:16:38 +00:00
andrewlewis
656556b828 Clean up naming for GLSurfaceViews
PiperOrigin-RevId: 277896757
2019-11-05 16:15:29 +00:00
andrewlewis
fbea71b0fe Fix detection of Dolby Atmos in HLS
E-AC3 with JOC is signaled using the CHANNELS attribute for HLS:
https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices/hls_authoring_specification_for_apple_devices_appendices

PiperOrigin-RevId: 277680300
2019-11-05 16:13:41 +00:00
andrewlewis
d3933e5cac Recreate Opus decoder for stream change
The framework opus decoder discards some samples after a call to
flush(). Because we flush a decoder that is being retained across an
input format change, this means that the start of audio gets truncated
when transitioning to a new opus stream. See also
https://android.googlesource.com/platform/frameworks/av/+/refs/heads/android10-release/media/libstagefright/codecs/opus/dec/SoftOpus.cpp.

Avoid this by recreating opus decoders instead of flushing them. It
seems fine to do this for all opus decoders as reinitialization should
be cheap, OEM-provided implementations may also discard samples and
playback shouldn't be interrupted on reinitialization due to the
downstream AudioTrack buffer.

PiperOrigin-RevId: 277458759
2019-10-30 08:52:05 +00:00
aquilescanta
0f312561e5 Add shuffle and repeat modes to media session playback state invalidation
Which ensures both get updated when the MediaSessionConnector player
changes.

Issue:#6582
PiperOrigin-RevId: 277254889
2019-10-30 08:51:35 +00:00
samrobinson
b99203dada Post AudioFocusManager.onAudioFocusChange events to eventHandler.
PiperOrigin-RevId: 276452333
2019-10-30 08:49:09 +00:00
olly
7ccbc4c436 Remove VR code
- Leaving GvrAudioProcessor for now.
- Removing GvrPlayerActivity because it was never released. Also removing
  related UI classes. These were released, but it's unlikely anyone would
  have been using them directly.

PiperOrigin-RevId: 275822516
2019-10-30 08:47:06 +00:00
samrobinson
694ccf424b Added an ICY header workaround for unseekable MP3 streams.
Issue:#6537
PiperOrigin-RevId: 275477266
2019-10-18 17:43:21 +01:00
samrobinson
841b3a8bc7 Add AUDIO_BECOMING_NOISY handling to SimpleExoPlayer.
Feature enabled through the SimpleExoPlayer.setHandleAudioBecomingNoisy.

PiperOrigin-RevId: 274988924
2019-10-16 14:02:11 +01:00
olly
b71b9f7c58 Bump version to 2.10.6
PiperOrigin-RevId: 274534626
2019-10-14 13:57:41 +01:00
andrewlewis
1c66010b4a Add MediaFormat on video frame metadata listener
This is useful for apps that want to access HDR metadata that MediaCodec puts
in its output format.

PiperOrigin-RevId: 274169985
2019-10-13 12:41:47 +01:00
andrewlewis
5f71e86335 Handle legacy DASH audio channel configuration
Issue: #6523
PiperOrigin-RevId: 274160232
2019-10-13 12:41:24 +01:00
bachinger
674e92e1ee provide content description for the player view to make show/hide controls accessible
PiperOrigin-RevId: 274148026
2019-10-13 12:41:08 +01:00
sofijajvc
62618f24ec Remove copybara exclusions and add extension to the demo app
Issue: #3353
PiperOrigin-RevId: 273949689
2019-10-10 14:46:16 +01:00
ibaker
60566721d4 Enable ID3-in-EMSG for HLS streams
This supports both chunkless & traditional preparation

PiperOrigin-RevId: 273938344
2019-10-10 14:46:07 +01:00
sofijajvc
a96a82588e Update release notes for GL classes changes
PiperOrigin-RevId: 273937090
2019-10-10 14:45:58 +01:00
olly
b052ea9bed Parse Label elements for adaptation sets
Issue: #6297
PiperOrigin-RevId: 273297284
2019-10-07 16:32:50 +01:00
olly
c269890259 Define default colors as constants
It's confusing that app:played_color also modifies the colors
that derive from it, but the corresponding setter does not. It
seems generally clearer just to define constants.

PiperOrigin-RevId: 273249557
2019-10-07 16:31:55 +01:00
tonihei
4f640bc62e Add SequencableLoader.isLoading
This method allows the player to figure out whether we still have an ongoing
load even if LoadControl.shouldContinueLoading returns false.

PiperOrigin-RevId: 272445577
2019-10-02 21:30:07 +01:00
ibaker
f7b8d07cd2 Add specific error message if file-not-found for path with fragment or query
This doesn't change the current behaviour, just adds a clear error message
to the developer with instructions on how to avoid it.

Issue:#6470
PiperOrigin-RevId: 272405556
2019-10-02 21:29:45 +01:00
ibaker
6780b802e0 Pass the raw ICY metadata through IcyInfo
The ICY 'spec' isn't really clear/tight enough to do anything more
specific than this I think.

Issue:#6476
PiperOrigin-RevId: 272405322
2019-10-02 21:29:37 +01:00
samrobinson
f5873b8f00 WakeLock handling
Created the WakeLockManager for use in SimpleExoPlayer.
Added a setter in SimpleExoPlayer to adjust this functionality.

Issue:#5846
PiperOrigin-RevId: 272176998
2019-10-02 21:29:21 +01:00
tonihei
dd4f9bcaae Add Timeline.Window.isLive
This flag is currently merged into Window.isDynamic, which isn't always true
because
1. A window can be dynamic for other reasons (e.g. when the duration is still
missing).
2. A live stream can be become non-dynamic when it ends.

Issue:#2668
Issue:#5973
PiperOrigin-RevId: 271999378
2019-10-02 21:28:43 +01:00
sofijajvc
7c199eb1ad Move vpx constant for setting output renderer to common constants file
This will be used by both av1 and vp9 extensions.

PiperOrigin-RevId: 271949754
2019-10-02 21:28:05 +01:00
aquilescanta
b50da6d72e Add DefaultDrmSessionManager.Builder
Issue:#6334
Issue:#4721
Issue:#6334
Issue:#4867
PiperOrigin-RevId: 271577773
2019-10-02 21:27:35 +01:00
tonihei
004b9e8e8c Add EventListener.onPlaybackSuppressionReasonChanged
Adding this callback makes sense for completeness (we have similar callbacks
for all other playback state properties), and also to detect audio focus loss
while buffering which would currently trigger no callback because isPlaying
is still false.

Issue:#6203
PiperOrigin-RevId: 271347351
2019-10-02 21:26:41 +01:00
aquilescanta
cc8b774b41 Remove DefaultDrmSessionManager factory methods that enforce MediaDrm leaks
Inline invocations of these methods, which still leaks the MediaDrms.
However, it will be fixed once the DefaultDrmSessionManager API is finalized
and ExoMediaDrm.Providers are introduced.

Issue:#4721
PiperOrigin-RevId: 270681467
2019-10-02 21:25:31 +01:00
christosts
5695bae9d8 Remove DataSpec.FLAG_ALLOW_ICY_METADATA
Remove the flag DataSpec.FLAG_ALLOW_ICY_METADATA. Instead, set the
header IcyHeaders.REQUEST_HEADER_ENABLE_METADATA_NAME in the DataSpec
httpRequestHeaders.

BUG:134034248
PiperOrigin-RevId: 270662676
2019-10-02 21:25:07 +01:00
andrewlewis
258fff422a Publish SurfaceControl demo
Issue: #677
Issue: #5428
PiperOrigin-RevId: 270466031
2019-09-22 00:16:15 +01:00
olly
1feb03db2d Pull HLS audio transition fix into 2.10.5
PiperOrigin-RevId: 270327562
2019-09-22 00:15:51 +01:00
olly
d67926ef2b Pull focus fix into 2.10.5
PiperOrigin-RevId: 270295428
2019-09-20 18:12:00 +01:00
olly
600b5181a3 Add 2.10.5 release date
PiperOrigin-RevId: 270295080
2019-09-20 18:11:52 +01:00
tonihei
b0e2ce40d6 Add dates to releases in RELEASENOTES.
PiperOrigin-RevId: 270276830
2019-09-20 17:21:01 +01:00
aquilescanta
e5f9a858d3 When the HLS container format is not packed audio, reset timestmap offset
Issue:#6444
PiperOrigin-RevId: 270252126
2019-09-20 17:21:01 +01:00
tonihei
31b9280e0e Add track selection option to use accessiblity captioning manager settings
This option allows to set the preferred text language and role flags based
on the user's accessiblity captioning settings.

Issue:#5749
PiperOrigin-RevId: 270233205
2019-09-20 17:21:01 +01:00
bachinger
826fe3ac27 adjust and extend the documentation around playlist API in the developer guide
PiperOrigin-RevId: 270002330
2019-09-20 17:20:44 +01:00
olly
78ef6c6496 Update release notes
- Fatal error handling fix is now in 2.10.5

PiperOrigin-RevId: 269904669
2019-09-20 16:52:54 +01:00
olly
f4f908408b Update release notes
- Remove HTTP/2 Fix note, since the issue is still present
- Add release note for fatal error handling fix

PiperOrigin-RevId: 269902736
2019-09-18 23:23:36 +01:00
olly
d22794111c Improve old release notes
PiperOrigin-RevId: 269781924
2019-09-18 23:23:29 +01:00
aquilescanta
9863cd33fa Avoid retrying fatal errors
Also clear fatal errors on seek operations

PiperOrigin-RevId: 269780886
2019-09-18 23:23:21 +01:00
olly
75b9b11e20 Bump version to 2.10.5
PiperOrigin-RevId: 269582832
2019-09-18 23:23:04 +01:00
tonihei
e784d2c507 Add Player.isPlaying and Player.getPlaybackSuppressionReason
The player may suppress playback when waiting for audio focus even if the
state==Player.READY. There is currently no getter or callback to obtain this
piece of information for UI updates or analytics.

Also, it's a important derived state to know whether the playback position is
advancing. Add isPlaying and the corresponding callback to allow retrieving
this information more easily.

Issue:#6203
PiperOrigin-RevId: 268921721
2019-09-16 23:31:20 +01:00
olly
1d3d92ee4b Upgrade to OkHttp 3.12.5
Issue: #4078
PiperOrigin-RevId: 268887744
2019-09-13 13:51:35 +01:00
kimvde
73b922ee59 Add capture policy option to AudioAttributes
PiperOrigin-RevId: 268035329
2019-09-10 10:28:01 +01:00
andrewlewis
e21467f653 Fix Dolby Vision fallback to AVC and HEVC
PiperOrigin-RevId: 267979637
2019-09-10 10:27:53 +01:00
andrewlewis
f1ccb47c3b Fix decoder selection for E-AC3 JOC streams
Issue: #6398
PiperOrigin-RevId: 267563795
2019-09-10 10:27:15 +01:00
tonihei
77ed930251 Add Timeline.Window.uid.
This allows to uniquely identify a window within a Timeline. The value is set
correctly for all Window instances, but is not used anywhere yet.

PiperOrigin-RevId: 267556516
2019-09-10 10:27:07 +01:00
andrewlewis
b77688533b Fix init data handling for FLAC in MP4
Issue: #6396
PiperOrigin-RevId: 267536336
2019-09-10 10:26:51 +01:00
christosts
260db03167 Use DataSpec request params in HttpDataSource impls
Include Dataspec.httpRequestHeaders in CronetDataSource,
and OkHttpDataSource. Updated documentation of
HttpDataSource.open() to suggest that it should set request
headers (in decreasing priority) from (1) the passed DataSpec,
(2) parameters set with setRequestProperty() and (3) default
parameters set in the HttpDataSource.Factory. No mechanism
has been put in place to enforce this.

PiperOrigin-RevId: 266895574
2019-09-05 10:48:45 +01:00
kimvde
82d10e2ea8 Bypass sniffing for single extractor
Sniffing is performed in ProgressiveMediaPeriod even if a single
extractor is provided. Skip it in that case to improve performances.

Issue:#6325
PiperOrigin-RevId: 266766373
2019-09-05 10:44:18 +01:00
tonihei
33ef4184e8 Publish test utils modules as release artificats.
This allows external users to easily write unit tests involving ExoPlayer
instances.

Issue:#6267
PiperOrigin-RevId: 266741790
2019-09-05 10:43:52 +01:00
Oliver Woodman
51ed8ead6d Merge pull request #6303 from ittiam-systems:rtmp-3.1.0
PiperOrigin-RevId: 266407058
2019-09-01 22:02:38 +01:00
kimvde
48555550d7 Surface MediaCodecInfo methods added in Android Q
- Surface information provided by methods isHardwareAccelerated,
  isSoftwareOnly and isVendor added in Android Q in MediaCodecInfo
  class.
- Estimate this information based on the codec name for earlier API
  levels.

Issue:#5839
PiperOrigin-RevId: 266334850
2019-08-30 14:42:22 +01:00
olly
f5c1e8b5e3 Add HttpDataSource.getResponseCode to provide the status code associated with the most recent HTTP response.
PiperOrigin-RevId: 266218104
2019-08-30 14:42:21 +01:00
tonihei
d1084f2728 Do not compare bitrates of audio tracks with different languages.
The last selection criteria is the audio bitrate to prefer higher-quality
streams. We shouldn't apply this criterium though if the languages of the
tracks are different.

Issue:#6335
PiperOrigin-RevId: 265064756
2019-08-23 17:04:16 +01:00
tonihei
6a1331f125 Gracefully handle chunkful preparation without chunks.
This situation happens if the first chunk to load is already behind the end
of the stream. In this case, the preparation never completes because
HlsSampleStreamWrapper gets stuck in a prepared=false and loadingFinished=true
state.

Gracefully handle this situation by attempting to load the last chunk if still
unprepared to ensure that track information is obtained as far as possible.
Otherwise, it wouldn't be possible to play anything even when seeking back.

Issue:#6314
PiperOrigin-RevId: 264599465
2019-08-23 17:02:10 +01:00
andrewlewis
f0aae7aee5 Support out-of-band HDR10+ metadata for VP9
Extract supplemental data from block additions in WebM/Matroska.

Allow storing supplemental data alongside samples in the SampleQueue and write
it as a separate field in DecoderInputBuffers.

Handle supplemental data in the VP9 extension by propagating it to the output
buffer.

Handle supplemental data for HDR10+ in MediaCodecVideoRenderer by passing it to
MediaCodec.setParameters, if supported by the component.

PiperOrigin-RevId: 264582805
2019-08-23 17:01:55 +01:00
tonihei
20fd4e16d2 Deprecate setTag parameter in Timeline.getWindow.
There is no point in having this parameter as the tag should always be a single
immutable object instantiated at the time the Timeline is created or earlier.

So there is no preformance benefit and it's error-prone in case people
forget to set setTag=true.

PiperOrigin-RevId: 264117041
2019-08-23 17:00:53 +01:00
tonihei
652c2f9c18 Advance playing period even if the next one isn't prepared yet.
This solves various issues around event association for buffering and
error throwing around period discontinuities.

The main changes are:
 - Logic around being "ready" at the end of a period no longer checks if the
   next period is prepared.
 - Advancing the playing period no longer checks if the next one is prepared.
 - Prepare errors are always thrown for the playing period.

This changes the semantics and assumptions about the "playing" period:
 1. The playing period can no longer assumed to be prepared.
 2. We no longer have a case where the queue is non-empty and the playing or
    reading periods are unassigned (=null).
Most other code changes ensure that these changed assumptions are handled.

Issue:#5407
PiperOrigin-RevId: 263776304
2019-08-23 17:00:37 +01:00
aquilescanta
6a122f4740 Document injection of DrmSessionManagers into MediaSources instead of Renderers
PiperOrigin-RevId: 263532499
2019-08-15 14:41:52 +01:00
tonihei
cd4571161a Add builders for SimpleExoPlayer and ExoPlayer.
The current ExoPlayerFactory is growing too big and usage becomes increasingly
complicated because it's not possible to set individual components without
specifying many other defaults.

Adding new builder classes makes building easier and more future-proof.

PiperOrigin-RevId: 263339078
2019-08-15 14:41:51 +01:00
tonihei
6dd3d49093 Change default video buffer size to 32MB.
The current max video buffer is 13MB which is too small for high quality
streams and doesn't allow the DefaultLoadControl to buffer up to its default
max buffer time of 50 seconds.

Also move util method and constants only used by DefaultLoadControl into this
class.

PiperOrigin-RevId: 263328088
2019-08-15 14:41:51 +01:00
tonihei
e5fcee40e5 Make reset on network change the default.
PiperOrigin-RevId: 262886490
2019-08-15 14:22:46 +01:00
tonihei
6617862f0b Add allowAudioMixedChannelCountAdaptiveness parameter to DefaultTrackSelector.
We already allow mixed mime type and mixed sample rate adaptation on request,
so for completeness, we can also allow mixed channel count adaptation.

Issue:#6257
PiperOrigin-RevId: 261930046
2019-08-09 18:33:01 +01:00
tonihei
17a9030e1d Update stale TrackSelections in chunk sources when keeping the streams.
If we keep streams in chunk sources after selecting new tracks, we also keep
a reference to a stale disabled TrackSelection object. Fix this by updating
the TrackSelection object when keeping the stream. The static part of the
selection (i.e. the subset of selected tracks) stays the same in all cases.

Issue:#6256
PiperOrigin-RevId: 261696082
2019-08-05 20:27:24 +01:00
olly
c9b73cba8c Update release notes
PiperOrigin-RevId: 261651655
2019-08-05 20:26:44 +01:00
tonihei
790deb71db Check if controller is used when performing click directly.
Issue:#6260
PiperOrigin-RevId: 261647858
2019-08-05 10:55:23 +01:00
olly
fb0481c520 Bump annotations dependency + update release notes
PiperOrigin-RevId: 261353271
2019-08-02 19:04:56 +01:00
andrewlewis
5eab519925 Revert to using header bitrate for CBR MP3s
A previous change switched to calculation of the bitrate based on the
first MPEG audio header in the stream. This had the effect of fixing
seeking to be consistent with playing from the start for streams where
every frame has the same padding value, but broke streams where the
encoder (correctly) modifies the padding value to match the declared
bitrate in the header.

Issue: #6238
PiperOrigin-RevId: 261163904
2019-08-01 20:40:10 +01:00
olly
42d3ca273b Propagate non-standard MIME type aliases
Issue: #5938
PiperOrigin-RevId: 261150349
2019-08-01 20:39:51 +01:00
olly
4c40878b6b Shorten data length if it exceeds length of input
Issue: #6241
PiperOrigin-RevId: 261126968
2019-08-01 20:39:33 +01:00
Oliver Woodman
b57aa34b66 Merge pull request #6239 from ittiam-systems:vorbis-picture-parse
PiperOrigin-RevId: 261087432
2019-08-01 20:37:21 +01:00
tonihei
561949a225 Remove AnalyticsCollector.Factory.
This factory was only needed in the past when we didn't have
AnalyticsCollector.setPlayer. Code becomes easier to use without this factory.

PiperOrigin-RevId: 261081860
2019-08-01 20:36:40 +01:00
andrewlewis
3051e5e9ad Ensure the SilenceMediaSource position is in range
Issue: #6229
PiperOrigin-RevId: 260500986
2019-07-29 21:28:06 +01:00
olly
d77d661e52 Default viewport constraints to match primary display
PiperOrigin-RevId: 260479923
2019-07-29 21:27:46 +01:00
olly
09835c454b Bump version to 2.10.4
PiperOrigin-RevId: 260164426
2019-07-27 22:54:38 +01:00
tonihei
e84d88e90f Simplify and improve text selection logic.
This changes the logic in the following ways:
 - If no preferred language is matched, prefer better scores for the selected
   audio language.
 - If a preferred language is matched, always prefer the better match
   irrespective of default or forced flags.
 - If a preferred language score and the isForced flag is the same, prefer
   tracks with a better selected audio language match.

PiperOrigin-RevId: 259707430
2019-07-24 12:33:55 +01:00
Oliver Woodman
0e7f015020 Merge pull request #6042 from Timbals:dev-v2
PiperOrigin-RevId: 258812820
2019-07-18 19:40:36 +01:00
tonihei
aeb2fefe48 Further language normalization tweaks for API < 21.
1. Using the Locale on API<21 doesn't make any sense because it's a no-op
   anyway. Slightly restructured the code to avoid that.
2. API<21 often reports languages with non-standard underscores instead of
   dashes. Normalize that too.
3. Some invalid language tags on API>21 get normalized to "und". Use original
   tag in such a case.

Issue:#6153
PiperOrigin-RevId: 258773463
2019-07-18 19:39:33 +01:00
tonihei
c779e84cbb Switch language normalization to 2-letter language codes.
2-letter codes (ISO 639-1) are the standard Android normalization and thus we
should prefer them to 3-letter codes (although both are technically allowed
according the BCP47).

This helps in two ways:
 1. It simplifies app interaction with our normalized language codes as the
    Locale class makes it easy to convert a 2-letter to a 3-letter code but
    not the other way round.
 2. It better normalizes codes on API<21 where we previously had issues with
    language+country codes (see tests).
 3. It allows us to normalize both ISO 639-2/T and ISO 639-2/B codes to the same
    language.

PiperOrigin-RevId: 258729728
2019-07-18 14:15:50 +01:00
aquilescanta
80d5dabd52 Fix DataSchemeDataSource re-opening and range requests
Issue:#6192
PiperOrigin-RevId: 258592902
2019-07-18 14:15:31 +01:00
tonihei
049f3cf5cd Keep default start position (TIME_UNSET) as content position for preroll ads.
If we use the default start position, we currently resolve it immediately
even if we need to play an ad first, and later try to project forward again
if we believe that the default start position should be used.

This causes problems if a specific start position is set and the later
projection after the preroll ad shouldn't take place.

The problem is solved by keeping the content position as TIME_UNSET (= default
position) if an ad needs to be played first. The content after the ad can
then be resolved to its current default position if needed.

PiperOrigin-RevId: 258583948
2019-07-18 14:14:52 +01:00
tonihei
01376443b3 Add MediaSource.enable/disable.
These methods helps to indicate that a media source isn't used to create new
periods in the immediate term and thus limited resources can be released.

PiperOrigin-RevId: 258373069
2019-07-18 14:13:36 +01:00
andrewlewis
1d4d105174 Compile with SDK 29 (Android Q)
PiperOrigin-RevId: 258110603
2019-07-18 14:11:50 +01:00
tonihei
3fe0b1a6fe Rename SourceInfoRefreshListener to MediaSourceCaller.
This better reflects its usage as a caller identifier and not just a listener.

PiperOrigin-RevId: 257827188
2019-07-14 16:25:18 +01:00
Oliver Woodman
56a922c121 Merge pull request #6151 from ittiam-systems:bug-5527
PiperOrigin-RevId: 257668797
2019-07-14 16:24:02 +01:00
bachinger
49a2e5a5cb add manifest to Timeline.Window
- Remove manifest argument from callbacks of Player.EventListener and
  SourceInfoRefreshListener. Instead make it accessible through
  Player.getCurrentManifest() and Timeline.Window.manifest.
- Fix all MediaSource implementation to include the manifest in the
  Timeline instead of passing it to the SourceInfoRefreshListener.
- Refactor ExoPlayerTestRunner, FakeTimeline, FakeMediaSource to
  reflect these changes and make tests pass.

PiperOrigin-RevId: 257359662
2019-07-14 16:20:45 +01:00
bachinger
877923ce5f fix typo in release notes
PiperOrigin-RevId: 257185017
2019-07-09 16:15:55 +01:00
olly
65d9c11027 Bump version to 2.10.3
PiperOrigin-RevId: 257161518
2019-07-09 11:54:39 +01:00
tonihei
e3af045adb CEA608: Fix repeated Special North American chars.
We currently handle most the control code logic after handling special
characters. This includes filtering out repeated control codes and checking
for the correct channel. As the special character sets are control codes as well,
these checks should happen before parsing the characters.

Issue:#6133
PiperOrigin-RevId: 256993672
2019-07-08 19:42:09 +01:00
tonihei
81e7b31be1 Apply playback parameters in a consistent way.
Currently, we sometimes apply new playback parameters directly and sometimes
through the list of playbackParameterCheckpoints. Only when using the checkpoints,
we also reset the offset and corresponding position for speedup position
calculation. However, these offsets need to be changed in all cases to prevent
calculation errors during speedup calculation[1].

This change channels all playback parameters changes through the checkpoints to
ensure the offsets get updated accordingly. This fixes an issue introduced in
31911ca54a.

[1] - The speed up is calculated using the ratio of input and output bytes in
SonicAudioProcessor.scaleDurationForSpeedUp. Whenever we set new playback
parameters to the audio processor these two counts are reset. If we don't reset
the offsets too, the scaled timestamp can be a large value compared to the input
and output bytes causing massive inaccuracies (like the +20 seconds in the
linked issue).

Issue:#6117
PiperOrigin-RevId: 256533780
2019-07-05 17:32:21 +01:00
olly
6febc88dce FLV extractor fixes
1. Only output video starting from a keyframe
2. When calculating the timestamp offset to adjust live streams to start
   at t=0, use the timestamp of the first tag from which a sample is actually
   output, rather than just the first audio/video tag. The test streams in
   the referenced GitHub issue start with a video tag whose packet type is
   AVC_PACKET_TYPE_SEQUENCE_HEADER (i.e. does not contain a sample) and whose
   timestamp is set to 0 (i.e. isn't set). The timestamp is set correctly on
   tags that from which a sample is actually output.

Issue: #6111
PiperOrigin-RevId: 256147747
2019-07-02 17:49:24 +01:00
andrewlewis
9905432546 Fix ad pod index offset calculation without preroll
Issue: #5928
PiperOrigin-RevId: 254379085
2019-06-21 18:23:57 +01:00
Oliver Woodman
ae969397bb Merge pull request #6055 from xirac:dev-v2
PiperOrigin-RevId: 254182080
2019-06-21 18:22:42 +01:00
olly
0b7227ece5 Release notes language tweaks
PiperOrigin-RevId: 254156143
2019-06-21 18:22:00 +01:00
olly
9308ff26bc Update release notes for 2.10.2 cherrypicks
PiperOrigin-RevId: 253808562
2019-06-18 17:55:03 +01:00
tonihei
9ed7b42af6 Prevent negative renderer timestamps when seeking back.
We are currently queuing periods in a way such that the new start position
lines up with the end of the previous period (to ensure continuous playback).
However, if the start position of the new period is larger than the total of
all previously played period durations, we may end up with negative renderer
timestamps when seeking back to the beginning of this new period. Negative
timestamps should be avoided as most decoders have problems handling them
correctly.

This change forces a renderer reset if we detect such a seek to a negative
renderer time and also resets the renderer offset to 0 every time all
renderers are disabled, as this is the only time where we can savely change
the offset of an existing media period.

Also, if playback starts with an ad, we choose the content position as
renderer offset to prevent the whole issue from occurring for the seek-behind-
midroll case.

Issue:#6009
Issue:#5323
PiperOrigin-RevId: 253790054
2019-06-18 17:49:29 +01:00
aquilescanta
5aeaa6e8bf Fix application of maxAudioBitrate for adaptive audio track groups
Issue:#6006
PiperOrigin-RevId: 253781533
2019-06-18 17:48:51 +01:00
tonihei
0a74e36f7b Gracefully handle revoked ACCESS_NETWORK_STATE permission.
This permission has normal access right and can't be revoked by the user.
However, an app can choose to revoke it when using ExoPlayer, e.g. if
no network is required and the app doesn't want to list this permission.

Support this use case by gracefully catching the exception in the relevant
places.

Issue:#6019
PiperOrigin-RevId: 253759332
2019-06-18 17:47:56 +01:00
Toni
da1f3f01fa Merge pull request #6036 from angelrc96:dev-v2
PiperOrigin-RevId: 253228214
2019-06-14 16:50:13 +01:00
tonihei
3bff79f56f Wrap MediaCodec exceptions in DecoderException and report as renderer error.
We currently report MediaCodec exceptions as unexpected exceptions instead of
as renderer error. All such exceptions are now wrapped in a new DecoderException
to allow adding more details to the exception.

PiperOrigin-RevId: 252054486
2019-06-14 16:33:47 +01:00
aquilescanta
8bd2b5b3d7 Fix detection of current window index in CastPlayer
Issue:#5955
PiperOrigin-RevId: 251616118
2019-06-06 17:35:25 +01:00
eguven
e4feaa68f2 Add VR player demo
PiperOrigin-RevId: 251460113
2019-06-06 17:35:06 +01:00
tonihei
be88499615 Display last frame when seeking to end of stream.
We currently don't display the last frame because the seek time is behind the
last frame's timestamps and it's thus marked as decodeOnly.

This case can be detected by checking whether all data sent to the codec is
marked as decodeOnly at the time we read the end of stream signal. If so, we
can re-enable the last frame. This should work for almost all cases because the
end-of-stream signal is read in the same feedInputBuffer loop as the last
frame and we therefore haven't released the last frame buffer yet.

Issue:#2568
PiperOrigin-RevId: 251425870
2019-06-06 17:34:47 +01:00
olly
871a88a921 Clean up release notes
PiperOrigin-RevId: 251269746
2019-06-03 19:16:42 +01:00
olly
a9de1477ee Bump to 2.10.2
PiperOrigin-RevId: 251216822
2019-06-03 19:15:42 +01:00
tonihei
090f359895 Make parallel adaptive track selection more robust.
Using parallel adaptation for Formats without bitrate information currently
causes an exception. Handle this gracefully and also cases where all formats
have the same bitrate.

Issue:#5971
PiperOrigin-RevId: 250682127
2019-05-30 15:28:23 +01:00
eguven
f9d6f314e2 Fix misreporting cached bytes when caching is paused
When caching is resumed, it starts from the initial position. This makes
more data to be reported as cached.

Issue:#5573
PiperOrigin-RevId: 250678841
2019-05-30 15:28:23 +01:00
tonihei
fd1179aaa1 Add remaining PlaybackStatsListener metrics.
This adds all the non-playback-state metrics, like format, error, bandwidth and
renderer performance metrics.

PiperOrigin-RevId: 250668854
2019-05-30 15:28:23 +01:00
olly
6e7012413b Keep controller visible on d-pad key events
PiperOrigin-RevId: 250661977
2019-05-30 15:26:32 +01:00
eguven
42ba6abf5a Fix CacheUtil.cache() use too much data
cache() opens all connections with unset length to avoid position errors.
This makes more data then needed to be downloading by the underlying
network stack.

This fix makes makes it open connections for only required length.

Issue:#5927
PiperOrigin-RevId: 250546175
2019-05-30 15:26:32 +01:00
aquilescanta
71418f9411 Fix TTML bitmap subtitles
+ Use start for anchoring, instead of center.
+ Add the height to the TTML bitmap cue rendering layout.

Issue:#5633
PiperOrigin-RevId: 250519710
2019-05-30 15:26:32 +01:00
andrewlewis
90325c699e Allow enabling decoder fallback in DefaultRenderersFactory
Also allow enabling decoder fallback with MediaCodecAudioRenderer.

Issue: #5942
PiperOrigin-RevId: 250301422
2019-05-30 15:25:28 +01:00
aquilescanta
3314391932 Add basic DRM support to CastPlayer's demo app
PiperOrigin-RevId: 249624829
2019-05-30 15:09:52 +01:00
tonihei
cfefdbc134 Release DownloadHelper automatically if preparation failed.
This prevents further unexpected updates if the MediaSource happens to
finish its preparation at a later point.

Issue:#5915
PiperOrigin-RevId: 249439246
2019-05-23 13:29:49 +01:00
olly
37fc1d879d Propagate attributes to DefaultTimeBar
Issue: #5765
PiperOrigin-RevId: 249251150
2019-05-23 13:26:50 +01:00
tonihei
9aeaf2dbb0 Add ResolvingDataSource for just-in-time resolution of DataSpecs.
Issue:#5779
PiperOrigin-RevId: 249234058
2019-05-21 13:53:14 +01:00
bachinger
a458635540 Add ProgressUpdateListener
Issue: #5834
PiperOrigin-RevId: 249067445
2019-05-21 13:52:14 +01:00
andrewlewis
bfeec25b2a Add SilenceMediaSource
Issue: #5735
PiperOrigin-RevId: 248745617
2019-05-20 15:13:36 +01:00
bachinger
128ded5ba0 add playWhenReady to prepareXyz methods of PlaybackPreparer.
Issue: #5891
PiperOrigin-RevId: 248541827
2019-05-20 15:13:17 +01:00
Oliver Woodman
92532d3ac5 Merge pull request #5617 from loki666:workmanager
PiperOrigin-RevId: 248533906
2019-05-20 15:12:57 +01:00
olly
b5a512b673 Bump release to 2.10.1 and update release notes
PiperOrigin-RevId: 248503235
2019-05-16 13:40:23 +01:00
olly
9d450e52f2 Allow empty values in ICY metadata
Issue: #5876
PiperOrigin-RevId: 248119726
2019-05-15 18:13:49 +01:00
bachinger
14915fd148 Fix rendering DVB subtitle on API 28.
Issue: #5862
PiperOrigin-RevId: 248112524
2019-05-15 18:13:31 +01:00
aquilescanta
50c9ae0efc Assume that encrypted content requires secure decoders in renderer support checks
Issue:#5568
PiperOrigin-RevId: 247973411
2019-05-15 18:13:12 +01:00
olly
0612d9f6d5 Allow line terminators in ICY metadata
Issue: #5876
PiperOrigin-RevId: 247935822
2019-05-15 18:12:35 +01:00
andrewlewis
a849f43e6d Work around broken raw audio decoder on Oppo R9
Issue: #5782
PiperOrigin-RevId: 247934223
2019-05-15 18:12:16 +01:00
tonihei
23fa53bf0b Add setCodecOperatingRate workaround for 48KHz audio on ZTE Axon7 mini.
Issue:#5821
PiperOrigin-RevId: 247621164
2019-05-15 18:10:26 +01:00
tonihei
34dd4b1441 Fix NPE in HLS deriveAudioFormat.
Issue:#5868
PiperOrigin-RevId: 247613811
2019-05-15 18:10:07 +01:00
tonihei
b3ae1d3fed Add option to clear all downloads.
Adding an explicit option to clear all downloads prevents repeated database
access in a loop when trying to delete all downloads.

However, we still create an arbitrary number of parallel Task threads for this
and seperate callbacks for each download.

PiperOrigin-RevId: 247234181
2019-05-15 18:08:08 +01:00
Oliver Woodman
faecef0bef Merge pull request #5807 from zsmatyas:dev-v2
PiperOrigin-RevId: 246132620
2019-05-02 13:04:34 +01:00
aquilescanta
f64011ae04 Prevent index out of bounds exceptions in some live HLS scenarios
Can happen if the load position falls behind in every playlist and
when we try to load the next segment, the adaptive selection logic
decides to change variant.

Issue:#5816
PiperOrigin-RevId: 245923006
2019-04-30 22:07:28 +01:00
olly
880f403181 Fix line break
PiperOrigin-RevId: 245448908
2019-04-30 22:05:51 +01:00
eguven
3e519824ff Downloading documentation
PiperOrigin-RevId: 245443109
2019-04-26 18:35:34 +01:00
andrewlewis
1bc279795b Log warnings when extension libraries can't be used
Issue: #5788
PiperOrigin-RevId: 245440858
2019-04-26 18:35:15 +01:00
olly
61f28f8107 Link blog post from release notes
PiperOrigin-RevId: 245411528
2019-04-26 18:34:55 +01:00
tonihei
21b2a471bb Toggle playback controls according to standard Android click handling.
We currently toggle the view in onTouchEvent ACTION_DOWN which is non-standard
and causes problems when used in a ViewGroup intercepting touch events.

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

Issue:#5784
PiperOrigin-RevId: 245219728
2019-04-26 18:32:42 +01:00
tonihei
9725132e3c Update default min duration for playbacks with video to match max duration.
Experiments show this is beneficial for rebuffers with only minor impact
on battery usage.

Configurations which explicitly set a minimum buffer duration are unaffected.

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

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

Issue: #2446
PiperOrigin-RevId: 244812402
2019-04-26 18:27:53 +01:00
aquilescanta
4ea2463856 Avoid selecting a forced text track that doesn't match the audio selection
Assuming there is no text language preference.

PiperOrigin-RevId: 244176667
2019-04-18 15:18:48 +01:00
andrewlewis
2347bd2c99 Prioritize decoders with format support
PiperOrigin-RevId: 244167456
2019-04-18 15:17:14 +01:00
olly
c9470296ab Fix playback of badly clipped MP3 streams
Issue: #5772
PiperOrigin-RevId: 243987497
2019-04-18 15:14:23 +01:00
olly
10f3b8db6e Update release notes for 2.10 branch cut
PiperOrigin-RevId: 243821394
2019-04-18 15:12:47 +01:00
borrelli
0be4bee25f Add "setCustomErrorMessage" override that allows including an extras bundle with a custom error.
PiperOrigin-RevId: 243807109
2019-04-16 16:41:49 +01:00
borrelli
9fc3ea79a1 Add ability to register/unregister custom CommandReceivers.
PiperOrigin-RevId: 243799572
2019-04-16 15:28:57 +01:00
aquilescanta
e9a7d47f62 Move the RELEASENOTES entry for PlayReady's LA_URL workaround from HLS to DRM
PiperOrigin-RevId: 243618907
2019-04-16 15:26:24 +01:00
olly
18dd3fdb46 Bump release to 2.10.0 and update release notes
PiperOrigin-RevId: 243592790
2019-04-16 15:25:47 +01:00
aquilescanta
936bc244b6 Add an HLS metadata entry sublcass to populate HLS track formats
Include information to facilitate adaptive track selection in HLS.

PiperOrigin-RevId: 243238232
2019-04-13 01:41:23 +01:00
andrewlewis
53934c13b2 Select non-primary tunneling decoder
Issue: #3100
Issue: #5547
PiperOrigin-RevId: 243181217
2019-04-13 01:40:43 +01:00
andrewlewis
401e20d9c8 Signal fallback via renderer constructor
Remove MediaCodecSelector.DEFAULT_WITH_FALLBACK, as codec selectors
will need to be able to return a list of decoder infos even when not
using fallback in a later change. Instead signal that fallback should
be used via a renderer constructor.

Fallback is always disabled for audio.

PiperOrigin-RevId: 242454172
2019-04-13 01:33:47 +01:00
bachinger
baf00406c0 Provide option to include next/prev button in lock screen/compact mode.
Issue: #5616
PiperOrigin-RevId: 242452686
2019-04-13 01:33:28 +01:00
tonihei
346c72c00e Move PriorityTaskManager from DefaultLoadControl to SimpleExoPlayer.
The priority task manager only needs to listen to loading state changes and
is independent of the rest of DefaultLoadControl. This also fixes problems
where the player stops loading without consultin the LoadControl.

PiperOrigin-RevId: 242098374
2019-04-05 21:14:09 +01:00
bachinger
b10f4023f0 handle meta atom as a full box when parsing mp4
Issues: #5698, #5694
PiperOrigin-RevId: 241762106
2019-04-05 21:12:16 +01:00
andrewlewis
9dc22c3086 Enable HDMV DTS stream detection if a flag is set
Issue: #5330
PiperOrigin-RevId: 241381723
2019-04-01 21:06:59 +01:00
bachinger
e612511afc take byte offset into account when unsynchronizing an id3 frame
Issue #5673

PiperOrigin-RevId: 241328598
2019-04-01 20:32:40 +01:00
tonihei
5fd4fddfac Use system Locale language to select audio track.
If no track matches the preferred language or no preferred language is provided,
use the system Locale language as the next decision criterion.

PiperOrigin-RevId: 241322703
2019-04-01 20:32:21 +01:00
aquilescanta
129a64c477 Use getItemIds to get the actual size of the Cast media queue
Issue:#4964
PiperOrigin-RevId: 241311763
2019-04-01 20:32:01 +01:00
olly
592b5eafee Support multiple CC channels in DASH
Issue: #5656
PiperOrigin-RevId: 241235377
2019-04-01 20:31:18 +01:00
tonihei
b0bb6ec8a5 Allow to set selection reason and data when specifying an override.
It's currently very difficult to actually set a reason for track selection
triggered by a SelectionOverride. It would require creating a new custom
TrackSelection.Factory where the reason gets injected somehow before the
override is specified on the player.

Simplify this whole procedure by allowing to set the reason directly and
forward this reason to all fixed selections created based on this override.

PiperOrigin-RevId: 240114942
2019-03-26 10:41:00 +00:00
Toni
5da4c67c8a Merge pull request #5303 from DolbyLaboratories:dev-v2-ac4
PiperOrigin-RevId: 239957730
2019-03-26 10:40:18 +00:00
olly
77d597de5f Parse CHARACTERISTICS attribute for EXT-X-MEDIA tags
PiperOrigin-RevId: 239844963
2019-03-22 19:57:01 +00:00
tonihei
e5aed73fba Switch format language tag to use full BCP 47 codes.
This allows to distinguish between regional variants and scripts.

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

PiperOrigin-RevId: 239783115
2019-03-22 19:56:25 +00:00
tonihei
3543116da4 Prevent seeking when ICY metadata is present.
Any seek map with non-zero offsets breaks playback with ICY metadata as
the metadata is no longer read from the correct position.

Issue:#5658
PiperOrigin-RevId: 239605839
2019-03-22 19:56:06 +00:00
Oliver Woodman
a86a9137be Merge pull request #5578 from szaboa:dev-v2-5529
PiperOrigin-RevId: 239398940
2019-03-20 23:28:28 +00:00
aquilescanta
c81c14ae86 Work around lack of LA_URL attributes in PlayReady key requests init data
PiperOrigin-RevId: 239066912
2019-03-20 23:26:49 +00:00
olly
2959b5f9c2 Roll forward of 238625384.
PiperOrigin-RevId: 238666870
2019-03-20 23:26:49 +00:00
olly
a291d6221f Automated g4 rollback of changelist 238625384.
*** Original change description ***

Allow exoplayer/v2 mockito2

***

PiperOrigin-RevId: 238626401
2019-03-20 23:26:49 +00:00
olly
07702cecdd Allow exoplayer/v2/ mockito2
PiperOrigin-RevId: 238625384
2019-03-20 23:26:10 +00:00
andrewlewis
7acc0ee798 Fix ProgressiveMediaSource DefaultExtractorsFactory proguarding
PiperOrigin-RevId: 237900673
2019-03-15 04:52:19 +00:00
tonihei
d92973dbe2 Add release notes for time bar changes.
PiperOrigin-RevId: 237416206
2019-03-15 04:50:51 +00:00
tonihei
2ae07936ba Handle !resetPosition as initial seek position.
The flag in ExoPlayer.prepare is documented as keeping the current window
index and window position. We are currently using the current period UID and
period position instead. This causes problems when the media source is changed
but the position is not reset.

Using the initial seek position instead ensures we actually use the window
index and position.

Issue:#5520
PiperOrigin-RevId: 236101024
2019-03-06 17:29:18 +00:00
tonihei
377e550d0f Improve new error type documentation and prevent NPE in error listener.
Adding new error types may cause issues when listeners assume a fixed set of
error types and don't handle arbitrary defaults.

Fixing error handling in one case and improving documentation to make people
aware of the issue.

PiperOrigin-RevId: 236093265
2019-03-06 17:29:18 +00:00
bachinger
e8077fb3f4 honour shuffle order when publishing queue to media session
Issue #5360

PiperOrigin-RevId: 235196177
2019-03-06 16:54:26 +00:00