Commit graph

2395 commits

Author SHA1 Message Date
andrewlewis
f7fff0d583 Apply parameter adjustments with resetting.
Start draining the audio processors when the playback parameters change,
and when draining completes use the written frame count and next input
buffer presentation timestamp as an offset for applying the new playback
speed.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151800074
2017-03-31 19:14:22 +01:00
olly
035fab225d Rename skipToKeyframeBefore -> skipData and allow skipping to EOS
This change also ensures that format changes are read whilst the
renderer is enabled but without a codec. This is necessary to
ensure the drm session is updated (or replaced).

Updating the format is also needed so that the up-to-date format is
used in the case that the codec is initialized later due to the
surface being set. Previously, if an ABR change occurred between
the format being read and the surface being attached, we would
instantiate the codec and then immediately have to reconfigure it
when as a result of reading the up-to-date format. For a non-adaptive
codec this resulted in the codec being immediately released and
instantiated again!

Issue: #2582

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151608096
2017-03-31 19:11:08 +01:00
olly
9bc20d23a8 Print when frame is rendered in EventLogger + tidying
This is the boring part of a larger change that fixes
how video renderers behave when surfaces are attached and
detached whilst they're enabled or started.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151563031
2017-03-31 19:10:07 +01:00
eguven
68b8a5e542 Downgrade jacoco to 0.7.4.201502262128 as a workaround for 'stuck in endless loop' issue
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151554130
2017-03-31 19:09:01 +01:00
eguven
103c3b631b Add DashDownloader helper class to download dash streams
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151456161
2017-03-31 19:07:59 +01:00
eguven
2f9e082fe1 Enable gradle test code coverage for the library modules that aren't affected by 'stuck in endless loop' issue
'library-core' is still affected by https://code.google.com/p/android/issues/detail?id=226070

Code coverage report can be generated for the rest of the modules by:
./gradlew :[module name]:createDebugCoverageReport
Report is generated under:
[module folder]/buildout/reports/coverage/debug

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151448536
2017-03-31 19:06:58 +01:00
olly
e7a4c28dde Fix missing NonNull annotations for overriding methods
If the super method has the annotation on an argument, then
the overriding method should have it too.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151440313
2017-03-31 19:05:54 +01:00
andrewlewis
1dcfae452a Avoid input/output copies in SonicAudioProcessor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151431376
2017-03-31 19:04:36 +01:00
andrewlewis
422c2d0ab7 Support escaped AAC AOTs.
Issue: #2514

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151418949
2017-03-31 19:03:27 +01:00
olly
21eecb679d Make ID3 parsing more robust
- Validate frames for majorVersion 2 and 3 as well as 4
- Don't throw if top bit of frameSize is non-zero.

Issue: #2604

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151348836
2017-03-31 19:02:22 +01:00
olly
5ebb3d4481 Correct allowTimeBeyondBuffer values for skipToKeyframeBefore calls
The only case where we should pass false is if we want to know
whether the passed time is within the buffered media. This is
relevant within seekTo implementations only.

This is related to (but does not fix) issue #2582

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151315676
2017-03-31 19:00:06 +01:00
andrewlewis
abcd177e8a Remove some unused Sonic functionality.
Also move it closer to the ExoPlayer code style.

Note: This change is intended to be purely cosmetic.

Issue: #26

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151307575
2017-03-31 18:58:50 +01:00
andrewlewis
9d20a8d41c Add a custom time bar view.
Also add an isAd flag to Timeline.Period so that periods can be declared as
containing ads. The times of these periods are indicated using ad markers in
the new TimeBar.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151116208
2017-03-31 18:57:42 +01:00
Alex Telitsine
d84733c9cf Disables Adaptive workaround for Odroid-XU4 up to SDK 19 in Samsung's Exynos AVC and AVC secure decoders 2017-03-30 19:53:19 -07:00
Alex Telitsine
96f56716ce Disables Adaptive workaround for Odroid-XU4 up to SDK 19 in Samsung's Exynos AVC and AVC secure decoders 2017-03-30 19:52:15 -07:00
Alex Telitsine
42f3dcf0da Disables Adaptive workaround for Odroid-XU4 up to SDK 19 in Samsung's Exynos AVC and AVC secure decoders 2017-03-30 19:50:09 -07:00
Sergio Moreno Mozota
d34d3f76be Pull request review fixes 2017-03-31 01:48:29 +02:00
Sergio Moreno Mozota
6c9656dc9a some cleaning and class/method documentation 2017-03-29 00:14:32 +02:00
Alex Telitsine
9aee406c8e Disables codecIsAdaptive for Odroid-XU4, comment updated 2017-03-27 04:10:53 -07:00
Alex Telitsine
c40b8156e9 Disables codecIsAdaptive for Odroid-XU4 2017-03-27 03:58:04 -07:00
Sergio Moreno Mozota
7e0ea5a65b Optimization of memory and draw operations, and proper treatment of filled regions (as far as we can infer from the specs) 2017-03-26 22:03:05 +02:00
olly
f4c33daf77 Bump version for bugfix release
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151028565
2017-03-23 19:15:48 +00:00
andrewlewis
0e6ef0edf6 Add Sonic library for audio speed adjustment.
Add methods to ExoPlayer for setting/getting the playback speed, using
SonicAudioProcessor.

Remove PlaybackParams support, as the AudioTrack timestamp does not work
reliably on Marshmallow. The platform also uses Sonic and performance
should be comparable between the Java and native versions on recent Android
runtimes.

In a later change, SonicAudioProcessor will be made public so it can
be used in conjunction with other processors.

Issue: #26

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151027121
2017-03-23 19:14:48 +00:00
olly
6faf566344 Fix NullPointerException enabling WebVtt subtitles in DASH
Issue: #2596

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151013802
2017-03-23 19:13:30 +00:00
eguven
14f1b33fcf Make CacheDataSource.open() throw exception if resolved range doesn't cover position
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151006826
2017-03-23 19:12:20 +00:00
olly
7aff624477 Fix typo on CEA-708 decoder
Issue: #2595

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151004198
2017-03-23 19:11:08 +00:00
olly
255523b432 Call DrmSession methods on the session not the manager
The way it was before worked, but it's not really documented
that DrmSession methods implemented by DefaultDrmSessionManager
can be called after the session has been released, and it feels
wrong to do this.

