#ifndef MEDIA_FORMATS_HLS_PLAYLIST_COMMON_H_
#define MEDIA_FORMATS_HLS_PLAYLIST_COMMON_H_
#include <optional>
#include <utility>
#include "base/memory/raw_ptr.h"
#include "media/formats/hls/items.h"
#include "media/formats/hls/tag_name.h"
#include "media/formats/hls/tags.h"
#include "media/formats/hls/types.h"
#include "media/formats/hls/variable_dictionary.h"
#include "url/gurl.h"
namespace media::hls {
struct CommonParserState { … };
ParseStatus::Or<M3uTag> CheckM3uTag(SourceLineIterator* src_iter);
void HandleUnknownTag(TagItem);
std::optional<ParseStatus> ParseCommonTag(TagItem, CommonParserState* state);
template <typename T, typename... Args>
std::optional<ParseStatus> ParseUniqueTag(TagItem tag,
std::optional<T>& out,
Args&&... args) { … }
ParseStatus::Or<GURL> ParseUri(UriItem item,
const GURL& playlist_uri,
const CommonParserState& state,
VariableDictionary::SubstitutionBuffer& buffer);
}
#endif