Commit graph

2318 commits

Author SHA1 Message Date
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
eguven
9d5c750fe9 Support offline drm key downloading and restoring
Renamed StreamingDrmSessionManager to DefaultDrmSessionManager and added functionality to download, restore, renew and release offline keys. Added a utility class, OfflineLicenseHelper, to facilitate use of DefaultDrmSessionManager for downloading, renewing and releasing offline keys.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143769955
2017-01-06 16:56:31 +00:00
andrewlewis
b2a153d568 Add a player test for renderers reading ahead.
Also move timeline, manifest and format verifications into the test* methods.

Issue: #2252

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143761969
2017-01-06 16:55:09 +00:00
Drew Hill
0468a80d41 just use original plane width to calculate width proportion to use later as size and keep aspect ratio for height 2017-01-05 21:27:24 -05:00
olly
9d48d4e486 Support setting default headers on HttpDataSource.Factory's
Issue: #2166

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143703258
2017-01-05 21:57:36 +00:00
andrewlewis
a77bc8d457 Close DataSources quietly.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143672900
2017-01-05 21:56:34 +00:00
cdrolle
01d22f8123 Handle empty RawCC files.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143667717
2017-01-05 21:54:15 +00:00
Oliver Woodman
8a0e76ba32 Make sure we don't read ahead of deferred enable/disable operations
Issue: #2290
2017-01-05 14:58:13 +00:00
Oliver Woodman
037aeaf764 Some minor cleanup 2017-01-05 14:57:31 +00:00
olly
1d9d68dd12 Assume samples are at start of mdat when offset is negative
We've seen this issue reported three times now, so it's
obviously not an isolated problem. Do you think anything
bad will happen to non-SmoothStreaming playback cases if
I do this? I suspect not, but if you feel strongly I can
easily add a FLAG_WORKAROUND_X flag for it, and enable
it for SmoothStreaming only.