At some point we should probably consider moving the DrmSession
part of DefaultDrmSessionManager into an inner class, to force
usage in the "normal" way.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151003855
2017-03-23 19:09:55 +00:00
Sergio Moreno Mozota
0c49b81b48 add DVB subtitle support, based in the TVHeadend spec, to the MatroskaExtractor 2017-03-23 08:55:20 +01:00
Sergio Moreno Mozota
937675d1db Add DVB sustitles support to the TsExtractor 2017-03-23 08:54:07 +01:00
Sergio Moreno Mozota
d8f61ad7e7 Add DVB subtitles support 2017-03-23 08:51:41 +01:00
olly
42629701f8 Work around broken VP8 decoder on Note 2
Issue: #1355

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150916986
2017-03-22 20:15:50 +00:00
sammon
e0a00502a7 Avoid exception when creating ChunkIndex with length = 0.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150908893
2017-03-22 20:14:48 +00:00
eguven
8f636991ad Add DummyDataSource
A dummy DataSource which provides no data.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150868950
2017-03-22 19:12:36 +00:00
olly
382ba7ecf0 Generate combined Javadoc
Notes:
- Now only generating a single module Javadoc task for the
  release variant.
- Combined Javadoc now includes extensions. VP9 is excluded
  for now since it's failing for an unknown reason.

Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150865589
2017-03-22 19:11:28 +00:00
olly
88e74ef381 Generate Javadoc for each module individually
Notes:
- The VP9 one is failing claiming that the util package
  doesn't exist and that LibraryLoader cannot be found.
  Unsure why, since it appears to be setup exactly like
  other extensions (e.g. Opus) that does work.
- @link across modules will not work when generating
  Javadoc for a single module. This is WAI. I subsequent
  change will add an aggregated Javadoc generator that
  will generate Javadoc for all modules together and
  apply cross module @link correctly.

Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150864273
2017-03-22 19:10:15 +00:00
olly
7ce8125194 Split DASH into a separate module
Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150762237
2017-03-22 19:09:04 +00:00
olly
b1a2ae1856 Remove DRM->DASH dependency in prep for DASH module split
Also renamed releaseResources->release to be consistent with the
rest of the library, and added some synchronization to ensure
correct usage.

Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150753414
2017-03-22 19:07:53 +00:00
eguven
065d3dc523 Make FakeDataSource able to serve multiple fake files
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150748155
2017-03-22 19:06:45 +00:00
aquilescanta
c32533cad8 Fixed the edit mode view for SimpleExoPlayerView
This CL makes SimpleExoPlayerView show a mock representation
when in the layout editor of AndroidStudio.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150739442
2017-03-22 19:05:05 +00:00
andrewlewis
f2e5c3b4c9 Fix imports.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150732864
2017-03-22 19:03:53 +00:00
olly
25a093b37c Split HLS into a separate module
Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150643456
2017-03-22 18:59:56 +00:00
olly
a9aca8dbf0 Split SmoothStreaming into a separate module
Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150634794
2017-03-22 18:58:40 +00:00
olly
58ac572024 Tell Moe about new UI module + update external settings.gradle
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150625313
2017-03-22 18:55:23 +00:00
olly
7b08e972e4 Split UI components into separate module
Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150623215
2017-03-22 18:54:16 +00:00
olly
de6e47f7e6 Fix skipping to keyframe to use correct position
Issue: #2575

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150622487
2017-03-22 18:53:04 +00:00
olly
f9767940cc Fix misc issues
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150610549
2017-03-22 18:50:45 +00:00
olly
ce55d1a712 Modularize ExoPlayer steps 1 + 2.
1. Move entire library from v2/library/ to v2/library/core
2. Add v2/library/all that depends on v2/library/core

Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150455693
2017-03-22 18:49:30 +00:00
olly
f2de393d83 Correctly handle stream replacement in text renderer
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150436867
2017-03-22 18:47:45 +00:00
olly
c8059e5969 Update release notes + bump versions
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150358346
2017-03-17 12:17:41 +00:00
olly
b98de975f1 Make Util.inferContentType marginally smarter
Issue: #2513

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150310349
2017-03-16 16:16:20 +00:00
olly
9b0d24c909 Fix stuck-buffering state when playing merged media
Also added a TODO to track clarifying SequenceableLoader
more accurately and auditing existing implementations.

Issue: #2396

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150305685
2017-03-16 16:14:08 +00:00
aquilescanta
ce5c0c18f9 Rename AdaptiveVideoTrackSelection to AdaptiveTrackSelection
This will allow us to use the same class for Audio adaptation.

Issue:#1975

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150302561
2017-03-16 16:13:03 +00:00
adrianv
cadce0ef3f Add @Nullable annotation for an optional field in CacheDataSource's constructor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150278031
2017-03-16 16:11:49 +00:00
aquilescanta
7c9b771ec8 Create HlsMediaSource.Manifest to hold playlist information
This allows the user to get the HlsMasterPlaylist through
Exoplayer.getCurrentManifest().

Issue:#2537

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150232455
2017-03-16 16:09:46 +00:00
eguven
76c9968211 Add RepresentationKey and DashManifest copy method
RepresentationKey defines a representation location in a DashManifest.
DashManifest copy method creates a copy of the manifest which includes
only the representations pointed by the given RepresentationKeys.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150195990
2017-03-15 18:50:07 +00:00
eguven
f092c4446f Move TestUtil.createTempFolder and TestUtil.recursiveDelete to Util class
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150190520
2017-03-15 15:55:39 +00:00
olly
d6db5066cd Improve publishing to Bintray
- Update bintray-release version
- Publish to exoplayer-test unless -PpublicRepo=true
- Publish GVR extension
- Minimize duplication with new publish.gradle

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150185740
2017-03-15 15:54:43 +00:00
olly
a9617af29c Use fast surface switching on API level 23+ when possible
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150185483
2017-03-15 15:53:38 +00:00
aquilescanta
7c5f0b7d3b Make Video track selections before others
This will allow us to make a single adaptive selection prioritizing
video selections.

Issue:#1975

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150185086
2017-03-15 15:52:30 +00:00
olly
db5f81ecfd Allow disabling ID3 metadata parsing if not required
Issue: #2553

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150184824
2017-03-15 15:51:23 +00:00
olly
d077e23daa Improve DefaultExtractorInput's peek buffer sizing.
- Don't resize the peek buffer to be twice as large as a
  large amount!
- Trim the peek buffer, to allow large peek buffer allocations
  to be reclaimed.

Issue: #2553

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150184291
2017-03-15 15:50:17 +00:00
aquilescanta
7c587c6b82 Prevent playlist loading if refresh is already scheduled
This greatly reduces the amount of server requests issued by
the playlist tracker.

