Commit graph

2547 commits

Author SHA1 Message Date
bachinger
63d1086715 Merge pull request #6696 from phhusson:fix/nullable-selection-override
PiperOrigin-RevId: 283347700
2019-12-04 09:59:01 +00:00
olly
6c65c27e9b Remove nullness blacklist for UI module
PiperOrigin-RevId: 283324784
2019-12-04 09:58:53 +00:00
christosts
aceba835cc Enable MediaCodec asynchronous mode
Enable using MediaCodec in async mode. Expose experimental
API to enable/disable the feature.

PiperOrigin-RevId: 283309798
2019-12-04 09:58:27 +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
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
andrewlewis
4799993d3b Remove redundant flush() calls from AudioProcessors
flush() is guaranteed to be called in all these cases anyway.

Also clarify documentation for AudioProcessor-specific methods that can
change the 'active' flag.

Issue: #6601
PiperOrigin-RevId: 282515255
2019-11-27 22:28:59 +00:00
andrewlewis
10f142b3ff Add AudioProcessor.AudioFormat
Issue: #6601
PiperOrigin-RevId: 282515179
2019-11-27 22:28:51 +00:00
andrewlewis
b7000e64e9 Always drain/flush AudioProcessors after configuration
This simplifies the contract of configure and is in preparation for
fixing a bug where more input can't be queued when draining audio
processors for a configuration change.

Issue: #6601
PiperOrigin-RevId: 282514367
2019-11-27 22:28:43 +00:00
Pierre-Hugues Husson
299487c175 Accept setting null override to setSelectionOverride
In-code documentation say this is allowed, and is the expected way to
disable renderer.
2019-11-26 17:21:33 +01:00
olly
f630ed1ab5 Fix incorrect Javadoc
PiperOrigin-RevId: 281976465
2019-11-22 16:58:42 +00:00
olly
66c206c71a Make placeholder sessions report their true state
Note that the renderer changes will all disappear when we remove
legacy injection of DrmSessionManager into renderers.

PiperOrigin-RevId: 281952601
2019-11-22 15:10:32 +00:00
olly
f3185d077f Improve WakeLock/AudioBecomingNoisy Javadoc
PiperOrigin-RevId: 281764207
2019-11-22 15:10:16 +00:00
olly
7c24ba0934 Simplify checking whether a sample can be read
PiperOrigin-RevId: 281763672
2019-11-22 15:10:09 +00:00
olly
ab8816214e Simplify playback of clear samples without keys
- Move property to DrmSession; it feels like a more natural place
  for it to go (and provides greater flexibility).
- Change flags to a boolean.

PiperOrigin-RevId: 281758729
2019-11-22 15:10:02 +00:00
kimvde
b18650fdcf Expose metadata in FLAC extractor
PiperOrigin-RevId: 281538423
2019-11-22 15:09:17 +00:00
tonihei
f937fe9e2a Replace all database.beginTransaction with beginTransactionNonExclusive
This ensures other database readers can continue reading while we do our
write transaction.

PiperOrigin-RevId: 281520758
2019-11-22 15:09:01 +00:00
olly
d8dcd2930c Remove stray word in logging
PiperOrigin-RevId: 281510703
2019-11-22 15:08:53 +00:00
tonihei
809234bc4f Mark all methods accessing SQLite databases as potentially blocking.
They are all marked with a JavaDoc comment and the @WorkerThread annotation
which is useful if apps are using threading annotations. All other public
methods in the same classes are marked with @AnyThread to avoid the impression
we forgot to annotate them.

PiperOrigin-RevId: 281490301
2019-11-22 15:08:46 +00:00
christosts
ca849a0679 Fix incorrent javadoc syntax
PiperOrigin-RevId: 281480582
2019-11-22 15:08:38 +00:00
christosts
f921d0d3e5 Ability to set timeout on release() and setSurface()
Add experimental APIs to set a timeout Player#release() and
PlayerMessage#blockUntilDeliver().

PiperOrigin-RevId: 281479146
2019-11-22 15:08:31 +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
kimvde
774ccafa93 Remove TODO around optimizing sample data outputs in FlacExtractor
Preliminary measurement showed that the results were similar to the non-optimized
version.

