#ifndef MEDIA_FORMATS_HLS_MULTIVARIANT_PLAYLIST_H_
#define MEDIA_FORMATS_HLS_MULTIVARIANT_PLAYLIST_H_
#include <string_view>
#include <vector>
#include "base/memory/scoped_refptr.h"
#include "base/types/pass_key.h"
#include "media/base/media_export.h"
#include "media/formats/hls/parse_status.h"
#include "media/formats/hls/playlist.h"
#include "media/formats/hls/types.h"
#include "media/formats/hls/variable_dictionary.h"
#include "url/gurl.h"
namespace media::hls {
class VariantStream;
class MEDIA_EXPORT MultivariantPlaylist final : public Playlist {
public:
MultivariantPlaylist(base::PassKey<MultivariantPlaylist>,
GURL uri,
types::DecimalInteger version,
bool independent_segments,
std::vector<VariantStream> variants,
VariableDictionary variable_dictionary);
MultivariantPlaylist(const MultivariantPlaylist&) = delete;
MultivariantPlaylist(MultivariantPlaylist&&) = delete;
MultivariantPlaylist& operator=(const MultivariantPlaylist&) = delete;
MultivariantPlaylist& operator=(MultivariantPlaylist&&) = delete;
const std::vector<VariantStream>& GetVariants() const { return variants_; }
const VariableDictionary& GetVariableDictionary() const {
return variable_dictionary_;
}
static ParseStatus::Or<scoped_refptr<MultivariantPlaylist>>
Parse(std::string_view source, GURL uri, types::DecimalInteger version);
private:
~MultivariantPlaylist() override;
std::vector<VariantStream> variants_;
VariableDictionary variable_dictionary_;
};
}
#endif