Issue:#2548

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150055046
2017-03-15 15:45:50 +00:00
olly
204537ed40 Pre-modularization cleanup
- Use a variable for the (default) minSdkVersion. There will
  be more modules that need it, and it'll be easier to manage
  if it's in one place.

Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150050663
2017-03-15 15:44:46 +00:00
Oliver Woodman
139252c9d3 Propagate defaultRequestProperties + make getDefaultRequestProperties final 2017-03-13 16:25:44 +00:00
olly
3131074338 Upgrade dependencies
Issue: #2516

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149942409
2017-03-13 15:54:10 +00:00
bachinger
aede0f894d Propagate updates of default header fields of the HttpDataSource.BaseFactory to HttpDataSource instances.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149780233
2017-03-13 15:54:10 +00:00
aquilescanta
952bde700b Ensure only timestamp adjustment masters set first sample timestamps
Without this, it is possible that a non timestamp master instances
the adjuster with its own chunk start time. When chunks are not
aligned, this breaks adjustment.

Issue:#2424

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149764488
2017-03-13 15:54:10 +00:00
ojw28
6d61519421 Merge pull request #2547 from LiveLike/program-date-time-regex
Support comma separators in ISO-8601 date/time format for milliseconds
2017-03-13 10:00:35 +00:00
Ben Wilber
578b9545f0 Support commas in ISO-8601 date/time format for millis 2017-03-10 16:09:58 -05:00
eguven
f21cdcb9c5 Allow null DataSink.Factory in CacheDataSourceFactory
CacheDataSource allows null DataSink. Do the same in CacheDataSourceFactory.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149750696
2017-03-10 14:24:43 +00:00
aquilescanta
cb0187959c Fix NPE in HLS playback of non-muxed streams
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149749504
2017-03-10 14:24:43 +00:00
cdrolle
0cb9802e1b Fixed CEA-708 issues
Caption characters weren't being assigned to the correct window and the lack of
pen location support was causing multiple lines (and words) to be concatenated.

As per the CEA-708-B specification, section 8.10.5, when we encounter a DefineWindow
command, we're also supposed to update the current window to the newly defined one.
We were not doing this previously, resulting in text that should have been in separate
windows being combined into one. Furthermore, some content uses the SetPenLocation
command to move the cursor down a line instead of appending a new line. As we don't
currently support SetPenLocation, this resulted in multiple lines (and words) being
concatenated together, potentially causing the text to extend past the edge of the
window/screen. This change implements a workaround (until SetPenLocation is properly
supported) for this issue in which setting the pen location to a new row will append
a new-line to that window.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149679613
2017-03-10 14:24:43 +00:00
cdrolle
b84c84cc76 Fixed CEA-708 issue where cues weren't updated at the appropriate times
As per the CEA-708-B specification, section 8.10.4, cues don't necessarily
need either an ETX command or any of the C1 commands before being updated
with the latest buffered content. While those commands do indicate that the
cues should be updated immediately, the cues can also be updated after a
service block has been processed if it appended text to the buffer.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149673162
2017-03-10 14:24:43 +00:00
eguven
b6773dba05 Add PriorityDataSourceFactory
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149543747
2017-03-10 14:24:43 +00:00
aquilescanta
3be4451e13 Allow injection of DataSource's per type of data
This allows the client to define what data source is used for
media chunks, encryption chunks and playlists.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149537766
2017-03-10 14:24:43 +00:00
eguven
78e7c3c510 Make CacheDataSourceFactory createDataSource return specific type
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149533820
2017-03-10 14:24:43 +00:00
olly
45c7fe9b00 Drain embedded track sample queues when not enabled.
I think it's likely we'll revert back to discarding media
in sync with the playback position for ExtractorMediaSource
and HlsMediaSource too, where the tracks are muxed with ones
we're requesting anyway.

Note: discardBuffer is named as it is because it'll also be
used to discard for enabled tracks soon, as a result of the
remaining TODO in ChunkSampleStream. For enabled tracks the
discard will also be conditional on the samples having been
consumed, obviously.

Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149525857
2017-03-10 14:24:43 +00:00
olly
09471defd7 Enabled EMSG and CEA-608 embedded streams for DASH
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149524412
2017-03-10 14:24:43 +00:00
andrewlewis
99e19a92af Fix SampleStream javadoc.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149431794
2017-03-10 14:24:43 +00:00
aquilescanta
e7462f05f5 Add maxVideoBitrate to DefaultTrackSelector.Parameters
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149097876
2017-03-10 14:24:43 +00:00
aquilescanta
8e9711e8aa Allow packed audio without PRIV timestamps
We use the segments' start time when the timestmap is not present.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149006252
2017-03-10 14:24:43 +00:00
eguven
e40bba2852 Add Cache.getCachedBytes() which returns the length of the cached or not data block length
This method can be used to determine not cached parts of a content.
The 'length' parameter allows quicker responses without going through all adjacent spans.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149005688
2017-03-10 14:24:43 +00:00
aquilescanta
247da48e9d Make ElementaryStreamReader's public
This allows building a TsPayloadReader.Factory without
having to wrap the default one.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149004102
2017-03-10 14:24:43 +00:00
sxp
0dee4aec70 Deprecate instead of delete BaseRender.readSource(FormatHolder, DecoderInputBuffer)
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148808381
2017-03-10 14:24:43 +00:00
mofneko
5b0192a3dd Update HlsPlaylistTracker.java
Fix unused variable.
2017-03-08 03:20:34 +09:00
andrewlewis
a9079f67aa Fix some documentation nits.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148776593
2017-02-28 17:37:44 +00:00
olly
ab8fd14724 Support multiple track outputs from BaseMediaChunk
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148764237
2017-02-28 17:36:45 +00:00
andrewlewis
d58008eeb7 Rename BufferProcessor to AudioProcessor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148763781
2017-02-28 17:35:35 +00:00
olly
91639b26cd Add some pipelining in MetadataRenderer
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148760782
2017-02-28 17:34:29 +00:00
andrewlewis
b3cfeaa17b Discard extra silent channels on Samsung Galaxy S6/S7.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148654495
2017-02-28 13:47:18 +00:00
eguven
2411d0fc76 Move and rename PRIORITY_PLAYBACK to C constants class
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148651265
2017-02-28 13:47:18 +00:00
eguven
98f4fb85c2 Move utility methods to DashUtil class
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148647040
2017-02-28 13:47:18 +00:00
aquilescanta
e26723cdc7 Add MODE_SINGLE_PMT to TsExtractor
This mode allows the extractor to support streams with multiple
programs declared in the PAT, but only one PMT. This is necessary
to support tuner-obtained media.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148636312
2017-02-28 13:47:18 +00:00
olly
35988395d2 Fix incorrect Javadoc
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148633347
2017-02-28 13:47:18 +00:00
olly
ad857852e5 Discard subtitles with invalid positions
textWidth can be negative if textLeft extends parentRight (i.e.
the subtitle is positioned entirely off the screen to the RHS).
We should just discard and log a warning in this case.