PiperOrigin-RevId: 281255476
2019-11-22 15:07:44 +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
aquilescanta
699dd3d27c Deprecate public renderer constructors that take a DrmSessionManager
PiperOrigin-RevId: 281086336
2019-11-18 17:55:43 +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
olly
0db1fc67fa Cleanup key request parameters
- Make NonNull, which is already the case when using the manager builder.
- Better document PLAYREADY_CUSTOM_DATA_KEY, now that newPlayReadyInstance
  is no more.

PiperOrigin-RevId: 281079288
2019-11-18 17:55:20 +00:00
aquilescanta
d984a8cdd3 Allow user to pick which track types to create placeholder sessions for
Issue:#4867
PiperOrigin-RevId: 281064793
2019-11-18 17:55:12 +00:00
olly
1ef345192c Clean up non-trivial track selection deprecation
PiperOrigin-RevId: 281051893
2019-11-18 17:55:04 +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
olly
1629a5afd3 Make some listener methods default
PiperOrigin-RevId: 281050034
2019-11-18 17:54:48 +00:00
olly
3e17080c02 Remove SimpleCache hacks that are no longer used
PiperOrigin-RevId: 281049383
2019-11-18 17:54:40 +00:00
olly
7f2827077c Don't check rotated resolution for HEVC on LG Q7
Issue: #6612
PiperOrigin-RevId: 281048324
2019-11-18 17:54:32 +00:00
aquilescanta
82b218607f Add Util.linearSearch
PiperOrigin-RevId: 281037183
2019-11-18 17:54:15 +00:00
olly
c0d3930816 Parse channel count and sample rate from ALAC initialization data
Also remove the "do we really need to do this" comment for AAC.
Parsing from codec specific data is likely to be more robust, so
I think we should continue to do it for formats where we've seen
this problem.

Issue: #6648
PiperOrigin-RevId: 280575466
2019-11-15 05:16:39 +00:00
Oliver Woodman
c613e502aa Merge pull request #6650 from stanionascu:dev-v2-dv
PiperOrigin-RevId: 280573887
2019-11-15 05:16:29 +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
ibaker
65b49a49f7 Fix parameter name mismatch in Playlist
PiperOrigin-RevId: 280167223
2019-11-15 05:15:56 +00:00
olly
0ff79c0e02 Support switching between Surface and VideoDecoderOutputBufferRenderer
Clear state for one mode when entering the other in both SimpleExoPlayer
and SimpleDecoderVideoRenderer. The latter is redundant for the case of
renderers that are used inside SimpleExoPlayer, but seems nice to have.

- Entering Surface mode means receiving a non-null Surface, SurfaceHolder
  or TextureView in SimpleExoPlayer, or a non-null Surface in
  SimpleDecoderVideoRenderer.
- Entering VideoDecoderOutputBufferRenderer means receiving a non-null
  VideoDecoderOutputBufferRenderer in SimpleExoPlayer and
  SimpleDecoderVideoRenderer.

PiperOrigin-RevId: 280155151
2019-11-15 05:15:48 +00:00
olly
bee6294813 Add clear methods for VideoDecoderOutputBufferRenderer
Also add some missing Nullable annotations.

PiperOrigin-RevId: 280150512
2019-11-15 05:15:40 +00:00
olly
7ca77c6002 Make DrmSession acquire/release consistent with ExoMediaDrm
This aligns the method naming and Javadoc. The only remaining
inconsistency I can see is that the initial reference count for
DrmSession is 0 rather than 1. Unfortunately I think it's not
trivial to get these aligned, because DefaultDrmSessionManager
relies on being able to do something between instantiation and
the DrmSession starting to open the session. In practice this
doesn't really matter, since DrmSessions will be obtained via the
manager, which does increment thee reference count to 1 to be
consistent with how ExoMediaDrm acquisition works.

PiperOrigin-RevId: 280136574
2019-11-15 05:15:32 +00:00
olly
9b4a3701d4 Clean up ExoMediaDrm reference counting documentation
PiperOrigin-RevId: 280106092
2019-11-15 05:15:24 +00:00
bachinger
69e51505e4 use getPeriodByUid when searching for subsequent period of seek timeline
Issue: #6641
PiperOrigin-RevId: 279963739
2019-11-15 05:15:08 +00:00
aquilescanta
abe0330f39 Add a track type argument to DrmSessionManager.acquirePlaceholderSession
Issue:#4867
PiperOrigin-RevId: 279928345
2019-11-15 05:15:00 +00:00
aquilescanta
b84a9bed2c Add a parameter object for LoadErrorHandlingPolicy methods
PiperOrigin-RevId: 279928178
2019-11-15 05:14:51 +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
ibaker
b43db3bceb Clarify SSA and SubRip docs in MatroskaExtractor
The handling of times wasn't really clear to me, hopefully this more
exhaustive documentation helps a bit.

