1. 12 Mar, 2015 1 commit
  2. 11 Mar, 2015 3 commits
    • First step toward extractor unification. · 5ca2e0fd
      - It's probably easiest to think of this as a standalone HLS change, which is splitting out the "loading" and "consuming" sides of HlsExtractor and a good structural change in its own right. To do this, HlsExtractorWrapper becomes a final class implementing the consuming side. HlsExtractor becomes an interface defining the loading side.
      
      - The bigger picture is that, hopefully, HlsExtractor will become a lightweight extractor interface that can be used throughout the library. Because it doesn't need to implement the consuming side, we'll save on having to re-implement the consuming side for every extractor (we'll probably need one consuming side implementation for HLS/DASH/SmoothStreaming, and a second one for everything else, both of which will use SampleQueue). It's expected that the HlsExtractor interface will need to change to accommodate all use cases.
      
      - The next step in unification will be to try and have FragmentedMp4Extractor implement HlsExtractor (which will need renaming). Once this is done, I'll try and move the chunk package over to use the HlsExtractor interface.
      Oliver Woodman committed
    • Enhance SampleQueue/RollingSampleBuffer to support other use cases. · becc6fca
      - This is a step toward hopefully converging HLS and CHUNK packages.
      - Add support for encrypted samples.
      - Add support for appending from a DataSource.
      Oliver Woodman committed
  3. 10 Mar, 2015 11 commits
  4. 06 Mar, 2015 1 commit
  5. 05 Mar, 2015 1 commit
  6. 04 Mar, 2015 1 commit
  7. 03 Mar, 2015 6 commits
  8. 27 Feb, 2015 4 commits
  9. 26 Feb, 2015 2 commits
    • Fixes for correctly supporting UTF-16 and UTF-16BE charsets · c135bb7a
      For fields encoded using UTF-16 or UTF-16BE charsets when looking for
      termination character we have to look for two zero consecutive bytes.
      
      Otherwise, as many characters encoded with UTF-16 or UTF-16BE has one
      of their 2 bytes set with the value zero, we will be truncating text
      fields.
      J. Oliva committed
    • Added new ID3 frames · ebbd022a
      - Added support for ID3 frames of types GEOB and PRIV.
      
       - GEOB type is commonly used by dynamic ads provider to include in the
      stream information about the ads to be played.
       - PRIV type is commonly used for time synchronization (example:
      synchronizing playback of a live stream and its webvtt captions) and
      also by analytics companies to include tracking information in the
      stream.
      
      - Added a sample stream from Apple that contains ID3 metadata.
      J. Oliva committed
  10. 25 Feb, 2015 6 commits
  11. 23 Feb, 2015 4 commits
    • Clear stale blacklisted playlist when getting next variant index · 2ac7046f
      Calling clearStaleBlacklistedPlaylist within getNextVariantIndex method.
      J. Oliva committed
    • Clear stale blacklist in getChunkOperation · 4fe62b9b
      Clear stale blacklist in getChunkOperation before getting next variant.
      This ensures:
      1.- Player resilience to failures, always trying to look for a working
      playlist that allows player to non stop playback.
      2.- High quality blacklisted playlists can be reused in case they go up
      after a failure. Player always trying to provide the best user
      experience.
      J. Oliva committed
    • Renaming methods and code formating · f8a9da90
      - Method evaluatePlayListBlackListedTimestamps renamed to
      clearStaleBlacklistedPlaylists
      - Code formatted to be consistent with style elsewhere.
      J. Oliva committed
    • Better management of blacklisted playlists · 20a40f5d
      Added an expiration time field to playlists blacklisted to allow
      Exoplayer to continue playback when playlists that failed were
      recovered from a bad state.
      
      In live environments, some times occur that primary encoder stop
      working for a while. In that cases, HLS failover mechanism in the
      player should detect the situation and “switch” to playlists served by
      the backup encoder (in case a backup encoder exists). This was well
      managed before these changes.
      
      However, and to ensure a playback experience that can recover itself
      from temporary issues, we cannot blacklist a playlist forever. When
      streaming live events using HLS, it is quite typical that the player
      needs to switch from primary to backup playlists, and from backup to
      primary ones, from time to time to have playback working when temporary
      issues in the network/encoder are happening. Most of the issues are
      recoverable, so what I have implemented is a mechanism that makes
      blacklisted playlist to be available again after a while (60 seconds).
      
      Evaluation of this algorithm should happen just when something fails.
      If player is working with a backup playlist, it shouldn’t switch to the
      primary one at least something fail.
      J. Oliva committed