Issue: #2497

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148481310
2017-02-28 13:47:18 +00:00
andrewlewis
129334d2a0 Clean up method ordering in ResamplingBufferProcessor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148444806
2017-02-28 13:47:18 +00:00
olly
88fc337db0 Expose empty CEA-608 and EMSG tracks for DASH
This change exposes declared CEA-608 and EMSG tracks. The
tracks currently provide no samples.

Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148390849
2017-02-28 13:47:18 +00:00
olly
d99cb28e6a Correctly handle a SampleStream ending without providing a format
I'm going to introduce an EmptySampleStream that will be used in
some cases in conjunction as part of 608/EMSG support. This change
avoids EmptySampleStream having to provide a dummy format.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148383831
2017-02-28 13:47:18 +00:00
aquilescanta
ef2541e654 Fix negative start time values
Issue:#2495

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148348663
2017-02-28 13:47:18 +00:00
andrewlewis
e3a57146d2 Fix BufferProcessor.queueEndOfStream javadoc
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148344328
2017-02-28 13:47:18 +00:00
andrewlewis
82d33cde68 Add support for draining audio output.
At the end of playback, BufferProcessors need to be drained to process all
remaining data, then the output needs to be written to the AudioTrack before
stop() is called.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148339194
2017-02-28 13:47:18 +00:00
Oliver Woodman
5fe5076c86 Clarify naming for ClearKey DRM support 2017-02-23 14:51:58 +00:00
Oliver Woodman
3bb08e58f6 Cleanup of CENC support 2017-02-23 14:27:23 +00:00
ojw28
7e02e58e16 Merge pull request #2372 from wasabeef/dev-v2-cenc-clearkey
Added support for CENC ClearKey
2017-02-23 14:17:11 +00:00
aquilescanta
3fc3349e95 Add support for Caption Format Descriptor
This allows the TsExtractor to automatically determine the
closed caption tracks to expose by parsing available
descriptors.

Issue:#2161

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148321380
2017-02-23 14:14:23 +00:00
olly
698e081eda Handle empty PRIV frames
Issue: #2486

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148217936
2017-02-23 14:13:30 +00:00
olly
ddbced7317 Conditionally enable EMSG/608 based on manifest declarations
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148216614
2017-02-23 14:12:28 +00:00
andrewlewis
682987a0cf Separate input/output handling in BufferProcessors.
This allows BufferProcessors to partially and/or asynchronously handle
input/output. Document contract for queueInput and getOutput.

Update ResamplingBufferProcessor to use the new interface.

Separate submitting bytes vs. writing data to the AudioTrack.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148212269
2017-02-23 14:11:23 +00:00
aquilescanta
896550883f Add support for multiple CC channels in HLS
Issue:#2161

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148203980
2017-02-23 14:10:18 +00:00
aquilescanta
e86629ef3a Allow exposing multiple CEA608 tracks for Transport Streams
This CL allows passing multiple formats describing CC channels to the
TS payload reader factory. As a simple usecase, ATSC can expose both
608 channels by passing a two element list with the corresponding
accessibility channels. The HLS media source can construct this list
from the EXT-X-MEDIA:TYPE="CLOSED-CAPTIONS" tags, including language
and selection flags. The interface extends without modification to
708.

Pending work:
* Multiple CC channels in HLS.
* caption_service_descriptor parsing for overriding the user's selection.
* 708 support in SEI reader.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148030293
2017-02-23 14:09:05 +00:00
olly
a84216c3a9 Allow enabling of EMSG/608 outputs on DefaultDashChunkSource
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148027655
2017-02-23 14:08:01 +00:00
aquilescanta
72e1eae6f5 Discard preparation chunk if track selection does not include it
This avoids breaking the player if the first variant is not
supported by the device.

Issue:#2353

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148025791
2017-02-23 14:06:54 +00:00
andrewlewis
17762ebaa2 Reformat @IntDef field/return type annotations.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148018580
2017-02-23 14:04:42 +00:00
wasabeef
e0f7a12488 Added support for CENC ClearKey 2017-02-22 16:01:43 +09:00
Oliver Woodman
11c16d83fd Final nit fixes for Cue/SubtitlePainter 2017-02-20 13:13:13 +00:00
Oliver Woodman
539072dbf4 Remove useless Cue constructor 2017-02-20 13:09:40 +00:00
Oliver Woodman
5fbf109694 Use Math.round instead of floor. 2017-02-20 13:03:06 +00:00
Oliver Woodman
31513202df Fix subtitle painter issues 2017-02-20 13:01:00 +00:00
Oliver Woodman
21923ae1fa m 2017-02-20 12:55:07 +00:00
Oliver Woodman
f16058422d Fix import order 2017-02-20 12:51:56 +00:00
Oliver Woodman
e27a6eca89 Merge branch 'dev-v2_imagesubs' of git://github.com/drhill/ExoPlayer into drhill-dev-v2_imagesubs 2017-02-20 12:46:51 +00:00
Oliver Woodman
edae29dff7 Fix import order 2017-02-20 11:35:06 +00:00
Oliver Woodman
37c15e7cee Minor stylistic tweaks 2017-02-20 11:33:43 +00:00
Daniel Santiago
e9399f8684 Added flags to the mp3 extractor to control behavior of the extractor. Added FLAG_ENABLE_CONSTANT_BITRATE_SEEKING to let the extractor know that the CBR seeker is desired in the case where the seeker has determine the track is not seekable For example, in the case where the track has a Xing Header but no content table. 2017-02-19 13:51:13 -08:00
eguven
c3d7eecd1f Fix ChunkExtractorWrapper.init(TrackOutput) calls with null TrackOutput after extractor initialized
InitializationChunk calls init(null). When the initialization and index data is separate they need to
be loaded separately which results to two init(null) calls.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147837985
2017-02-17 16:10:49 +00:00
olly
14507c4503 Fix NPE parsing ContentProtection element
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147833328
2017-02-17 16:09:55 +00:00
olly
bc9dfa8139 Fix build
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147796398
2017-02-17 16:08:53 +00:00
olly
ba9a82e982 Use execute instead of submit
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147794314
2017-02-17 16:07:46 +00:00
ojw28
fccaa07be3 Merge pull request #2463 from purpleblues/dev-v2
Fixed a typing error
2017-02-16 17:22:25 +00:00
ojw28
26f4e528d5 Merge pull request #2464 from jschamburger/dev-v2
Make DrmSessionException constructor public to enable creating custom DrmSessionManager implementations.
2017-02-16 17:22:01 +00:00
olly
0d468ca7bf DASH: Support mspr:pro element
Issue: #2386

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147725616
2017-02-16 17:20:19 +00:00
Johannes Schamburger
f8bb329ef2 Make DrmSessionException constructor public to enable creating custom DrmSessionManager implementations. 2017-02-16 17:05:12 +01:00
Sungmin Kim
e74b729952 fixed a typing error 2017-02-16 21:23:28 +09:00
olly
65d4b1cf5c Make CeaUtil robust against malformed SEI data
I've also added a TODO to not even bother trying to parse CEA from
SEI NAL units if they're fully or partially encrypted, which it's
possible to determine in the FMP4 extractor.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147613979
2017-02-15 18:59:45 +00:00
andrewlewis
ec98bd9ea1 Work around broken AAC decoder EoS handling on L.
SoftAAC2 would cause an exception to be thrown from
dequeueOutputBuffer/releaseOutputBuffer after queueing an end-of-stream buffer
for certain streams.

