Oliver Woodman
64cc380fe1
Avoid loading first chunk when preparing HLS for non-zero position.
...
This also fixes a technical mistake where HlsChunkSource is fed
seekPositionUs=-1 when obtaining the first chunk. This is wrong,
but the usage of this variable within HlsChunkSource enforces that
the seek must stay within bounds, so we get away with it.
Issue: #385
2015-05-11 21:10:20 +01:00
Oliver Woodman
116a18848f
Alter default exo buffertime value to 2500ms.
2015-05-11 21:05:37 +01:00
Oliver Woodman
b0abda43ec
Ensure we configure a new extractor when we need one.
...
Issue: #400
2015-05-11 21:03:30 +01:00
Oliver Woodman
770ad7f06f
Fix edge case in HlsSampleSource.
...
1. prepare() needs to load a TsChunk to actually prepare the source.
2. Source is prepared, but no tracks are enabled (this is why it's
an edge case - no-one is likely to be doing this!).
3. The TsChunk load completes.
We should not load additional chunks in this case.
2015-05-11 21:02:38 +01:00
Oliver Woodman
dd5eabdf4a
Signal EoS when seeking ExtractorSampleSource to the end of a track.
2015-05-11 21:01:35 +01:00
Oliver Woodman
861d6749ef
Remove ability to extend the default FormatEvaluator implementations.
2015-05-08 17:09:39 +01:00
Oliver Woodman
9f77c4009e
Clip seek position to the inputLength - 1.
2015-05-08 17:08:59 +01:00
Oliver Woodman
d9071710cf
Read AC-3 tracks in MPEG TSs only if AC-3 playback is supported.
...
Partly fixes #434 as the AC-3 stream will now be ignored if the
audio capabilities don't allow it to be played back.
2015-05-08 17:08:13 +01:00
Oliver Woodman
d8af120b98
Fix treating all DVB data as AC-3.
...
Issue #434
2015-05-08 17:06:59 +01:00
Oliver Woodman
7437ee39d8
Remove deprecated method.
2015-05-08 17:06:27 +01:00
Oliver Woodman
54b71a5743
Allow cross-protocol redirects.
...
Issue: #423
2015-05-08 17:05:54 +01:00
Oliver Woodman
4527539efe
Handle cenc:pssh elements in DASH manifests.
...
Issue: #407
2015-05-08 17:05:04 +01:00
Oliver Woodman
3360f5eda5
Enable passthrough based on the input MIME type.
2015-05-08 17:04:21 +01:00
Oliver Woodman
a1083d360a
Prevent wrapping detection on new passthrough AudioTracks.
2015-05-08 17:03:05 +01:00
Oliver Woodman
de5bce3400
Apply passthrough workarounds only on platform API versions 21/22.
2015-05-08 17:02:23 +01:00
Oliver Woodman
9921dfd1ce
Deprecate FrameworkSampleSource as a deterrent.
2015-05-05 20:33:25 +01:00
Oliver Woodman
6909c948b9
Remove SuppressLint in AudioTrack.
2015-05-05 20:32:06 +01:00
Oliver Woodman
9dcb17f21a
Clean up DataSourceInputStream
2015-05-05 20:30:52 +01:00
Oliver Woodman
a63883a8c8
Fix format equality checking.
...
For Live SmoothStreaming, referential equality checking
isn't enough (it breaks once the manifest is updated).
Updated other instances too just for consistency.
2015-05-05 20:30:32 +01:00
Tanuj Mittal
2a06c2641c
Fix DataSourceInputStream.read() for EOF cases
2015-05-05 16:30:09 +05:30
Oliver Woodman
79cdd03682
Filter unsupported video formats for HLS.
2015-05-01 20:34:57 +01:00
Oliver Woodman
b405d3d9b7
Have Representation, TrackElement and Variant consistently expose Format.
...
And delete things that we're parsing but don't use from TrackElement.
2015-05-01 20:33:52 +01:00
Oliver Woodman
8673cafce8
Move Allocator to HlsSampleSource (from HlsChunkSource).
...
- This makes HLS consistent with Chunk/ExtractorSampleSource.
- It needs to be consistent for WebVTT in HLS.
- Also trim the allocator when done.
2015-05-01 20:32:42 +01:00
Oliver Woodman
0c5a1a6c35
Distinguish exceptions caught at top level.
2015-05-01 20:31:49 +01:00
Oliver Woodman
efb9ff1fe7
Play standalone MPEG-TS files.
...
- Have TsExtractor report a SeekMap to the output.
- Implement TsExtractor.reset to reset extractor state.
- Add 1x sample.
2015-05-01 20:31:21 +01:00
Oliver Woodman
cfab852096
Remove pointless references to ElementaryStreamReaders.
2015-05-01 20:30:00 +01:00
Oliver Woodman
d82343d06c
Remove MediaFormat.bitrate.
2015-05-01 20:29:32 +01:00
Oliver Woodman
54f97c952e
Reintroduce Allocation abstraction.
...
Play movies has an Allocator that attempts to allocate a single
huge byte[] up front to minimize the risk of GC pauses. This abstraction
will be required to keep that when updating them to the new Exo.
2015-05-01 20:28:49 +01:00
Oliver Woodman
9b112cf94d
Video format selection.
...
Making Representation and TrackElement extend Format will simplify
this further (TBC whether this is a good idea!).
Issue: #393
2015-05-01 20:27:11 +01:00
Oliver Woodman
fafcd79e1b
Move AC-3 bitrate calculation into Ac3Util.
...
This is in preparation for removing bitrate from MediaFormat.
2015-05-01 20:25:19 +01:00
Oliver Woodman
6bf62770bd
Make sure that the process dies if a loading task throws Error.
2015-05-01 20:24:50 +01:00
Oliver Woodman
1d528b80ea
Move getUserAgent from DemoUtil to library's Util.
2015-05-01 20:24:27 +01:00
Oliver Woodman
6cb46e4549
webm_extractor: Add VP8 to the list of codecs.
...
VP8 can be decoded by MediaCodec (since very early versions of android). Now that we want WebmExtractor to be general purpose, adding VP8 makes sense as it is a common use case.
2015-05-01 20:23:33 +01:00
Oliver Woodman
5ea7424ee3
Tidy up AssetDataSource.
2015-05-01 20:23:02 +01:00
Oliver Woodman
ce3d5c9a59
Throw when getMinBufferSize returns an error value.
2015-05-01 20:22:03 +01:00
Oliver Woodman
e6c7defc79
Make ParsableBitArray.data public, like ParsableByteArray.
2015-05-01 20:21:36 +01:00
Oliver Woodman
7ad55dbf2c
webm_extractor: Add support for parsing BlockGroup element
...
This CL adds support for parsing BlockGroup elements for all
codecs (not just opus). It also adds a test to verify the new
behavior.
2015-05-01 20:20:47 +01:00
Oliver Woodman
aed45bb2ca
Add support for reading AC-3 audio in HLS.
2015-05-01 20:18:08 +01:00
Oliver Woodman
48fc9635a9
webm_extractor: Add support for Cues present at the end of file
...
This CL adds support for WebM files which have Cues present at the end of the file (i.e.) after Clusters. The file referenced in the bug can now be played back using the demo app. It adds a new flag to WebmExtractor which should be set to true only when being used through ExtractorSampleSource. All others (e.g. DASH) should not set it.
Reference file: http://demos.webmproject.org/exoplayer/glass_vp9_vorbis_cues_at_end.webm
2015-05-01 20:13:19 +01:00
Oliver Woodman
6cccfc1caa
Make Atom.getAtomTypeString public.
...
I've found myself doing this a couple of times during local
debugging. It's harmless to have it public, and seems pretty
useful for debugging inside of the mp4 package.
2015-05-01 20:12:28 +01:00
Oliver Woodman
b787852e71
Correctly stop previous renderers if prepare is called again.
2015-05-01 20:11:57 +01:00
Oliver Woodman
88daaa882c
Fix NPE if source is released having never been prepared.
2015-05-01 20:11:27 +01:00
Oliver Woodman
837090e8f9
Move AC-3 header parsing into a new Ac3Util class.
...
This is in preparation for adding support for AC-3 in HLS.
Also parse E-AC-3 boxes.
2015-05-01 20:10:47 +01:00
ojw28
26c5461b10
Merge pull request #408 from dnutcracker/dev
...
fix for issue #403
2015-04-24 11:51:11 +01:00
Nati Dykstein
a43dd6ba68
Update AssetDataSource.java
2015-04-22 22:25:44 +03:00
Oliver Woodman
f273c73123
Support NALUnitLengthFieldLength != 4.
...
Seems a little hacky to define this in Track, but there doesn't seem to
be a particularly nice alternative.
Issue: #406
2015-04-22 16:24:12 +01:00
Oliver Woodman
afb1a93059
Refine ExtractorSampleSource retry.
...
I was hoping not to avoid this, but in the case of a parsing
failure during preparation we keep retrying forever!
2015-04-22 16:23:33 +01:00
Oliver Woodman
1a01dcc55a
Separate UriDataSource from HttpDataSource.
...
Using a file:// URL for loading an HLS stream (for testing) would fail due to
casting the connection to an HttpURLConnection in DefaultHttpDataSource.
This change makes UriDataSource an interface for objects that are DataSources
with URIs. That allows for reading manifests for HLS using just a UriDataSource
rather than an HttpDataSource (URLs in the playlist are relative to the data
source's URL so the getUri method is needed).
2015-04-22 16:22:48 +01:00
Oliver Woodman
a1336978ad
Fix DataSpec toString formatting.
2015-04-22 16:19:48 +01:00
Oliver Woodman
c807c69a93
webm_extractor: Support for multiple tracks
...
Github Issue: #363
2015-04-22 16:18:23 +01:00
Oliver Woodman
f637fde962
Allow overriding of codec buffer dequeue block time.
2015-04-22 16:17:36 +01:00
Oliver Woodman
1a9bf018a4
Add frame rate to Format for use in format selection (when known).
2015-04-22 16:16:42 +01:00
Oliver Woodman
a7e2b719c5
Call init() on the extractor only once for each chunk.
...
On retrying loading a chunk, the state of the extractor was reset due to a call
to seek(). Prevent this call by only calling init() if no bytes were loaded.
Also make the DefaultExtractorInput use the loading position not the original
stream position so that its getPosition() method returns offsets relative to
the start of the stream, which fixes a bug where the chunk index offsets would
be relative to the wrong position if there was a retry while loading the chunk.
2015-04-22 16:14:46 +01:00
Oliver Woodman
21e69f3154
Add more loading info (including chunk loading times) to
...
BaseChunkSampleSourceEventListener.onLoadCompleted.
2015-04-22 16:13:19 +01:00
Oliver Woodman
3a1325b0af
Make TsExtractor consistent with AdtsExtractor.
2015-04-22 16:11:23 +01:00
Nati Dykstein
647d9bedb8
fix for issue #403
2015-04-22 14:51:05 +03:00
Oliver Woodman
55e08ff712
Avoid time discontinuity when retrying a live stream.
...
Issue: #227
Issue: #389
2015-04-17 20:12:11 +01:00
Oliver Woodman
faf0e2c147
Improve retry logic.
...
1. Reset retry count to 0 if a Loadable makes progress.
2. Handle resume correctly in the case of live streams.
Issue: #227
Issue: #389
2015-04-17 20:10:31 +01:00
Oliver Woodman
4c94a846d5
webm_extractor: Fix issue in vorbis extraction.
...
Vorbis decoder in android MediaCodec [1] expects the last 4 bytes of the sample to be the number of samples in the current page. This definition holds good only for Ogg and is irrelevant for WebM. So we always set this to -1 (the decoder will ignore this value if we set it to -1). The android platform media extractor [2] does the same.
2015-04-17 20:09:45 +01:00
Oliver Woodman
b1aac839e6
Don't feed AC-3 input when the audio track is paused.
...
This works around an issue the audio track continues to play audio data written
after calling AudioTrack.pause(), which breaks rebuffering behavior (as video
can never catch up if audio continues to be consumed, in some circumstances).
Also don't increment the timestamp wrap count if the track is paused, to work
around an issue where the playback head position jumps back to zero after the
AudioTrack position jumps back to zero.
2015-04-17 20:08:54 +01:00
Oliver Woodman
c4eee71fa2
Support AAC without platform MediaExtractor.
...
Issue: #231
Issue: #227
2015-04-17 20:07:04 +01:00
Oliver Woodman
fb97fca04e
Handle dynamic appearance/disappearance of ID3 track in HLS.
2015-04-17 20:04:52 +01:00
Oliver Woodman
5f74226d67
Make the audio track session workaround flag non-final.
2015-04-17 20:04:18 +01:00
Oliver Woodman
508e13e0bd
Clean up + optimize ParsableByteArray.
2015-04-17 20:03:24 +01:00
Oliver Woodman
9092fad8e8
Fix subtitles.
2015-04-17 20:02:20 +01:00
Oliver Woodman
0523717841
Fix crash.
2015-04-17 20:01:59 +01:00
Oliver Woodman
e84c852169
Select E-AC-3 in preference to AC-3, and remove other tracks.
2015-04-17 20:01:06 +01:00
Oliver Woodman
3f1638de95
Use ENCODING_PCM_16BIT for keepSessionIdAudioTrack.
...
ENCODING_PCM_8BIT support is not required.
2015-04-17 19:59:58 +01:00
Oliver Woodman
e4e6a1caf0
Switch from AudioFormat.ENCODING_DEFAULT to .ENCODING_PCM_16BIT.
...
AudioTrack.getMinBufferSize does not handle ENCODING_DEFAULT so
switch back to ENCODING_PCM_16BIT.
2015-04-17 19:59:03 +01:00
Oliver Woodman
c3bf60b1a9
Add JavaDoc to remove lint warning about unused variable.
2015-04-14 16:45:46 +01:00
Oliver Woodman
7cf6aa86d2
Properly document in code how to pass CustomData to PlayReady DRM.
...
Issue: #339
2015-04-14 16:44:01 +01:00
Oliver Woodman
d9b3582baa
Use OMX.google.raw.decoder for passthrough playback.
...
The OMX component needs to be configured with a format that has a
MIME type of audio/raw. Remove Ac3PassthroughAudioTrackRenderer,
which is no longer used.
2015-04-14 16:42:24 +01:00
Oliver Woodman
ed1dbddc75
Trim memory when disabling ExtractorSampleSource.
...
This prevents memory leakage even in the case where the app
is still holding a reference (direct or indirect) to the
Allocator.
2015-04-13 19:36:16 +01:00
Oliver Woodman
0d69a2eae8
Implement event reporting from HlsSampleSource.
...
Issue: #275
2015-04-13 19:03:04 +01:00
Oliver Woodman
e21f7801b5
Major surgery to move all playback modes to the new Extractor model.
2015-04-13 18:57:31 +01:00
Oliver Woodman
265adf9a8f
Move chunk trigger constants into Chunk.
2015-04-11 02:09:40 +01:00
Oliver Woodman
ad56490bde
Add ability to discard from write-side of DefaultTrackOutput.
2015-04-11 02:03:43 +01:00
Oliver Woodman
4c8f9a8c6f
Remove source package, and restore original FrameworkSampleSource.
2015-04-11 02:00:47 +01:00
Oliver Woodman
587edf8e2b
Add new style mp4/fmp4 extractors.
2015-04-11 01:58:34 +01:00
Oliver Woodman
7d8141e419
Add new style mp3 extractor.
2015-04-11 01:42:03 +01:00
Oliver Woodman
4a1fed9e86
Add new style WebM extractor.
2015-04-11 01:30:11 +01:00
Oliver Woodman
6c5af23230
Minor tweaks to HlsSampleSource.
2015-04-11 01:12:40 +01:00
Oliver Woodman
da656e6f26
More steps towards unified extractors.
2015-04-11 01:07:41 +01:00
Oliver Woodman
53a47524a1
Support non-square pixels in HLS.
...
Github issue: #375
2015-04-11 00:59:00 +01:00
Oliver Woodman
37d12ff14a
Steps toward generalizing the Extractor interface for all extractors.
2015-04-11 00:55:38 +01:00
Oliver Woodman
3a551c73ba
Move hls.parser to a new extractor package.
...
This package will house all extractors, which will be unified
to implement a single Extractor interface.
2015-04-11 00:27:24 +01:00
Oliver Woodman
fc176b9cbe
Fix TsExtractor bug.
...
The limit on the ts packet buffer can be reduced during processing
if it's discovered to have padding. Hence we need to reset it back
to the ts packet size before processing each packet.
2015-04-10 23:41:45 +01:00
Oliver Woodman
61443b2f12
Relocate content of Mp4Util to more sensible locations.
...
- Atom related stuff in Mp4Util is moved to Atom.
- Remainder of Mp4Util is renamed to H264Util.
2015-04-10 23:31:03 +01:00
Oliver Woodman
fea2140d57
Add ability to query size/rate support in MediaCodecUtil.
2015-04-10 23:15:52 +01:00
Oliver Woodman
38efb1fc3f
Clean up Aes128DataSource.
2015-04-10 23:12:47 +01:00
Oliver Woodman
6bf52dd69c
Report decoder initialization information out of track renderer.
2015-04-10 23:06:57 +01:00
Oliver Woodman
a17123c49b
Clean up codec reinitialization.
2015-04-10 23:03:50 +01:00
Oliver Woodman
380c427fb3
Make MediaCodecVideoTrackRenderer easier to extend.
2015-04-10 23:01:09 +01:00
Oliver Woodman
a085d2f29b
Add END_OF_INPUT constant + start using it.
2015-04-10 23:00:23 +01:00
Oliver Woodman
d745384d99
Change decodeOnly to be a sample flag.
2015-04-10 22:55:12 +01:00
Oliver Woodman
70b0e55a8b
Remove deprecated bandwidth parameter.
2015-04-10 22:39:15 +01:00
Oliver Woodman
c901025643
Don't attempt license request when keys expire.
...
- Keys should not expire during normal playbacks of correctly configured content.
- Attempting to refresh on expiration causes a race condition, that may result
in either failure or brief re-buffer, for the 30s license test video.
- This change provides deterministic behavior, which is to always fail.
2015-04-10 22:38:06 +01:00
Oliver Woodman
d108c13535
Remove deprecated method.
2015-04-10 22:36:07 +01:00
Oliver Woodman
4dc8e8f951
Add audio and m3u8 mime types.
2015-04-10 22:35:03 +01:00
Oliver Woodman
ecaf329b0d
Improve ParsableByteArray performance + enhance API.
2015-04-10 22:34:06 +01:00