1861 Commits

Author SHA1 Message Date
andrewlewis
45bc4a0374 Pass player and isTopLevelSource to MediaSource.prepareSource.
These additions are useful for sources that need to track the playback position
and control playback.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140828310
2016-12-02 19:23:35 +00:00
Oliver Woodman
0a52e823de Use constant for MPEG max frame size 2016-12-02 16:29:11 +00:00
ojw28
b5437907cf Merge pull request #2135 from drhill/dev-v2_mp2
add mp2 audio
2016-12-02 16:28:35 +00:00
Oliver Woodman
a7736e101f Merge branch 'dev-v2_subtitles_view' of git://github.com/drhill/ExoPlayer into drhill-dev-v2_subtitles_view 2016-12-02 16:27:29 +00:00
Drew Hill
3884641464 switch to proper mimetype 2016-12-01 16:41:23 -05:00
Drew Hill
8fcc8c63ef change to getview call instead of set property 2016-12-01 16:25:49 -05:00
Oliver Woodman
e803bff2b1 Don't log FileNotFoundException while reading cache index file 2016-12-01 19:29:07 +00:00
Oliver Woodman
0cc874dd01 Fix indentation 2016-12-01 18:35:14 +00:00
Oliver Woodman
a6ccedf741 Merge branch 'eia-608-improvements' of git://github.com/RikHeijdens/ExoPlayer into RikHeijdens-eia-608-improvements 2016-12-01 18:31:39 +00:00
Oliver Woodman
7a18738dfa Clean up AudioTagPayloadReader 2016-12-01 17:25:08 +00:00
Greg Slomin
2d1f151cb9 Added support for PCM u/a-law audio in FLV containers 2016-12-01 10:32:55 -06:00
olly
53dcb82862 Merge pull request #2131
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140720011
2016-12-01 13:47:32 +00:00
eguven
f3dbb74613 Fix unnecessary rewrite of cache index file after CachedContentIndex.readFile()
Prevented readFile() setting "changed" boolean to true every time. It's set only if encryption key is set but the index file isn't encrypted.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140714173
2016-12-01 13:46:52 +00:00
Drew Hill
214c55b665 add function to change subtitles style 2016-11-30 19:44:47 -05:00
Drew Hill
0752f790c7 add mp2 audio 2016-11-30 18:42:13 -05:00
olly
836cefcdd6 Remove CC validity checks in SeiReader (now performed in decoder)
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140642357
2016-11-30 22:05:27 +00:00
olly
8bc7da5681 Finish fixing playback control focus
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140635851
2016-11-30 22:04:54 +00:00
olly
195a93e5af Fix playback control focus
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140623107
2016-11-30 22:04:18 +00:00
andrewlewis
8dc8104059 Load the next period only if its start point is known.
If a period has no enabled tracks it is considered to be fully buffered, even
if its duration is unknown. This would cause the offset of the next loading
period to be set based on the unset duration of the preceding period, in turn
causing the from of the player to expose a position based on an unset value.

Only load the next period when the current one has a known duration. If a
period has no enabled tracks and an unknown duration this causes the player to
play the period indefinitely.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140613858
2016-11-30 22:03:36 +00:00
olly
45c68a2fd5 Use separate mimeType for CEA-608 embedded in MP4
When CEA-608 is embedded in MP4 each packet consists of
cc_data_1 and cc_data_2 only. The marker_bits, cc_valid
and cc_type are implicit. As a result playback of CEA-608
embedded in MP4 broke when we started passing the extra
byte for the TS case (and adjusted the decoder to assume
the byte was present).

This change introduces a special mimeType for the case
where the byte is implicit (!). An alternative option
was to insert the extra byte every 2 bytes in the MP4
extractor, but this is really quite fiddly to get right.

Also made the loops in the 608/708 decoders robust against
input of the wrong length.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140609304
2016-11-30 22:02:55 +00:00
aquilescanta
f702568776 Skip tables with unexpected table_id for PAT and PMT readers
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140606435
2016-11-30 22:02:16 +00:00
eguven
257671467f Fix possible failure in CachedContentIndex encrypted cache index file read.
Encryption key in index file is read by DataInputStream.read() which may return less bytes than required. Replaced it with readFully() which should read full length of data.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140597693
2016-11-30 22:01:00 +00:00
aquilescanta
501f54a8a6 Add #EXT-X-PROGRAM-DATE-TIME support for HLS media playlists
Issue:#747

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140525595
2016-11-30 22:00:17 +00:00
olly
91c58627be Fix lint errors
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140488486
2016-11-30 21:59:32 +00:00
olly
7bbe213e57 Add option to select track that exceeds renderer capabilities
Leaving disabled by default for now, but we may want to consider
enabling it by default. Note that in V1 for ExtractorSampleSource
the behaviour was equivalent to this option being enabled, since
we didn't perform capabilities checks. For DASH/SS/HLS the V1
behaviour was equivalent to this option being disabled.

The type in PlayerActivity has been changed just to make it
easier to add a line that calls setParameters.

Issue: #2034
Issue: #2007
Issue: #2078

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140477568
2016-11-30 21:58:13 +00:00
cdrolle
2753664c6b Fixed an error in the date and time parser's handling of time zones.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140400905
2016-11-30 21:57:29 +00:00
olly
2550362fa2 Clean up playback controls xml a little
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140374149
2016-11-30 21:56:48 +00:00
olly
eb81da7f2d Remove unnecessary layer in view hierarchy
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140369506
2016-11-30 21:56:04 +00:00
olly
73220be19b drainOutputBuffer return false on EOS
I can't see how this would ever make a difference, but there's no
point in returning true. Either we've really reached EOS (in which
case outputStreamEnded will be true and the next drainOutputBuffer
will be turned into a no-op) or we've re-initialized the codec (in
which case there wont be anything to drain since we wont have fed
anything to the codec yet).