The bug was introduced in L and fixed in L MR1, so the workaround is targeted to
API 21.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147613659
2017-02-15 18:58:51 +00:00
olly
d6e15b7953 DASH: Correctly handle empty segment indices
Issue: #1865

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147613244
2017-02-15 18:57:45 +00:00
andrewlewis
5c571e6e9d Handle H.265/HEVC SEI NAL units in FragmentedMp4Extractor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147609330
2017-02-15 18:56:41 +00:00
andrewlewis
fd6012a727 Remove outputBuffer assertion in ResamplingBufferProcessor.
The outputBuffer is not necessarily empty after a flush, so the assertion could
fail in normal usage. The assertion can just be removed as the output buffer is
rewritten in full on every call to handleBuffer.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147541016
2017-02-15 17:05:53 +00:00
andrewlewis
3691454b82 Fix resuming after error for CEA-608 SEI in fMP4.
Also test SEI parsing in FragmentedMp4ExtractorTest.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147460699
2017-02-15 17:04:50 +00:00
olly
7625c1b862 Remove unnecessary configuration parameter.
- It's always fine to prefer the manifest drm init data. In
  DASH we always do this anyway. In SS the manifest and sample
  formats are identical.
- Optimized the case where the manifest and sample formats are
  identical by avoiding the format copy.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147385282
2017-02-15 17:03:47 +00:00
olly
8cb3b6ed07 SmoothStreaming: Replace variant bitrate/start_time placeholders
Issue: #2447

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147358615
2017-02-15 17:02:47 +00:00
olly
0316ab80df Fix broken Javadoc
Issue: #2433

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147355544
2017-02-15 17:01:41 +00:00
eguven
f7fbbe993e Fix ArrayIndexOutOfBoundsException while reading SEI NAL unit
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147165453
2017-02-15 16:57:33 +00:00
cdrolle
ef475eb9c9 Fixed potential bug in which old paint-on captions could be drawn overtop by pop-on captions as they weren't being cleared properly.
This fix was taken from YouTube's Cea608Decoder ([]

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147066662
2017-02-15 16:56:29 +00:00
maxjulian
9e07cf7c73 Update exoplayer 1 and 2 to support stereo mesh layout.
Reference spec:
https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md#semantics

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147060701
2017-02-15 16:55:24 +00:00
cdrolle
de46ed7fb9 Fixed an issue with Cea608Decoder in which tab commands were not being used correctly.
Tab commands were being used cumulatively (i.e. moving the cursor farther and farther over) resulting in the text eventually trying to write beyond the bounds of the screen and throwing an exception.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146783284
2017-02-15 16:53:04 +00:00
aquilescanta
7c8a3d006d Flexibilize mp4 extensions detection for HLS chunks
This CL adds support  mp4 extensions of the form .m4_.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146479870
2017-02-15 16:50:52 +00:00
olly
d3f4da749c Propagate track type through ExtractorOutput.track
This allows binding by track type in ChunkExtractorWrapper, which
allows the EMSG and 608 tracks to be enabled on FragmentedMp4Extractor
in DefaultDashChunkSource. ChunkExtractorWrapper currently binds these
to DummyTrackOutputs.

Note: I wanted to pass the mimeType instead, since it's a more specific,
but unfortunately there's at least one place where it's not known at the
point of invoking track() (FlvExtractor).

Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146471082
2017-02-15 16:49:47 +00:00
aquilescanta
f2d3af7dea Delete dead code and fix javadocs from hls
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146466389
2017-02-15 16:47:43 +00:00
andrewlewis
c82319332f Omit clipped samples when applying edits for audio tracks.
Issue: #2408

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146389955
2017-02-15 16:46:39 +00:00
cdrolle
537a3ab5be Fixed 2 issues with Cea708Decoder.
The first issue occurs when we attempt to process a DtvCcPacket that hasn't been completely filled. In this case we attempted to extract data beyond the length of the packet, instead of dropping the packet as we should have. The other issue occurs when we encountered an invalid cc_data_pkt. In that case we were finalizing the entire DtvCcPacket, instead of just ignoring that particular cc_data_pkt as we should have.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146373074
2017-02-15 16:45:39 +00:00
aquilescanta
0402191ace Make SeiReader injectable to H26xReaders
This CL is a no-op refactor but allows defining the outputted
channels through the TsPayloadReaderFactory.

Issue:#2161

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146243736
2017-02-15 16:44:38 +00:00
olly
ee3c5f875f Simplify chunk package ahead of EMSG/608 piping
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146243681
2017-02-15 16:43:36 +00:00
eguven
025a67cae9 Enable buffering for CacheDataSink by default
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146221487
2017-02-15 16:42:34 +00:00
andrewlewis
74acbe04e3 Pass an array of BufferProcessors to the AudioTrack.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146215966
2017-02-15 16:41:32 +00:00
aquilescanta
feeec77407 Add support for multiple programs in a single TS
* Prevents calling endTracks() before all PMTs have been
  processed.
* Adds a unique ID to the format of each track. This allows
  the track selector to identify which track belongs to
  each program. The format of each id is
  "<program number>/<track output id>".

