Commit graph

27 commits

Author SHA1 Message Date
Oliver Woodman
3d775c1641 Use C constants + minor cleanup. 2014-12-03 18:50:31 +00:00
Oliver Woodman
c2d55acab5 Get Exo+HLS memory usage more under control.
- Split sample pools for video/audio/misc, since the typical
  required sample sizes are very different (and so it becomes
  inefficient to use a sample sized for video to hold audio).
- Add TODO for further improvements.

Issue: #174
2014-12-03 18:10:30 +00:00
Oliver Woodman
40f3172237 HLS: More control over buffering + tweak caption impl.
- Move all three buffering constants to a single class (the
  chunk source).
- Increase the target buffer to 40s for increased robustness
  against temporary network blips.
- Make values configurable via the chunk source constructor.
- Treat captions as a text track for HLS. This allows them to
  be enabled/disabled through the demo app UI.

Issue: #165
2014-11-26 17:21:41 +00:00
Oliver Woodman
8e2801ce9b Improve HLS ABR.
- Add options to switch abruptly at segment boundaries. Third
  parties who guarantee keyframes at the start of segments will
  want this, because it makes switching more efficient and hence
  rebuffering less likely.
- Switch quality faster when performing a splicing switch (when
  we detect that we need to switch variant, we now immediately
  request the same segment as we did last time for the new variant,
  rather than requesting one more segment for the old variant
  before doing this.
2014-11-26 12:08:46 +00:00
Oliver Woodman
410fcdeb87 Merge HLS playlist parsers, make a single parser identify the
playlist type (master or media).

Issue: #155
2014-11-26 12:01:36 +00:00
Oliver Woodman
03e859d774 Fix handling of encrypted media if IV changes.
1. Correctly replace the AES data source if IV changes.
2. Check the largest timestamp for being equal to MIN_VALUE, and
   handle this case properly.
3. Clean up AES data source a little.

Issue: #162
2014-11-20 17:11:02 +00:00
Oliver Woodman
81e2c9f0d3 Fix https://github.com/google/ExoPlayer/issues/159.
The actual fix here is to not call discardExtractors in HlsSampleSource
whilst the loading thread that's pushing data into it is still running.
It's required to wait for that thread to have exited before doing this.

Issue: #159
2014-11-20 14:59:22 +00:00
Oliver Woodman
8c07847b00 Properly propagate errors that occur during preparation. 2014-11-20 14:58:06 +00:00
ojw28
25ddeab57d Merge pull request #146 from jonasl/dev-hls-crop
TsExtractor: Account for frame cropping when parsing SPS
2014-11-19 16:08:27 +00:00
Oliver Woodman
4280511a33 Seamless splicing for adaptive HLS. 2014-11-19 10:34:49 +00:00
Andrey Udovenko
3cfe894b93 Additional IV fix. Trim sign bit from BigInteger.toByteArray() output, if it creates a 17th byte for it. #145 2014-11-18 19:36:44 -05:00
Andrey Udovenko
15d3df6a58 Add EIA-608 (CEA-608) Closed Captioning support for HLS #68 2014-11-18 14:48:40 -05:00
Andrey Udovenko
c57484f90a Fix for IV bigger than 32 bits #145 2014-11-18 14:11:02 -05:00
Andrey Udovenko
3abcefa00c Add EXT-X-BYTERANGE support #139 2014-11-18 14:05:34 -05:00
Jonas Larsson
467f19568b TsExtractor: Account for frame cropping when parsing SPS
Passing uncropped dimensions to certain decoders will make them
output frames without proper cropping set.

Signed-off-by: Jonas Larsson <jonas@hallerud.se>
2014-11-18 08:53:54 -08:00
Oliver Woodman
360d452dad Avoid seeking if seekPosition==currentPosition 2014-11-14 18:32:22 +00:00
Oliver Woodman
eb1210d410 Make sampleQueue thread safe 2014-11-14 18:31:55 +00:00
Oliver Woodman
6b123590ca Correctly propagate errors 2014-11-14 16:31:47 +00:00
Oliver Woodman
643f33f7e9 Properly handle different profiles (skipping SPS data as needed). 2014-11-14 16:31:23 +00:00
Oliver Woodman
fd51901620 Big HLS update. Add start of adaptive support, but leave disabled for now. 2014-11-13 16:32:10 +00:00
Oliver Woodman
aeb17e6a88 HLS improvements + steps towards ABR. 2014-11-06 19:22:14 +00:00
Oliver Woodman
9790430a62 Trim whitespace from codecs 2014-11-06 19:17:22 +00:00
Andrey Udovenko
a76addba5d Add AES-128 encryption support for HLS #69 and parsing logic for CODECS and RESOLUTION attributes. 2014-11-04 13:38:22 -05:00
Oliver Woodman
2422912be8 Refactor HLS support.
- The HlsSampleSource now owns the extractor. TsChunk is more or less dumb.
  The previous model was weird, because you'd end up "reading" samples from
  TsChunk objects that were actually parsed from the previous chunk (due to
  the way the extractor was shared and maintained internal queues).
- Split out consuming and reading in the extractor.
- Make it so we consume 5s ahead. This is a window we allow for uneven
  interleaving, whilst preventing huge read-ahead (e.g. in the case of sparse
  ID3 samples).
- Avoid flushing the extractor for a discontinuity until it has been fully
  drained of previously parsed samples. This avoids skipping media shortly
  before discontinuities.
- Also made start-up faster by avoiding double-loading the first segment.

Issue: #3
2014-10-28 19:25:44 +00:00
Oliver Woodman
5f0be427a4 Update HlsSampleSource + correctly propagate error from prepare.
Issue: #81
2014-10-20 16:53:43 +01:00
Oliver Woodman
60d162df18 Fix overflow when comparing HLS Segments for long videos. 2014-10-15 20:42:26 +01:00
Andrey Udovenko
d64036c5ed Add basic HLS support (VOD and Live) with EXT-X-DISCONTINUITY. 2014-10-01 17:03:07 -04:00