https://github.com/google/ExoPlayer/issues/2292
https://github.com/google/ExoPlayer/issues/2101
https://github.com/google/ExoPlayer/issues/1152

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143583714
2017-01-04 23:07:58 +00:00
eguven
4a0f224e12 Add a new flag to DataSpec which permits content to be cached even if its length can not be resolved
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143560360
2017-01-04 23:07:58 +00:00
olly
5082d1f282 Some boilerplate for DASH EMSG support
- Parse EMSG leaf atoms during FMP4 extraction (although
  currently they're just discarded).
- Add readNullTerminatedString to ParsableByteArray.

Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143555965
2017-01-04 23:07:58 +00:00
olly
f735a86ebb Better handle inconsistent HLS timeline updates
Issue: #2249

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143555467
2017-01-04 23:07:58 +00:00
olly
44d6b1a271 Add some initial plumbing for DASH EMSG support
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143554094
2017-01-04 23:07:58 +00:00
olly
ae30fe496a Fix potential NPE if source is released without being prepared
Issue: #2264

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143550088
2017-01-04 23:07:57 +00:00
olly
2512bd6e77 Add test for decoding ID3 PRIV frame
I wrote this whilst investigating a user issue. It looks like
we don't need to do anything about the issue itself, but since
I wrote the test we may as well keep it!

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143549697
2017-01-04 23:07:57 +00:00
olly
b774660989 Add multi-period ExoPlayer unit test
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143475824
2017-01-04 23:07:57 +00:00
olly
46245251e1 Fix bad indent + clean up Format formatting
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143469714
2017-01-04 23:04:07 +00:00
olly
361241f81c Make SeekBar work properly with key events if focusable
This isn't perfect because it performs seeks whilst the
user is holding down L/R, rather than when they release
it. Performing the seek on release properly looks non
trivial, and would likely require extending SeekBar.

Issue: #2278

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143440580
2017-01-04 23:04:07 +00:00
andrewlewis
04968a6da5 Fix condition for re-enabling renderers to handle reading ahead.
Issue: #2252

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143433510
2017-01-04 23:04:07 +00:00
olly
faff5ec910 Add masking to correctly select renderer
Issue: #2269

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143433012
2017-01-04 23:04:07 +00:00
eguven
39827fad27 Allow specifying a custom cacheKey to ExtractorMediaSource
Issue: #2201

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142772885
2017-01-04 23:04:07 +00:00
Oliver Woodman
0b141aeeee Revert "Improving handling of atoms with size less than header in FragmentedMp4Extractor."
This reverts commit 71186ef16e.
2017-01-04 22:32:28 +00:00
cblay
71186ef16e Improving handling of atoms with size less than header in FragmentedMp4Extractor.
These currently lead to cryptic ArrayIndexOutOfBoundsExceptions being thrown from System.arraycopy() so my proposal is to throw a more useful ParserException instead.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142087132
2017-01-04 22:26:58 +00:00
ojw28
da9c10a1b4 Merge pull request #2285 from colinrtwhite/dev-v2
Use vector drawables for the SimpleExoPlayer player control buttons.
2017-01-03 19:43:34 +00:00
Colin White
b1ea1873d3 Use Material Design drawables for the SimpleExoPlayer player control buttons. 2017-01-03 14:34:45 -05:00
meteoorkip
eda393ba82 Add default artwork support to SimpleExoPlayerView
Add support for a default artwork image that is displayed if no artwork can be found in the metadata.
2017-01-02 22:20:04 +01:00
drhill
8804ecded4 remove unneeded changes 2016-12-21 07:54:23 -05:00
Drew Hill
44b21f2e3b remove imagecue and add bitmap to cue with size_height, change to painter for displaying 2016-12-20 22:49:18 -05:00
Oliver Woodman
0d135d37b8 Add comment for workaround 2016-12-20 12:33:04 +00:00
ojw28
efc8f6fe42 Merge pull request #2134 from drhill/dev-v2_passthroughChannelFix
fix 6.1 channel passthrough failing
2016-12-20 12:26:19 +00:00
olly
a007d9a2e7 Bump version + update release notes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142539314
2016-12-20 11:39:12 +00:00
olly
ab88821614 Fix large timestamps for HLS playbacks
- If there's no program-date-time then this change is
  a no-op.
- If there is a program-date-time this change considers
  the period as having started at the epoch rather than
  at the start of the content. The window is then set
  to start at the start of the content. This is a little
  weird, but is required so that the period sample
  timestamps match the start of the period. Note that
  this also brings the handling of on-demand in line
  with how the live case is handled, meaning there wont
  be weird changes if a live stream changes into an
  on-demand one.

Issue: #2224

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142442719
2016-12-19 15:12:55 +00:00
Drew Hill
47d8b7ff16 get source dimensions from plane stored in subs 2016-12-18 22:37:37 -05:00
Drew Hill
5d0501be82 less interfacy.. more classy 2016-12-17 14:43:07 -05:00
Drew Hill
8277999b16 add imageview into simpleexoplayerview to display subtitles that are image based 2016-12-17 13:39:47 -05:00
olly
4bb8793203 Deduplicate reported position discontinuities
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142257743
2016-12-16 16:21:16 +00:00
olly
e0586a48f0 Correctly offset subsample timestamps.
This has always been broken in V2, but the issue is now also
visible for the very first period in the timeline because we
offset if by 60s. Previously the issue would only have been
visible from the start of the second period.

Issue: #2208

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142252702
2016-12-16 16:21:16 +00:00
anjalibh
6c4795b496 Prevent frozen frames when the decoder is always late.
Create a MediaCodecVideoTrackRenderer.shouldDropFrame function that can be overriden by a child class. The YouTube override prevents a frame drop if we haven't rendered anything in the last 35 ms.

The YouTube override is off at the moment, I plan to use a server side flag to do a slow and controlled experiment.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142190774
2016-12-16 16:21:16 +00:00
cdrolle
65490f52f8 Added support for handling window/cue priority and fill color to Cue and SubtitlePainter.
Cue has been modified to optionally accept a fill color and a toggle specifying when to use the fill color. When the fill color toggle is set, then SubtitlePainter will use the fill color value instead of the color specified by the device's Accessibility settings. Cea708Decoder has also been modified to propagate that value, as well as cleaned up (in terms of documentation) to prepare it for inclusion in the open-source project.

There is also a new Cea708Cue, extending Cue, which holds the Cue's priority, which is used to sort potentially overlapping cues/windows.

Note that I've left the @ClosedSource annotation and logging in this CL. I intend to start testing the 608 and 708 functionality in the Fiber app to ensure that it works as expected on a wide-range of channels (as opposed to the single channel in ExoPlayer Demo) before removing these.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142173264
2016-12-16 16:21:16 +00:00
olly
04992fdaac Move AudioTrack.SESSION_ID_NOT_SET to C
It's a nicer place for it to live once it starts being passed
around more widely (e.g. through the video renderer, for
tunneling)

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142158460
2016-12-16 16:21:16 +00:00
olly
588124da76 Test playback of empty timeline completes successfully
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142157778
2016-12-16 16:21:16 +00:00
olly
5bb1d5dc99 Add tunneling functionality to AudioTrack
Although the underlying platform AudioTrack is capable of
writing the AV sync header from M onward, I've opted not
to use the functionality since it appears to allocate an
unnecessary (and large) number of ByteBuffers. We can swap
over from O if this is addressed.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142138988
2016-12-16 16:21:16 +00:00
olly
2c3ce7fee3 Fix playback of media with >1MB preparation data
Also clarify when getNextLoadPositionUs and continueLoading
can be called.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142124497
2016-12-16 16:21:16 +00:00
cblay
37317520f4 Improving handling of atoms with size less than header in FragmentedMp4Extractor.
These currently lead to cryptic ArrayIndexOutOfBoundsExceptions being thrown from System.arraycopy() so my proposal is to throw a more useful ParserException instead.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142087132
2016-12-16 16:21:16 +00:00
ojw28
fefef0f941 Merge pull request #2183 from WeiChungChang/proposal-fix
Fix the issue when the sequence of PTS is out of order by bidirectional prediction for skipToKeyframeBefore()
2016-12-14 18:06:52 +00:00
olly
42c7ea422d Update SDK_INT
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142016285
2016-12-14 16:22:48 +00:00
olly
88d2a6a348 Bump version + update release notes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142015031
2016-12-14 16:22:48 +00:00
olly
31e2fa8597 Add hook for modifying or cancelling a user invoked seek
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142007001
2016-12-14 14:23:38 +00:00
andrewlewis
f276eb2ce7 Add ClippingMediaSource.
ClippingMediaSource wraps a single period/window video-on-demand source and
exposes a specified time range within it.

Issue: #1988

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141991215
2016-12-14 14:23:38 +00:00
aquilescanta
8a7628cb26 Remove playlist adjustment on chunk loads
This is particularly problematic for subtitle tracks where adjustment
can be broken. Now, the primary url can change when clients ask for a
variant snapshot, instead of happening on chunk load as before.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141933689
2016-12-14 14:23:38 +00:00
andrewlewis
48072f2155 Improve binary search functionality and javadoc.
Define what element is returned if inclusive is true and there are multiple
elements equal to the input value.

Clarify/fix javadoc.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141891741
2016-12-14 14:23:38 +00:00
andrewlewis
41d078ca4b Reset readEndOfStream in resetPosition.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141870244
2016-12-14 14:23:38 +00:00
aquilescanta
0b1a6fe9b1 Ignore discontinuities in TSs for HLS
Issue:#1921
Issue:#1978
Issue:#2163
Issue:#2172

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141797474
2016-12-14 14:23:38 +00:00
olly
2a79931ec5 Fix onTimelineChanged call (timeline should never be null).
Issue: #2186

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141790023
2016-12-14 14:23:38 +00:00
Lisa Luo
7e66ec5841 Change Sink to Source in license header 2016-12-13 14:29:15 -05:00
olly
759cb32315 Try exceeding renderer capabilities by default
Not sure what I think about this, but we're getting quite
a lot of issues reported where streams play fine but capabilities
indicate they wont. It's probably best just to cross our fingers
and hope for the best in such cases, as was the case in V1 when
using ExtractorSampleSource.

Issue: #2157
Issue: #2034
Issue: #2007

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141758070
2016-12-12 16:15:38 +00:00
olly
1055c520cc Remove side effects from SeekMap.getPosition implementations
Issue: #2167

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141451444
2016-12-12 16:15:38 +00:00
andrewlewis
f45751872d Move track sample index updates out of getPosition(long).
This requires knowing the seek time in Extractor.seek, so that it's possible to
pick the latest synchronization sample at/before the seek time for each track
(rather than the earliest synchronization sample after the seek position).

Also remove the STATE_AFTER_SEEK state which should no longer be needed.

Issue: #2167

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141432598
2016-12-12 16:15:38 +00:00
aquilescanta
2fce364936 Ignore Splice Info in HLS TS media chunks
Issue:#2070

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141335458
2016-12-12 16:15:38 +00:00
olly
1518927e12 Fix seeking backward from end of last period.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141299172
2016-12-12 16:15:38 +00:00
aquilescanta
1cbc0fc678 Allow HlsPlaylistTracker to change the primaryHlsUrl
When the primary url is blacklisted (due to a 404, for example) or
the selected variant is different from primary url, allow the tracker
to change the url.

Issue:#87

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141291435
2016-12-12 16:15:38 +00:00
WeiChungChang
63966a3736 Fix the issue when the sequence of PTS is out of order by bidirectional prediction for skipToKeyframeBefore() 2016-12-12 20:34:09 +08:00
aquilescanta
a66b4a9bad Parse ID3 sample timestamp for HLS audio chunks
Pending improvement:

* Peek just the required priv frame. Avoid decoding all id3 information.
* Sniff the used container format instead of using the extension.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141181781
2016-12-06 20:06:37 +00:00
olly
e5bc00ea94 Fix DataSourceInputStream + add unit test
Issue: #2162

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141177715
2016-12-06 20:06:04 +00:00
olly
2db7c50d7c Fix test.
The definition of negative line indices was intentionally shifted
by one because the way VTT defines them doesn't appear to allow for
cues to be positioned at the very bottom of the screen in the case
that ANCHOR_TYPE_END is used.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141168028
2016-12-06 20:05:23 +00:00
olly
4db6f1e495 Expose whether decoders support tunneling
This is a first step toward supporting tunneled playback

Issue: #1688

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141167501
2016-12-06 20:04:44 +00:00
olly
99957bbae7 Correctly handle dynamic playlist modifications
- Fix bug where we'd try and call replaceStream having already
  notified the renderer that the current stream is final. This
  could occur if a period was added to the end of the playlist.
- If the current period being played is removed and a new period
  to play cannot be resolved, assume we've gone off the end of
  the playlist and transition to the ended state. This allows
  the current source to be re-used (unlike the previous behavior
  of considering it an error). Treat valid seeks that cannot be
  resolved due to concurrent timeline update similarly.
- Add seek sanity check back to ExoPlayerImpl. Meh. It's probably
  best to keep this, since it stops the exposed window index
  being invalid w.r.t the exposed timeline.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141167151
2016-12-06 20:04:01 +00:00
olly
9ea8b02083 Correctly handle reading of an empty string without a terminating NUL byte
Issue: #2152

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141159330
2016-12-06 20:03:21 +00:00
olly
e86bfd6dbe Improvements for 608 positioning
- Infer likely left/center/right alignment for pop-on captions.
  This makes the rendering much better in practice, particularly
  when the captions were intended to be center aligned.
- Fix line anchoring.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141156222
2016-12-06 20:02:42 +00:00
cdrolle
88c0695bd0 Added safe-area adjustment (i.e. padding) to CEA-608 captions and fixed minor issue with rollup.
CEA-608 specifies a "safe-area" in which the captions should be rendered. This change adjusts all of the cue positions so they are within that safe area. It also fixes a minor issue in which roll up captions would drift towards the last row if a preamble address code had the "next row toggle" bit set.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141077433
2016-12-06 20:01:57 +00:00
aquilescanta
931670957f Add support for multiple table sections in PSI section
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141073182
2016-12-06 20:01:13 +00:00
olly
db215ff156 Make invalid seek positions fail on playback thread only
Seeks are permitted when there's no timeline, and in this
case playback necessarily fails on the playback thread when
the timeline becomes known. Pushing failure to the same
place when the timeline is known means there's only one
failure path for this case. A later CL will likely introduce
an InvalidSeekPositionException for this case.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141037708
2016-12-06 20:00:24 +00:00
olly
88fc682dde Expose manual playback control hiding from SimpleExoPlayerView
Issue #2146

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141036866
2016-12-06 19:59:41 +00:00
andrewlewis
01acc0e201 Remove unnecessary final.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141031900
2016-12-06 19:58:56 +00:00
drhill
cc24c4e38b change to switch to avoid changing 4.0 tracks 2016-12-06 08:08:58 -05:00
Oliver Woodman
fda2d143e4 CEA 608 bugfix 2016-12-02 19:48:59 +00:00
Oliver Woodman
421dab433a Restore accidentally clobbered SimpleExoPlayerView change 2016-12-02 19:47:50 +00:00