Package com.google.android.exoplayer2.source.hls

## Class BundledHlsMediaChunkExtractor

- java.lang.Object
- - com.google.android.exoplayer2.source.hls.BundledHlsMediaChunkExtractor

- All Implemented Interfaces:
    `HlsMediaChunkExtractor`

      public final class BundledHlsMediaChunkExtractor
      extends Object
      implements HlsMediaChunkExtractor

  `HlsMediaChunkExtractor` implementation that uses ExoPlayer app-bundled `Extractors`.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BundledHlsMediaChunkExtractor​(Extractor extractor, Format multivariantPlaylistFormat, TimestampAdjuster timestampAdjuster)` | Creates a new instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `init​(ExtractorOutput extractorOutput)` | Initializes the extractor with an `ExtractorOutput`.
    `boolean` | `isPackedAudioExtractor()` | Returns whether this is a packed audio extractor, as defined in RFC 8216, Section 3.4.
    `boolean` | `isReusable()` | Returns whether this instance can be used for extracting multiple continuous segments.
    `void` | `onTruncatedSegmentParsed()` | Resets the sample parsing state.
    `boolean` | `read​(ExtractorInput extractorInput)` | Extracts data read from a provided `ExtractorInput`.
    `HlsMediaChunkExtractor` | `recreate()` | Returns a new instance for extracting the same type of media as this one.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BundledHlsMediaChunkExtractor

          public BundledHlsMediaChunkExtractor​(Extractor extractor,
                                               Format multivariantPlaylistFormat,
                                               TimestampAdjuster timestampAdjuster)

      Creates a new instance.
      Parameters:
        `extractor` - The underlying `Extractor`.
        `multivariantPlaylistFormat` - The `Format` obtained from the multivariant playlist.
        `timestampAdjuster` - A `TimestampAdjuster` to adjust sample timestamps.

  - ### Method Detail

    - #### init

          public void init​(ExtractorOutput extractorOutput)

      Description copied from interface: `HlsMediaChunkExtractor`
      Initializes the extractor with an `ExtractorOutput`. Called at most once.
      Specified by:
        `init` in interface `HlsMediaChunkExtractor`
      Parameters:
        `extractorOutput` - An `ExtractorOutput` to receive extracted data.

    - #### read

          public boolean read​(ExtractorInput extractorInput)
                       throws IOException

      Description copied from interface: `HlsMediaChunkExtractor`
      Extracts data read from a provided `ExtractorInput`. Must not be called before `HlsMediaChunkExtractor.init(ExtractorOutput)`.

      A single call to this method will block until some progress has been made, but will not block for longer than this. Hence each call will consume only a small amount of input data.

      When this method throws an `IOException`, extraction may continue by providing an `ExtractorInput` with an unchanged `read position` to a subsequent call to this method.

      Specified by:
        `read` in interface `HlsMediaChunkExtractor`
      Parameters:
        `extractorInput` - The input to read from.
      Returns:
        Whether there is any data left to extract. Returns false if the end of input has been reached.
      Throws:
        `IOException` - If an error occurred reading from or parsing the input.

    - #### isPackedAudioExtractor

          public boolean isPackedAudioExtractor()

      Description copied from interface: `HlsMediaChunkExtractor`
      Returns whether this is a packed audio extractor, as defined in RFC 8216, Section 3.4.
      Specified by:
        `isPackedAudioExtractor` in interface `HlsMediaChunkExtractor`

    - #### isReusable

          public boolean isReusable()

      Description copied from interface: `HlsMediaChunkExtractor`
      Returns whether this instance can be used for extracting multiple continuous segments.
      Specified by:
        `isReusable` in interface `HlsMediaChunkExtractor`

    - #### recreate

          public HlsMediaChunkExtractor recreate()

      Description copied from interface: `HlsMediaChunkExtractor`
      Returns a new instance for extracting the same type of media as this one. Can only be called on instances that are not `reusable`.
      Specified by:
        `recreate` in interface `HlsMediaChunkExtractor`

    - #### onTruncatedSegmentParsed

          public void onTruncatedSegmentParsed()

      Description copied from interface: `HlsMediaChunkExtractor`
      Resets the sample parsing state.

      Resetting the parsing state allows support for Fragmented MP4 EXT-X-I-FRAME-STREAM-INF segments. EXT-X-I-FRAME-STREAM-INF segments are truncated to include only a leading key frame. After parsing said keyframe, an extractor may reach an unexpected end of file. By resetting its state, we can continue feeding samples from the following segments to the extractor. See #7512 for context.

      Specified by:
        `onTruncatedSegmentParsed` in interface `HlsMediaChunkExtractor`