Also assert the end timecode is the 'correct' length for the format.

PiperOrigin-RevId: 279922369
2019-11-15 05:14:35 +00:00
kimvde
2faef48302 Add CRC-8 method in Util
PiperOrigin-RevId: 279911378
2019-11-15 05:14:27 +00:00
andrewlewis
b477d8b68a Don't check channels for E-AC3 JOC passthrough
PiperOrigin-RevId: 279841132
2019-11-15 05:14:04 +00:00
olly
e49f1f8a61 Rollback of 844c023b65
*** Original commit ***

Add CRC-8 method in Util

***

PiperOrigin-RevId: 279733541
2019-11-15 05:13:56 +00:00
kimvde
844c023b65 Add CRC-8 method in Util
PiperOrigin-RevId: 279727618
2019-11-15 05:13:48 +00:00
kimvde
13cf2360c8 Compute format maxInputSize in FlacReader
Use the maximum frame size as the maximum sample size if provided.

PiperOrigin-RevId: 279722820
2019-11-15 05:13:39 +00:00
andrewlewis
be03c08410 Add test for becoming noisy handling
To trigger receiving the broadcast it's necessary to idle() the shadow
main looper, which has to be done from the test thread. Therefore this
change removes the send broadcast action and instead sends the broadcast
from the test thread.

PiperOrigin-RevId: 279660935
2019-11-15 05:13:23 +00:00
olly
266c13913a Fix spurious regex simpliciation
Android Studio claims this escaping isn't required, but now it's removed this code crashes due to a malformed regex.

PiperOrigin-RevId: 279501823
2019-11-15 05:13:14 +00:00
tonihei
71f7ab1c57 Workaround for pre-M platform bug when instantiating CaptioningManager.
PiperOrigin-RevId: 279286802
2019-11-15 05:13:06 +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
kimvde
d1da3d925b Fix FLAC bit rate computation
PiperOrigin-RevId: 279088193
2019-11-15 05:12:34 +00:00
olly
6f9baffa0c Suppress warnings emitted by Checker Framework version 2.11.1
More information:
https://docs.google.com/document/d/16tpK6aXqN68PvTyvt4siM-m7f0NXi_8xEeitLDzr8xY/edit?usp=sharing

Tested:
    tap_presubmit: http://test/OCL:278683723:BASE:278762656:1573036487314:924e1b0b
    Some tests failed; test failures are believed to be unrelated to this CL
PiperOrigin-RevId: 279034739
2019-11-15 05:12:01 +00:00
bachinger
5c2806ecca Playlist API: add Playlist and PlaylistTest
PiperOrigin-RevId: 278875587
2019-11-15 05:11:53 +00:00
bachinger
cd2c1f2f24 Playlist API: Add setMediaItem() and prepare()
PiperOrigin-RevId: 278867153
2019-11-15 05:11:45 +00:00
olly
4570cd37c5 Testutils: Add missing Javadoc + Misc cleanup
PiperOrigin-RevId: 278835106
2019-11-15 05:11:36 +00:00
olly
0a27d7b482 Don't use DRM prior to API level 18
PiperOrigin-RevId: 278660557
2019-11-15 05:11:26 +00:00
Stanislav Ionascu
6d9c707255 Detect Dolby Vision profile 7
In official documentation dvProfile 7 uses dvhe as the codec type.
2019-11-14 08:30:30 +01:00
olly
87003b30fc Bump version to 2.10.7
PiperOrigin-RevId: 278658259
2019-11-05 18:36:21 +00:00
aquilescanta
efc7f55616 Make DefaultDrmSession package private
PiperOrigin-RevId: 278639779
2019-11-05 18:36:04 +00:00
christosts
7cc3943b4f Experimental API to skip MediaCodec.stop()
Add experimental API on MediaCodecRenderer to skip calling
MediaCodec.stop() before the call to MediaCodec.release().