Note: This CL will break malformed TS files whose PAT
declares more PMTs than it actually contains, which
previously were supported. This does not apply for HLS
mode.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146151642
2017-02-15 16:40:28 +00:00
andrewlewis
4301606200 Add a BufferProcessor for resampling.
This initial version of the BufferProcessor interface assumes that buffers are
handled in their entirety on each invocation.

Move PCM resampling out of AudioTrack into a BufferProcessor.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146128411
2017-02-15 16:39:28 +00:00
eguven
3edeec2495 Document passing null cacheWriteDataSink to CacheDataSource constructor
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146128328
2017-02-15 16:38:28 +00:00
olly
7c1b2beb84 Support dyanmically setting key request headers
Issue: #1924

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146120465
2017-02-15 16:37:27 +00:00
olly
8f482cb2ed Fixing some Javadoc errors
- Cea708 Javadoc references private internals with @link. Doc
  about device accessibility settings doesn't relate to the
  decoder, either.
- Creator Javadoc unnecessary.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146118092
2017-02-15 16:35:17 +00:00
cdrolle
87e790f44d Fixed issue with TextRenderer and RawCC 608/708 captions in which all the captions prior to the playback position would be rendered in [] succession when a VOD stream starts.
Instead of clearing the DECODE_ONLY flag for all input buffers in TextRenderer (i.e. for all caption types), we now only clear it on the output buffer in SimpleSubtitleDecoder. The number if input buffers in CeaDecoder has also been increased to reduce the delay before captions appear for playback sessions that start far ahead into the content.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146028680
2017-02-15 16:34:15 +00:00
cblay
2e7f9fb6cb Don't setContentLength() in CacheDataSource if the current request ignores cache.
Otherwise an empty cache span is created.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146014081
2017-01-30 19:19:43 +00:00
ojw28
a7dd0f7609 Merge pull request #2326 from devint1/alac-dev
Apple Lossless (ALAC) support
2017-01-30 18:44:47 +00:00
olly
615b707b16 Bump version + update release notes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145994313
2017-01-30 16:31:30 +00:00
aquilescanta
e6bbd397d5 Add support for HLS's #EXT-X-PLAYLIST-TYPE
Issue:#805

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145991145
2017-01-30 16:30:34 +00:00
aquilescanta
7ee8567f4a Fix demo app to avoid seeking if resume position is clear
This fixed the resume live window issue by modifying the demo app.

Issue:#2344

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145987470
2017-01-30 16:29:23 +00:00
aquilescanta
9a90795041 Resume from playback position by default when media source changes
Issue:#2369

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145982198
2017-01-30 16:27:53 +00:00
aquilescanta
c49d142981 Prevent old playlist snapshots from being used on live HLS streams
This aims to replace InvalidCodeResponse's with BLWE's caused by trying to
load chunks that have been removed from the server.

Issue:#2344

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145679171
2017-01-30 16:26:49 +00:00
olly
63e6bf5cf2 Consolidate UnrecognizedInputFormatException
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145570097
2017-01-25 19:29:10 +00:00
olly
6f5c7b38a7 Wait for first sync frame in MediaCodecRenderer
For the video renderer, it's not true that the source always
provides from a sync frame specifically in the case where
the surface has been replaced on the renderer. In this case
the source doesn't know that it should be providing from a
sync frame.

Issue: #2093

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145562222
2017-01-25 19:28:08 +00:00
andrewlewis
98db14e7e5 Fix some documentation nits in AudioTrack.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145554504
2017-01-25 19:27:05 +00:00
cdrolle
e9ab71a280 Modified CeaDecoder and CeaSubtitle so that it's correctly setting the subsampleOffset and making proper use of it.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145552166
2017-01-25 19:26:03 +00:00
olly
0a8dc41632 Set max resolution from codec capabilities for ABR where resolutions are unknown
Issue: #2096

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145542983
2017-01-25 19:25:02 +00:00
olly
953c6855ec FMP4 EMSG/CEA608 output bug fix + tweaks
- Fix to use different track ids for EMSG + CEA608, so they can
  both be enabled at once.
- Tweaked extractor to output formats prior to endTracks() when
  parsing the initial moov box. This makes it easier to handle
  multiple tracks through the chunk package. It may or may not
  be made a requirement (it's already true for the MKV extractor).

Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145538757
2017-01-25 19:23:58 +00:00
eguven
8970e80b25 Don't use the returned key set id if the request wasn't for an offline license key
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145533961
2017-01-25 19:22:56 +00:00
zhihuichen
0e99237075 Allow duplicate tracks in WebM/MKV extractor
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145457836
2017-01-25 19:21:55 +00:00
olly
c01c2c34f7 Store full accessibility descriptors in parsed DASH manifest
Issue: #2362

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145402640
2017-01-24 14:25:47 +00:00
olly
4efdd14c65 Allow FMP4 extractor to output CEA-608
Issue: #2362

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145401668
2017-01-24 14:25:47 +00:00
aquilescanta
b1ec5e3a25 Move TimestampAdjuster from extractor to util
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145295850
2017-01-24 14:25:47 +00:00
aquilescanta
497651c7b9 Ignore file extension for HLS Subtitle Renditions
According to the spec, subtitle renditions must be Webvtt media
segments.

Issue:#2025
Issue:#2355

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145289266
2017-01-24 14:25:47 +00:00
aquilescanta
18d7cdf39f Add pts adjustment in SpliceInfoDecoder
This allows the user to interpret PTSs in the playback timebase.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145280921
2017-01-24 14:25:47 +00:00
olly
5debf5a14a Use bitrate as fixed track selection tie breaker
If we don't have resolutions (and therefore cannot determine
pixel counts) then use bitrate as a tie breaker instead. Also
use pixel count as a tie breaker if pixel counts are known
but equal. Streams with known pixel counts will always be
preferred over streams without.

Issue: #2343

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145269968
2017-01-24 14:25:47 +00:00
Oliver Woodman
55ca323cee Add upstream.crypto package (and friends). 2017-01-20 20:50:02 +00:00
olly
52d47aa244 Fix possible track selection NPE
If no tracks are selected at the start of playback, TrackSelectorResult
isEquivalent(null) returned true, meaning we were keeping the old result
(i.e. null), which we then tried to de-reference.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145105702
2017-01-20 19:27:30 +00:00
aquilescanta
63604493b4 Fix memory leak in HlsMediaChunk's
Issue:#2319

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145089668
2017-01-20 19:26:34 +00:00
olly
26b303a449 Pull assertion and layer of indirection out from ChunkExtractorWrapper
It should be possible to remove ChunkExtractorWrapper from the track
output side as well (currently all extractor output is funneled via
ChunkExtractorWrapper just so it can adjust the format, which is kind
of unnecessary).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145083620
2017-01-20 16:12:03 +00:00
tap-prod
5407c98526 Automated rollback
*** Original change description ***