This change should also prevent the hypothetical NPE described in
issue #2096, although we're unsure how that NPE would occur unless
MediaCodecRenderer has been extended in an unusual way.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140338581
2016-11-30 21:55:25 +00:00
andrewlewis
f9c7343e76 Add basic unit test for ExoPlayer/ExoPlayerImplInternal.
The simple verifications in this test may be useful for smoke testing, but the
coverage of ExoPlayerImplInternal is low. The intention is to add tests for
more complex logic in ExoPlayerImplInternal in later changes.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140327358
2016-11-30 21:54:05 +00:00
aquilescanta
c3c176d93c Move HLS extractor construction to HlsMediaChunk
This allows ID3 PRIV timestamp extraction and Extractor Sniffing.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140209568
2016-11-25 20:18:32 +00:00
olly
2e3ffe1e94 Assume support for vertical video if rotated resolution supported
Issue: #2034

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140209306
2016-11-25 20:18:32 +00:00
olly
ee9b7be2fa Fix issue with seeking before timeline available
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140204054
2016-11-25 20:18:32 +00:00
andrewlewis
76c58a34d3 Clarify createPeriod javadoc.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140202942
2016-11-25 20:18:32 +00:00
aquilescanta
9c612f94c5 Chose timestamp adjustment master based on track selection
Select the timestamp master depending on track availability. If
a variant is being loaded, then that is the timestmap master.
Otherwise, if an audio track is being loaded, then the responsible
chunk source is the timestmap master. If no variant or audio
rendition is enabled, then a subtitle chunk source is selected as
timestamp master. This CL will become specially relevant once
ID3 PRIV timestamps are used for audio renditions.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140201385
2016-11-25 20:18:32 +00:00
olly
ce9ec79e59 Make Timeline always non-null from ExoPlayer
Note that we still have null timelines in ExoPlayerImplInternal.
This is deliberate; and is likely necessary to distinguish between
the no-timeline-yet and timeline-is-empty cases (we want to try
and process a pending seek for the latter, but not the former).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140200980
2016-11-25 20:18:32 +00:00
aquilescanta
97a23ce572 Fix main thread playlist refreshes in HlsPlaylistTracker
The refresh handler in HlsPlaylistTracker was being instantiated in the
same thread as the MediaSource (i.e. Main thread).

Issue:#2108

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140197553
2016-11-25 20:18:32 +00:00
olly
894ae1a310 Improve SimpleExoPlayer flexibility
- Allow extension and overriding of renderer creation.
  Several developers have asked for this, so that they
  can use their own renderers (typically extensions to
  the core ones) without losing the ability to use
  SimpleExoPlayer.
- Add option to not attempt extension renderer creation,
  for efficiency.
- Align build variants for internal and external demo
  apps. This is slightly unfortunate, but convergence
  seems necessary for useExtensionRenderers.
- Fix DASH playback tests to use the debug video
  renderer.

Issue #2102

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140140915
2016-11-25 20:18:32 +00:00
olly
62bdb1b93a Fix failure when a seek is performed with no enabled tracks
This issue affects ExtractorMediaSource only. We shouldn't
start loading in the case that we're prepared and have no
enabled tracks, since there's nothing that we need to load.
This was causing an assertion failure in startLoading.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140030650
2016-11-25 20:18:32 +00:00
aquilescanta
a7dff14d3c Keep TS packets with no continuity counter increase and no payload
This behavior is defined in ISO-13818-1, section 2.4.3.3(continuity_counter).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140029161
2016-11-25 20:18:32 +00:00
olly
eb62d00ea4 ExoPlayerImplInternal cleanup
- Fix handling of the currently playing period being
  removed. This didn't do the right thing at all.
- Relax rule on seekToPeriodPosition re-using an
  existing holder.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140014791
2016-11-25 20:18:32 +00:00
olly
b3726cf761 Support DASH multi-segment fetches
Note that multi-segment fetching is only possible in the
case that segments in a representation are defined to have
the same Uri and adjacent ranges (this is very rarely true
for live streams, but is quite often true for on-demand).
In the case that merging is requested but not possible,
the implementation will request one at a time.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140012443
2016-11-25 20:18:32 +00:00
eguven
b29ff0cf51 Make CacheDataSink use ReusableBufferedOutputStream
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140010664
2016-11-25 20:18:32 +00:00
eguven
fa3d129b14 Fix some of the issues pointed by android lint tool
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139915885
2016-11-25 20:18:32 +00:00
aquilescanta
6101450302 Merge initialization chunk into HlsMediaChunk
This will allow creating the extractor in the HlsMediaChunk.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139915713
2016-11-25 20:18:32 +00:00
aquilescanta
9ac7f64c84 Fix search to end of stream in HLS
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139905590
2016-11-25 20:18:32 +00:00
andrewlewis
77715fbfbe Fix some analysis warnings.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139901449
2016-11-25 20:18:32 +00:00
eguven
e84fa5835d Use ReusableBufferedOutputStream for cache index file write operation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139889957
2016-11-25 20:18:32 +00:00
olly
42fadfe083 Allow SsMediaSource to take an optional SsManifest
Also allow custom SsManifestParser injection.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139813660
2016-11-25 20:18:32 +00:00
olly
81ce6bba7a Allow DashMediaSource to take an optional DashManifest
Also allow custom DashManifestParser injection, to
support parsing of custom elements and attributes that
service providers may wish to include in their manifests
(e.g. #2058).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139813108
2016-11-25 20:18:32 +00:00