PiperOrigin-RevId: 278621032
2019-11-05 16:18:46 +00:00
olly
9842ea7f22 Move classes that don't belong in testutils out of testutils
PiperOrigin-RevId: 278401000
2019-11-05 16:18:24 +00:00
olly
d587def451 Fix Javadoc broken due to lack of import
PiperOrigin-RevId: 278399475
2019-11-05 16:18:16 +00:00
kimvde
165ff55502 Fix inverted arguments in FlacReader format creation
PiperOrigin-RevId: 278332587
2019-11-05 16:18:01 +00:00
kimvde
bd61b63ebc Remove unnecessary exceptions in method signature
PiperOrigin-RevId: 278327151
2019-11-05 16:17:46 +00:00
olly
880b879e8c Suppress warnings emitted by Checker Framework version 2.11.1
More information:
https://docs.google.com/document/d/16tpK6aXqN68PvTyvt4siM-m7f0NXi_8xEeitLDzr8xY/edit?usp=sharing

Tested:
    TAP train for global presubmit queue
    http://test/OCL:278152710:BASE:278144052:1572760370662:22459c12
PiperOrigin-RevId: 278241536
2019-11-05 16:17:39 +00:00
olly
7e070683a3 Expose getMetrics() in ExoV1 and ExoV2 FrameworkMediaDrm classes.
PiperOrigin-RevId: 278054214
2019-11-05 16:17:31 +00:00
ibaker
922991da88 Add @NonNullApi to text packages with no blacklisted files
PiperOrigin-RevId: 277969385
2019-11-05 16:17:24 +00:00
kimvde
5d46d4f74f Add parameter names to Format creation
PiperOrigin-RevId: 277963928
2019-11-05 16:17:16 +00:00
olly
8dcd1e53bc Remove or suppress warnings where we use our own deprecated APIs
PiperOrigin-RevId: 277928790
2019-11-05 16:17:01 +00:00
ibaker
2106e5f328 Annotate webvtt package with @NonNullApi
PiperOrigin-RevId: 277916734
2019-11-05 16:16:30 +00:00
ibaker
616f4774e1 Remove WebvttCueParser from null-checking blacklist
PiperOrigin-RevId: 277916639
2019-11-05 16:16:22 +00:00
ibaker
129efa2ebf Remove WebvttCssStyle from null-checking blacklist
PiperOrigin-RevId: 277916508
2019-11-05 16:16:15 +00:00
ibaker
2139973e2c Remove WebvttParserUtil from null-checking blacklist
PiperOrigin-RevId: 277916279
2019-11-05 16:16:07 +00:00
ibaker
5407c31726 Remove WebvttSubtitle from null-checking blacklist
PiperOrigin-RevId: 277916113
2019-11-05 16:16:00 +00:00
tonihei
5b80b4b523 Update initial bitrate estimates.
PiperOrigin-RevId: 277911191
2019-11-05 16:15:52 +00:00
ibaker
b972fd1f27 Remove WebvttCue from null-checking blacklist
PiperOrigin-RevId: 277910909
2019-11-05 16:15:45 +00:00
kimvde
ab2bfcc1b9 Fix typo in WavHeader class
PiperOrigin-RevId: 277910360
2019-11-05 16:15:37 +00:00
andrewlewis
656556b828 Clean up naming for GLSurfaceViews
PiperOrigin-RevId: 277896757
2019-11-05 16:15:29 +00:00
kimvde
242a0053c9 Add method to read more than 32 bits in ParsableBitArray
PiperOrigin-RevId: 277766372
2019-11-05 16:15:22 +00:00
kimvde
32dcd80b4a Improve ParsableBitArray unit tests
PiperOrigin-RevId: 277744735
2019-11-05 16:15:14 +00:00
olly
f55083ab48 Minor DRM documentation tweaks
PiperOrigin-RevId: 277729887
2019-11-05 16:14:59 +00:00
olly
d596fcd9ba Remove unnecessary warning suppressions
PiperOrigin-RevId: 277709114
2019-11-05 16:14:39 +00:00
ibaker
a7b242998a Fix subtitle parsing regex suggestions
Suggested by Android Studio's Inspect Code

SO seems to think there's a performance difference for the | change:
https://stackoverflow.com/questions/22132450/why-is-a-character-class-faster-than-alternation

PiperOrigin-RevId: 277707341
2019-11-05 16:14:30 +00:00
tonihei
f960f8a575 Forward suppression state to new playback stats sessions.
The value is stateful and new sessions need to be informed of the current state

PiperOrigin-RevId: 277701955
2019-11-05 16:14:11 +00:00
bachinger
01a4cf98d5 add default methods isSingleWindow and getInitialTimeline to MediaSource interface
PiperOrigin-RevId: 277695826
2019-11-05 16:14:03 +00:00
aquilescanta
df251ad1be Add tests for SampleQueue isReady
PiperOrigin-RevId: 277691935
2019-11-05 16:13:56 +00:00
aquilescanta
2d530478ee Make FormatHolder be entirely populated by SampleMetadataQueue
This should not introduce any functional changes.

PiperOrigin-RevId: 277691550
2019-11-05 16:13:48 +00:00
ibaker
f5377d9b11 Encode WebVTT size computation in WebvttCue.java
Relevant part of the spec:
https://www.w3.org/TR/webvtt1/#processing-cue-settings

PiperOrigin-RevId: 277523694
2019-11-05 16:13:25 +00:00
ibaker
d29d452617 Switch (Mp4)WebvttDecoderTest to use Truth's Expect
This means multiple failures are all logged, instead of the test
stopping when the first assertion fails. Makes tests like this with
lots of independent assertions much easier to work with.

I limited the expect to a single assertCues() call, otherwise
the error message gets very long and is hard to read, but I
still think this is an improvement.

PiperOrigin-RevId: 277523300
2019-11-05 16:13:18 +00:00
ibaker
b3f94e3768 Update WebvttCue to use defaults from the spec
Cue's UNSET and null values should be used when the source data
doesn't specify *and* the spec doesn't provide a clear default.
In the WebVTT case, the defaults are clear, so we use them
explicitly.

PiperOrigin-RevId: 277522899
2019-11-05 16:13:10 +00:00
aquilescanta
18e1c3eb1c Rename the option allowPlaceholderSessions to preferSecureDecoders
PiperOrigin-RevId: 277477784
2019-11-05 16:12:46 +00:00
andrewlewis
aeefb79a86 Fix MediaCodecUtil nullability annotations
PiperOrigin-RevId: 277462799
2019-11-05 16:12:38 +00:00
Arnold Szabo
0c5d470283 Correct SSA overlapping subtitle decoding, add tests 2019-11-03 13:59:28 +02:00
Arnold Szabo
925a7fd045 Remove unnecessary empty check in getCues(..) 2019-10-30 23:02:37 +02:00
Arnold Szabo
7a6de79f91 Add initial values to playResX and playResY 2019-10-30 23:00:45 +02:00
Arnold Szabo
86efd1944e Add jdoc to SSA parsePosition(..) method 2019-10-30 22:58:32 +02:00
Arnold Szabo
3b741e591f Remove hardcoded index when parsing PlayResX and PlayResY 2019-10-30 22:51:13 +02:00
Arnold Szabo
4d6d8060b4 Use PointF instead of Pair when parsing the position 2019-10-30 22:45:31 +02: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
8138424d92 Replace usages of SampleQueue.hasNextSample with isReady
PiperOrigin-RevId: 277259448
2019-10-30 08:51:42 +00:00
aquilescanta
81b8396b3e Move peek result constants into SampleMetadataQueue
PiperOrigin-RevId: 277253308
2019-10-30 08:51:27 +00:00
aquilescanta
9eb93a35c0 Fix a bunch of typos
PiperOrigin-RevId: 277056574
2019-10-30 08:50:57 +00:00
ibaker
7277df3547 Remove @NonNull where it's implied by @NonNullApi
Also remove it from all tests, these aren't covered by the null-checker

Covered by the following package-info.java files:
- j/c/g/a/exoplayer2/ext/mediasession/package-info.java
- j/c/g/a/exoplayer2/package-info.java
- j/c/g/a/exoplayer2/offline/package-info.java
- j/c/g/a/exoplayer2/video/package-info.java
- j/c/g/a/exoplayer2/ui/package-info.java

PiperOrigin-RevId: 277038916
2019-10-30 08:50:42 +00:00
aquilescanta
b68a698806 Make SampleQueue populate FormatHolder.drmSession
Also add unit tests for SampleQueue read for samples with
DRM requirements.

PiperOrigin-RevId: 277037826
2019-10-30 08:50:34 +00:00
samrobinson
e025371429 Fix memory leak and calling listener when disabled in AudioBecomingNoisyManager.
PiperOrigin-RevId: 277030401
2019-10-30 08:50:26 +00:00
samrobinson
ff82a13279 Add player release check to enabling audio focus & audio becoming noisy handling.
PiperOrigin-RevId: 276679790
2019-10-30 08:50:18 +00:00
ibaker
719a704dee Rollback of 665627c384
*** Original commit ***

Rollback of bf01ff0f60

*** Original commit ***

Use Float.NaN for Cue#DIMEN_UNSET

Float.MIN_VALUE is very close to zero:
"A constant holding the smallest positive nonzero value of type float"
https://developer.android.com/reference/java/lang/Float.html#MIN_VALUE

Float.NaN more clearly conveys this is an invalid number,
and will also more clearly carry over if we do maths on it a...

***

PiperOrigin-RevId: 276674142
2019-10-30 08:50:10 +00:00
samrobinson
ea77defd38 Clarify naming & comments for distinction between Format and MediaFormat.
PiperOrigin-RevId: 276673410
2019-10-30 08:50:03 +00:00
aquilescanta
620b9110bf Document error handling in the Extractor interface
PiperOrigin-RevId: 276660235
2019-10-30 08:49:47 +00:00
samrobinson
bcf46431dd Verify application thread when setting handle audio becoming noisy.
PiperOrigin-RevId: 276491102
2019-10-30 08:49:32 +00:00
ibaker
d898122ec5 Mark WebvttCue constructors private
Everyone should use the Builder.

PiperOrigin-RevId: 276468354
2019-10-30 08:49:24 +00:00
samrobinson
b99203dada Post AudioFocusManager.onAudioFocusChange events to eventHandler.
PiperOrigin-RevId: 276452333
2019-10-30 08:49:09 +00:00
ibaker
3a84b787b1 Add missing IntDef annotations in WebvttDecoderTest
Also change the type of endTime to long to match startTime

PiperOrigin-RevId: 276448131
2019-10-30 08:49:01 +00:00
tonihei
881fcf829a Add some missing @Nullable to Format
PiperOrigin-RevId: 276366002
2019-10-30 08:48:53 +00:00
olly
665627c384 Rollback of bf01ff0f60
*** Original commit ***

Use Float.NaN for Cue#DIMEN_UNSET

Float.MIN_VALUE is very close to zero:
"A constant holding the smallest positive nonzero value of type float"
https://developer.android.com/reference/java/lang/Float.html#MIN_VALUE

Float.NaN more clearly conveys this is an invalid number,
and will also more clearly carry over if we do maths on it accidentally.

***

PiperOrigin-RevId: 276315786
2019-10-30 08:48:45 +00:00
ibaker
bf01ff0f60 Use Float.NaN for Cue#DIMEN_UNSET
Float.MIN_VALUE is very close to zero:
"A constant holding the smallest positive nonzero value of type float"
https://developer.android.com/reference/java/lang/Float.html#MIN_VALUE

Float.NaN more clearly conveys this is an invalid number,
and will also more clearly carry over if we do maths on it accidentally.

PiperOrigin-RevId: 276277784
2019-10-30 08:48:38 +00:00
samrobinson
2cf98ecffe Posts AudioBecomingNoisyManager listener events to eventHandler.
PiperOrigin-RevId: 276084113
2019-10-30 08:48:30 +00:00
ibaker
dbbbcab6cb Add assertWithMessage calls to WebvttDecoderTest
With lots of int comparisons close together, this makes the error
messages much clearer and saves having to manually match up line
numbers.

Also make every @Test just throw Exception

PiperOrigin-RevId: 276079806
2019-10-30 08:48:23 +00:00
samrobinson
82d3e1e8ab Rename format to mediaFormat for clarity.
PiperOrigin-RevId: 276036585
2019-10-30 08:48:15 +00:00
ibaker
62e3ac3e9e Update parseStbl to handle edit lists & gapless info
Without this, a subtitle track empty edit list used to offset the start of
subtitles is ignored.