Pull assertion and layer of indirection out from ChunkExtractorWrapper

It should be possible to remove ChunkExtractorWrapper from the track
output side as well (currently all extractor output is funneled via
ChunkExtractorWrapper just so it can adjust the format, which is kind
of unnecessary).

***

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145078094
2017-01-20 16:11:16 +00:00
olly
6e18c97c20 Pull assertion and layer of indirection out from ChunkExtractorWrapper
It should be possible to remove ChunkExtractorWrapper from the track
output side as well (currently all extractor output is funneled via
ChunkExtractorWrapper just so it can adjust the format, which is kind
of unnecessary).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145076891
2017-01-20 15:44:41 +00:00
olly
7abc34c6ae Respect decode-only flag in MetadataRenderer
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144999973
2017-01-20 15:43:42 +00:00
olly
9617986538 Remove redundant MetadataDecoder.canDecode method
This is no longer needed as MetadataDecoderFactory
figures out which decoder should be used.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144999613
2017-01-20 15:42:40 +00:00
olly
641597d708 Add a flag to enable EMSG output from FMP4 extractor
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144999302
2017-01-20 15:41:40 +00:00
olly
430d8e8a7a Rename SingleTrackMetadataOutput ahead of real metadata support
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144969838
2017-01-20 15:39:35 +00:00
olly
ae01c1a6fd Move inband event streams to Representation
This is more consistent with our handling of DRM init data,
and is more correct. It'll be up to whoever's using the
manifest to look one layer deeper and figure out what event
streams are defined on all representations, if they wish to
do so.

Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144968183
2017-01-20 15:38:30 +00:00
olly
d9be650b3b DASH: Fix propagation of language from manifest
Issue: #2335

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144956177
2017-01-20 15:37:25 +00:00
eguven
4b957cce47 Fix streaming license renew error
When the first streaming license request response provided to mediaDrm it might return an empty array instead of null.
This was set to offlineLicenseKeySetId which made the work like there is a valid offline license.
Simplified the code and made it to set offlineLicenseKeySetId only if there is sensible data in keySetId.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144843144
2017-01-18 18:21:06 +00:00
olly
51f96374d4 Make headers consisting across build.gradle files
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144826116
2017-01-18 18:19:03 +00:00
andrewlewis
bc4dc591f5 Fix some style nits in ID3 chapter support.
Issue: #2316

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144815010
2017-01-18 11:28:06 +00:00
cdrolle
18a24a1fde Added the CEA-708 support to the open-source project.
Issue: #1807

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144726542
2017-01-17 18:50:38 +00:00
Oliver Woodman
1ffe7753c6 Another ID3 bug fix 2017-01-17 17:37:33 +00:00
Oliver Woodman
f1e3d3f244 Enable tunneling end-to-end
- Tunneling can be enabled by calling:
  trackSelector.setTunnelingAudioSessionId(
      C.generateAudioSessionIdV21(this));

- If enabled, tunneling is automatically used when the renderers
  and track selection combination support it. Tunneling is
  automatically turned on and off through playlists if the support
  changes.

Issue: #1688
2017-01-17 17:21:10 +00:00
Oliver Woodman
c828d9b0bf Some ID3 bug fixes 2017-01-17 15:49:51 +00:00
Oliver Woodman
48099ee52e Fix comments 2017-01-17 15:33:35 +00:00
Oliver Woodman
5aff31c061 Further improve ID3 parsing 2017-01-17 15:29:07 +00:00
Oliver Woodman
31602af3e6 Merge branch 'dev-v2' of git://github.com/geekygecko/ExoPlayer into geekygecko-dev-v2 2017-01-17 13:53:50 +00:00
olly
7f967f3057 DASH: Parse Role elements to select default audio/text tracks
Issue: #2058

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144693705
2017-01-17 13:44:14 +00:00
aquilescanta
6e481178ea Track HLS discontinuities when playlist does not declare sequence
This is an initial version that does not handle cross-playlists
adjustment in an ideal way.

Issue:#1789

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144692969
2017-01-17 13:43:18 +00:00
aquilescanta
7d7a159195 Provide sample timestamps and subsample offset for Splice info
This will allow recreating timestamp adjustment on the decoding side.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144692956
2017-01-17 13:42:13 +00:00
olly
0e0b23f11e Update getTrackType for completeness
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144690284
2017-01-17 13:41:10 +00:00
olly
79a0899124 Always re-send format if sample buffer is null
Also clear the playingPeriodHolder in the case the renderers
are being disabled. This is required to ensure that
setPlayingPeriodHolder isn't turned into a no-op, which will
break the seek.

Issue: #2330

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144635220
2017-01-17 13:40:05 +00:00
Philip Simpson
f6ecaddc88 Improved ID3 chapter parsing code from feedback given. 2017-01-17 12:03:18 +10:30
Philip Simpson
5153e9e977 Improved ID3 chapter parsing code from feedback given. 2017-01-17 12:00:48 +10:30
olly
60a3eda1e0 Support tunneling in video renderer
At this point the renderers all have TODOs in enable(),
and turning on tunneling is reduced to the problem of
propagating a tunneling ID to these points.

Issue: #1688

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144619393
2017-01-16 11:43:07 +00:00
ojw28
5742c87755 Merge pull request #2327 from pipelka/audio-seek-fix
reconfigure audiotrack on format change
2017-01-16 09:44:59 +00:00
Philip Simpson
f2f1058066 Added ID3 chapter support. 2017-01-16 17:40:02 +10:30
Oliver Woodman
41c4295aee Fix build break + cleanup 2017-01-16 00:20:51 +00:00
ojw28
a418b132d9 Merge pull request #2318 from WeiChungChang/far_seek_improvement
Improve far seek performance of chunkSampleStream
2017-01-16 00:02:44 +00:00
ojw28
bd744fc508 Merge pull request #2314 from meteoorkip/vector-drawables
Fix vector drawable usage on API level 21 or above
2017-01-16 00:01:13 +00:00
eguven
418cd9e7e3 Make DefaultLoadControl use PriorityTaskManager if one is given
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144448491
2017-01-15 23:54:20 +00:00
Alexander Pipelka
24a0061caa reconfigure audiotrack on format change
under certain circumstances (e.g. seek to a position where the input format
changed) the audio track needs a reconfigure even if there aren't any
pending buffers
2017-01-14 12:14:37 +01:00
WeiChungChang
2214a4c152 'refine_to_make_flow_simpler' 2017-01-14 10:22:27 +08:00
Devin Tuchsen
30c59c7a3f
Apple Lossless (ALAC) support 2017-01-13 20:16:49 -06:00
andrewlewis
5a16aee2c9 Use stereo for mono audio passthrough on fugu.
Also backport the Shield workaround to v1.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144446498
2017-01-13 17:27:26 +00:00
olly
270f68a95e Add convenience methods to query current window
- Support querying whether the current window is dynamic
  and seekable. The new methods are similar to getDuration,
  which is also a convenience method for the current window.
- Improve demo app to restore positions in VOD items within
  playlists where the last item is live. Also restore the
  position within the window for live items unless the player
  failed with BehindLiveWindowException.

Issue: #2320

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144443898
2017-01-13 17:27:26 +00:00
andrewlewis
ca7febe442 Remove unused local variable in AudioTrack.java.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144443010
2017-01-13 17:27:26 +00:00
aquilescanta
28e117d25f Add support for #EXT-X-START tag
This overrides the start position relative to the window.

Issue:#1544

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144434903
2017-01-13 17:27:26 +00:00
eguven
63123f455c Add SimpleCache tests for encrypted index file
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144431191
2017-01-13 17:27:26 +00:00
eguven
5f4d6506e0 Add argument checks and some javadoc to CachedContentIndex
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144430372
2017-01-13 17:27:25 +00:00
olly
0c53a4e913 Add TrackSelectorResult
This class can accommodate extra information that may potentially
be specified by TrackSelectors in the future (e.g. configuration
for renderers). Even if we don't do this, it's cleaner to have a
proper class and an info field to refer to, as opposed to using a
Pair.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144428963
2017-01-13 17:27:25 +00:00
eguven
060f2a5d6f Remove unnecessary parameter and local variables
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144427132
2017-01-13 17:27:25 +00:00
eguven
f194df1149 Close InputStream after read
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144424329
2017-01-13 17:27:25 +00:00
olly
1eede5d5bb Fix gradle/proguard setup
- Add proguard rules for libraries/extensions into .aar files
- Add proguard rules to retain CEA608/708 decoder constructors
- Remove lots of default config from gradle files
- Remove disabling of abort on lint error
- Enable optimizations on release builds of demo app

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144350233
2017-01-13 17:27:25 +00:00
aquilescanta
264ba8cfcf Change MetadataDecoder interface to receive a MetadataInputBuffer
This allows passing a subsampleOffsetUs as in Text decoding.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144334172
2017-01-13 17:27:25 +00:00
aquilescanta
4a6a8553e9 Check #EXTM3U header is present in HLS playlists
Issue:#2301

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144334062
2017-01-13 17:27:25 +00:00
cdrolle
706a6b83a9 Removed the direct-referencing of the Cea608Decoder and Cea708Decoder classes from SubtitleDecoderFactory.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144329795
2017-01-13 17:27:25 +00:00
olly
e125ed705e Report tunneling support via RendererCapabilities API
Also revert ability to query for a decoder that explicitly
supports tunneling, since in the new design we'll just be
querying the first decoder provided by the MediaCodecSelector
and then reporting what it supports. This is in line with
what we do when reporting support for adaptive switching.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144315746
2017-01-13 17:27:25 +00:00
mdoucleff
5752524442 Allow extension of SlidingPercentile
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144240101
2017-01-13 17:26:51 +00:00
olly
cd42434719 Plumbing to enable tunneling on AudioTrack from renderers
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144223539
2017-01-13 17:06:49 +00:00
olly
3547c9034e Report audio decoder adaptation support correctly
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144219518
2017-01-13 17:05:45 +00:00
andrewlewis
2906a2ea09 Simplify AudioTrack.handleBuffer's return value.
Position discontinuities are notified via AudioTrack.Listener.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144202048
2017-01-13 17:04:43 +00:00
olly
444811c010 Don't overflow when dealing with large segment numbers
Issue: #2311

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144182445
2017-01-13 17:03:41 +00:00
andrewlewis
ce03b8c246 Move AudioTrack initialization into handleBuffer.
Move initialization code from the audio renderers into handleBuffer. The audio
session id and tunneling enabled state can be altered using new setters.

This change is not intended to change the behavior of the audio renderers.
Before this change, the AudioTrack would always be reinitialized by the
renderers before calling handleBuffer.

Add a protected onAudioTrackUnderrun method for custom renderers that want to
implement custom handling of underruns.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144067149
2017-01-13 17:02:39 +00:00
eguven
5c89bbedb7 Fix leftover bytes in cached content index file
Extra calls to CipherOutputStream.close() causes each time extra 16 bytes written to the
underlying OutputStream. Prevented close() is called more than once and also discarded any
data in ReusableBufferedOutputStream buffer on reset().

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144063120
2017-01-13 17:01:37 +00:00
WeiChungChang
cb0394b9cf 'improve_far_seek_of_chunkSampleStream' 2017-01-12 10:49:37 +08:00
meteoorkip
28e221f92e Fix vector drawable usage on API level 21 or above 2017-01-11 20:03:41 +01:00
olly
deefe50abc Handle ID3 frames that end with empty text field
Issue: #2309

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144061654
2017-01-10 10:52:42 +00:00
andrewlewis
bf65df1b35 Allow ClippingMediaPeriod to be used on its own.
ClippingMediaPeriod may be a useful component for other MediaSources too so
remove its dependency on ClippingMediaSource.

Also allow the clipping end point to be TIME_END_OF_SOURCE, in which case
the clipping window extends to the end of the wrapped period.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144056285
2017-01-10 10:51:49 +00:00
olly
59ab0fa9f1 Introduce MetadataDecoderFactory
This is analogous to what we do for text/subtitles, and
adds support for playlists where the type of metadata
changes from one playlist item to the next.

Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143948307
2017-01-10 10:50:52 +00:00
olly
ae2e84df35 Set HLS period duration when live stream ends
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143776633
2017-01-06 16:59:29 +00:00
olly
1da9e31d68 Parse EMSG boxes in FragmentedMp4Extractor
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143776526
2017-01-06 16:58:36 +00:00
olly
f2634d11f5 Support emsg metadata decoding
Note: End to end emsg support is still non-functional.
There's some additional plumbing that still needs to
be done.

Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143775147
2017-01-06 16:57:35 +00:00