All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.alexeylapin.m3u8.model.MasterPlaylist Maven / Gradle / Ivy

package com.github.alexeylapin.m3u8.model;

import org.immutables.value.Value;

import java.util.List;
import java.util.Optional;

/**
 * Master playlist interface
 */
@Value.Immutable
public interface MasterPlaylist extends Playlist {

    /**
     * A list of alternate renditions related to this playlist.
     *
     * @return list of alternate renditions
     * @see 
     * RFC 8216 - 4.3.4.1.  EXT-X-MEDIA
     */
    List alternativeRenditions();

    /**
     * A list of Variant Streams, each of which describes a different version of the same content.
     *
     * @return list of variant streams
     * @see 
     * RFC 8216 - 4.3.4.2.  EXT-X-STREAM-INF
     */
    List variants();

    /**
     * A list of I-frame variant streams related to this playlist.
     *
     * @return list of I-frame variant streams
     * @see 
     * RFC 8216 - 4.3.3.6.  EXT-X-I-FRAMES-ONLY
     */
    List iFrameVariants();

    /**
     * A list of arbitrary session data.
     *
     * @return list of session data
     * @see 
     * RFC 8216 - 4.3.4.4.  EXT-X-SESSION-DATA
     */
    List sessionData();

    /**
     * A list of encryption keys used in media playlists.
     *
     * @return list of encryption keys
     * @see 
     * RFC 8216 - 4.3.4.5.  EXT-X-SESSION-KEY
     */
    List sessionKeys();

    /**
     * The content steering tag
     *
     * @return the content steering tag, if present.
     * @see 
     * draft-pantos-hls-rfc8216bis-13 - 4.4.6.6. EXT-X-CONTENT-STEERING
     */
    Optional contentSteering();

    static Builder builder() {
        return new Builder();
    }

    class Builder extends MasterPlaylistBuilder {
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy