1485 Commits

Author SHA1 Message Date
andrewlewis
4acdc8d0b7 Fix buffered position when loading has not completed
If there is data after the last samples in the container, we may request
continue loading after the last samples have been read but before the load has
completed. In this situation the buffered position is returned as
Long.MAX_VALUE, which prevents continuing loading, yet the media period is not
treated as fully buffered because its buffered position is not
C.TIME_END_OF_SOURCE.

PiperOrigin-RevId: 231406964
2019-01-30 19:47:07 +00:00
andrewlewis
21e593a14d Fix float output capability check
Float output is only possible from API 21, but the high-res int
to float conversion path was checking for 32-bit PCM not float
output capability.

PiperOrigin-RevId: 231172495
2019-01-30 19:45:37 +00:00
olly
a96d26dbc1 Clarify LoopingMediaSource documentation
PiperOrigin-RevId: 231171425
2019-01-30 19:45:25 +00:00
tonihei
0b49d002f1 Use loading period event time for fatal load errors.
ExoPlaybackExceptions of type SOURCE are always associated with the loading
period and thus we can use the event time for the loading period in
onPlayerError. Renderer and unexpected exceptions are still associated with the
currently playing period.

Issue:#5407
PiperOrigin-RevId: 230216253
2019-01-21 14:18:59 +00:00
tonihei
563d3c20ab Add max video size workaround for Amlogic decoder.
The Amlogic awesome decoder reduces the video size of interlaced videos by half
if the internal configuration isn't force reset with new maximum input size
values. The product of these new values must exceed 1920x1088 to force the
reset.

Issue:#5003
PiperOrigin-RevId: 230206675
2019-01-21 13:22:59 +00:00
tonihei
29376b3dd2 Add missing @Nullable to SimpleExoPlayer fields and methods.
Issue:#5402
PiperOrigin-RevId: 229758525
2019-01-21 13:18:55 +00:00
tonihei
9911c11191 Add start position to MediaSource.createPeriod.
That's the same position set in MediaPeriod.prepare (where it may be removed
in the future).

Having the position at an earlier point is necessary to fix an
issue with lazy preparation in ConcatenatingMediaSource where the prepare
position was assumed to be known but MediaPeriod.prepare hasn't been called
yet.

Issue:#5350
PiperOrigin-RevId: 229756637
2019-01-17 19:07:49 +00:00
olly
84574d9c11 Bump version for 2.9.4 release
PiperOrigin-RevId: 229364563
2019-01-15 15:06:18 +00:00
tonihei
e1b55e6d27 Add buffer flag for last sample to improve buffered position calculation.
The buffered position is currently based on the mimimum queued timestamp of
all AV tracks. If the tracks have unequal lengths, one track continues loading
without bounds as the "buffered position" will always stay at the shorter
track's duration.

This change adds an optional buffer flag to mark the last sample of the
stream. This is set in the Mp4Extractor only so far. ExtractorMediaSource
uses this flag to ignore AV streams in the buffered duration calculation if
they already finished loading.

Issue:#3670
PiperOrigin-RevId: 229359899
2019-01-15 14:31:18 +00:00
tonihei
66ca43ed1d Don't forget isSeekable in ExtractorMediaSource.
We currently forget whether a source is seekable at re-preparation. This was
implemented intentionally this way under the assumption that we really can't seek
until we have loaded the seek map again. However, seek operations are only
allowed after a media period is prepared. So there is no harm in remembering
whether a source is seekable.

This problem currently prevents reusing ClippingMediaSources with
ExtractorMediaSource and a non-zero start clip position.

Issue: #5351
PiperOrigin-RevId: 229169441
2019-01-15 14:13:34 +00:00
andrewlewis
34d0e0cea1 Blacklist OMX.SEC.mp3.dec for more devices
Issue: #4519
PiperOrigin-RevId: 229145790
2019-01-15 14:13:03 +00:00
tonihei
81ca7fe090 Add missing call to timeline.getWindow.
The window object is used without being filled with data. This used to work
well for most cases as the same live stream is sending regular updates and the
first update is almost never used if it's not the first item in a playlist.

It causes problems when the first timeline update of a live stream is actually
used for playback (e.g. when the live stream is lazily prepared in a playlist
and played first).

PiperOrigin-RevId: 228530232
2019-01-15 14:12:25 +00:00
olly
80645056d2 Doc fix.
PiperOrigin-RevId: 228296962
2019-01-15 14:11:25 +00:00
aquilescanta
32bad69158 Increase search size in mp4 sniffing once moov has been found
Issue:#5320
PiperOrigin-RevId: 228142567
2019-01-15 14:10:53 +00:00
andrewlewis
99bc13221c Treat AVERROR_INVALIDDATA as non-fatal
Also configure the FFmpeg context to ignore errors as far as possible (this
appears to have an effect only for certain decoders).

Issue: #5293
PiperOrigin-RevId: 227851397
2019-01-15 14:10:02 +00:00
andrewlewis
189e3c31be Fix nullness issue
PiperOrigin-RevId: 227822937
2019-01-15 14:09:18 +00:00
andrewlewis
a568fbdd51 Parse frame rate from 'mdta' metadata
PiperOrigin-RevId: 227813461
2019-01-15 14:09:04 +00:00
aquilescanta
4847889a2f Prevent IllegalStateException in Mp4 sniffing
If a negative value is read, sniffing should just fail.

PiperOrigin-RevId: 227689568
2019-01-15 14:07:59 +00:00
aquilescanta
61a7750f23 Enable setOutputSurfaceWorkaround for Huawei P10 lite
Issue:#5312
PiperOrigin-RevId: 227673949
2019-01-15 14:07:28 +00:00
aquilescanta
aff689a7da Fix bug when calculating EOF position in mp4 sniffing
PiperOrigin-RevId: 227668426
2019-01-15 14:07:18 +00:00
tonihei
fc16833903 Use Handler instead of ExoPlayer messages in ConcatenatingMediaSource
ExoPlayer methods must not be called from any thread besides the specified
app thread. Therefore we shouldn't use them here. Using a regular Handler
instead is fully equivalent.

Issue:#5240
PiperOrigin-RevId: 227650489
2019-01-15 14:07:05 +00:00
andrewlewis
f11abbda97 Fix replacement char check
PiperOrigin-RevId: 227646358
2019-01-15 14:06:47 +00:00
olly
6373554d6a Move syncFileDescriptor to use an experimental method
PiperOrigin-RevId: 227520168
2019-01-15 14:05:21 +00:00
andrewlewis
d3f5057d59 Handle rectangular rotation projections in Matroska
See also https://github.com/Matroska-Org/matroska-specification/issues/269.

PiperOrigin-RevId: 226758584
2019-01-15 14:03:54 +00:00
olly
f042ae4cf3 Don't write CachedContentIndex to disk on key removal
Issue: #5136
PiperOrigin-RevId: 224857629
2018-12-20 21:41:47 +00:00
olly
c73c6f2013 Bump for 2.9.3
PiperOrigin-RevId: 226356810
2018-12-20 21:18:41 +00:00
Oliver Woodman
4ccfa6f068 Fix buffer size for renderers with TRACK_TYPE_NONE
This includes NoSampleRenderers.
2018-12-20 12:31:20 +00:00
Oliver Woodman
6060b8113d Relax audio decoder capability checks
Issue: #5145
2018-12-19 22:01:20 +00:00
aquilescanta
f6165f753c Mitigate the need for FLAG_ALLOW_NON_IDR_KEYFRAMES
Use random access indicator in transport streams

Issue:#1967
Issue:#2020
Issue:#2182
Issue:#2469
Issue:#2581
Issue:#2748
Issue:#2939
Issue:#2979
Issue:#3316
Issue:#3574
Issue:#3709
Issue:#3747
Issue:#4103
Issue:#4184
Issue:#4355
Issue:#4538
Issue:#4719
Issue:#4861
Issue:#4925
Issue:#4951
Issue:#5108
Issue:#5186
PiperOrigin-RevId: 225798044
2018-12-19 21:56:58 +00:00
Oliver Woodman
fa82004fa3 Merge pull request #5066 from szaboa:feature/1583_support_png_ttml
PiperOrigin-RevId: 225531695
2018-12-19 21:51:36 +00:00
olly
ca9ecaa448 Blacklist OMX.SEC.mp3.dec for more devices
Issue #4519