Also the current code seems to depend on the order in which
we parse the tracks (audio first means we have gapless info when we parse
video track, while video first we wouldn't).

It's not clear why we can't handle both edit lists & gapless info

PiperOrigin-RevId: 276029744
2019-10-30 08:48:00 +00:00
andrewlewis
51e4f7b260 Fix supplemental data handling with dropped frames
PiperOrigin-RevId: 276024935
2019-10-30 08:47:52 +00:00
olly
dbfc101e04 Remove no-op enabling of multi-session
PiperOrigin-RevId: 275856697
2019-10-30 08:47:21 +00:00
bachinger
3bb97f4bbf deliver player messages only once when at start position
ISSUE: #6550
PiperOrigin-RevId: 275842161
2019-10-30 08:47:13 +00:00
bachinger
e6e2dcc58d Rollback of 36f8bd78f7
*** Original commit ***

Rollback of 4ad4e3e4fc

*** Original commit ***

Rollback of 3b22db33ba

*** Original commit ***

add top-level playlist API to ExoPlayer

Public design doc:
https://docs.google.com/document/d/11...

***

PiperOrigin-RevId: 275813737
2019-10-30 08:46:42 +00:00
ibaker
93f2dd8deb Switch test usages of ConditionVariable#block(timeout) to CountDownLatch
ConditionVariable.block(timeout) doesn't work in Robolectric, because it
relies on the system clock which doesn't advance.

PiperOrigin-RevId: 275798281
2019-10-30 08:46:33 +00:00
Arnold Szabo
0391e73a0b Adding support for overlapping subtitles 2019-10-30 00:43:15 +02:00
Arnold Szabo
579167743b Parse and apply position attribute in SSA subtitles 2019-10-27 18:54:34 +02: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
andrewlewis
39d5f14343 Don't propagate empty supplemental data
PiperOrigin-RevId: 275425267
2019-10-18 17:42:35 +01:00
olly
701b013cdd Rollback of 9f0fd870e7
*** Original commit ***

Port Exo v1 work around for frame synchronization issue in KitKat to Exo v2.

***

PiperOrigin-RevId: 275372272
2019-10-18 17:42:27 +01:00
bachinger
0c0a67bb93 Fail at preparation when trying to download live content.
PiperOrigin-RevId: 275293735
2019-10-18 17:42:11 +01:00
bachinger
36f8bd78f7 Rollback of 4ad4e3e4fc
*** Original commit ***

Rollback of 3b22db33ba

*** Original commit ***

add top-level playlist API to ExoPlayer

Public design doc:
https://docs.google.com/document/d/11h0S91KI5TB3NNZUtsCzg0S7r6nyTnF_tDZZAtmY93g

Issue: #6161

***

***

PiperOrigin-RevId: 275276158
2019-10-18 17:42:03 +01:00
olly
d874656e8a Round impossible H264 resolutions up to valid values for capabilities check
If an odd resolution is impossible in the specification itself, then we know
that the caller is passing invalid data. Round up on the assumption it's a
rounding error so that playback can proceed.

Issue: #6551
PiperOrigin-RevId: 275226813
2019-10-17 11:52:50 +01:00
Oliver Woodman
23f545a0a4 Merge pull request #6528 from julioz:log-param
PiperOrigin-RevId: 275014741
2019-10-16 14:02: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
tonihei
03e3ceaedb Align PlaybackSuppressionReason java doc with method doc.
Same change as done in c49388aca2.

PiperOrigin-RevId: 274894288
2019-10-15 23:08:45 +01:00
ibaker
fc95d07a94 Remove HlsChunkSource from null-checking blacklist
PiperOrigin-RevId: 274789337
2019-10-15 23:08:00 +01:00
kimvde
a10fea30c9 Enable setOutputSurfaceWorkaround for some devices
The corresponding devices are Wiko FEVER l5460 and Huawei Honor 8X.

Issue:#6503
PiperOrigin-RevId: 274753710
2019-10-15 23:07:30 +01:00
olly
d36abf966e Fix broken Javadoc
PiperOrigin-RevId: 274564800
2019-10-14 14:18:49 +01:00
olly
c49388aca2 Clean up playback suppression
PiperOrigin-RevId: 274561876
2019-10-14 13:58:11 +01:00
ibaker
eb677eb4b9 Add a Util.nullSafeArrayAppend and use it in HlsSampleStreamWrapper
I could do this with nullSafeArrayConcat but this saves allocating a throw-away
single-element array.

PiperOrigin-RevId: 274545815
2019-10-14 13:58:04 +01:00