PiperOrigin-RevId: 226205245
2018-12-19 21:50:26 +00:00
andrewlewis
975ed6c277 Use the true bitrate for CBR MP3 seeking
PiperOrigin-RevId: 225989898
2018-12-19 21:50:14 +00:00
Oliver Woodman
78cdd5fee1 Merge pull request #5216 from mseroczynski:dev-v2
PiperOrigin-RevId: 225966289
2018-12-19 21:49:48 +00:00
olly
abdb58485f Add Player.MetadataComponent for completeness
PiperOrigin-RevId: 225795581
2018-12-19 21:49:21 +00:00
andrewlewis
479841f65f Add Nexus Player to output surface workaround
PiperOrigin-RevId: 225383173
2018-12-19 21:49:08 +00:00
olly
942ac78a0c Add 4K Bravia to output surface workaroud
PiperOrigin-RevId: 225344232
2018-12-19 21:48:49 +00:00
olly
db5083d18a Enable setOutputSurfaceWorkaround for dangal
Issue: #5169
PiperOrigin-RevId: 225025357
2018-12-19 21:48:10 +00:00
eguven
be2942cee3 Apply EOS flush workaround to stvm8 devices
Issue:#5203
PiperOrigin-RevId: 224726041
2018-12-19 21:47:14 +00:00
tonihei
0e139e9945 Use media source tag in dummy timeline.
This is now possible as it's directly accessible from the media source.

Issue:#5177
Issue:#5155
PiperOrigin-RevId: 224321917
2018-12-19 21:47:02 +00:00
andrewlewis
ee1ec8d3d6 Disable post processing on Nvidia devices
PiperOrigin-RevId: 224291309
2018-12-19 21:46:52 +00:00
Oliver Woodman
5f33c7fcf5 Merge pull request #5187 from BrainCrumbz:feat/get-tag
PiperOrigin-RevId: 224166374
2018-12-19 21:40:35 +00:00
tonihei
ddda2eef7e Add no-op defaults to Video(Audio)RendererEventListener.
This is in line with how Player.EventListener and AnalyticsListener methods are
defined and helps to only implement the callbacks needed.

PiperOrigin-RevId: 223991262
2018-12-19 21:36:00 +00:00
olly
a94fa330f5 Prevent Cea608Decoder from generating Subtitles with null Cues list.
PiperOrigin-RevId: 223580953
2018-12-01 00:12:50 +00:00
olly
c55d95086b Add several devices to setOutputSurface workaround:
- Asus ZenFone GO (ASUS_X00AD_2)
- Sugar S9 (i9031)
- Redmi Note 3 (kate)

These devices trigger native crashes similar to
https://github.com/google/ExoPlayer/issues/4460

I'm not sure why Asus Zenfone Go (model: ZB500KL, device: ASUS_X00AD_2) was removed here
73af056da3

PiperOrigin-RevId: 223580393
2018-12-01 00:11:04 +00:00
andrewlewis
f8ad6d309e Fix clearkey DRM UUID passed to MediaCrypto
PiperOrigin-RevId: 223324279
2018-11-30 16:30:01 +00:00
andrewlewis
6d232f5b2b Replace remaining stbl assertions with warnings
Issue: #5162
PiperOrigin-RevId: 223193019
2018-11-30 16:28:52 +00:00
olly
5134477873 Bump for 2.9.2
PiperOrigin-RevId: 223141203
2018-11-28 11:47:09 +00:00
andrewlewis
15d13bdccd Handle metadata failing to decode in MetadataRenderer
Issue: #5149
PiperOrigin-RevId: 223121651
2018-11-28 11:45:45 +00:00
olly
38c53298b0 Strip private ID3 data from HLS sample formats
Issue: #5063
PiperOrigin-RevId: 222975020
2018-11-27 19:49:18 +00:00
Oliver Woodman
9c821777a0 Noop fix to WebvttDecoder
We already have tests for comment blocks, and they already
pass because we discard the comment when we fail to parse it
as a cue. We should just skip it directly, however.
2018-11-27 19:46:25 +00:00