// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_FORMATS_HLS_TAGS_H_ #define MEDIA_FORMATS_HLS_TAGS_H_ #include <optional> #include <string> #include <vector> #include "base/time/time.h" #include "media/base/media_export.h" #include "media/formats/hls/parse_status.h" #include "media/formats/hls/source_string.h" #include "media/formats/hls/tag_name.h" #include "media/formats/hls/types.h" #include "media/formats/hls/variable_dictionary.h" namespace media::hls { class TagItem; // All currently implemented HLS tag types. // For organization, these appear in the same order as in `tag_name.h`. // Represents the contents of the #EXTM3U tag struct MEDIA_EXPORT M3uTag { … }; // Represents the contents of the #EXT-X-DEFINE tag struct MEDIA_EXPORT XDefineTag { … }; // Represents the contents of the #EXT-X-INDEPENDENT-SEGMENTS tag struct MEDIA_EXPORT XIndependentSegmentsTag { … }; // Represents the contents of the #EXT-X-VERSION tag struct MEDIA_EXPORT XVersionTag { … }; enum class MediaType { … }; // Represents the contents of the #EXT-X-MEDIA tag struct MEDIA_EXPORT XMediaTag { … }; // Represents the contents of the #EXT-X-STREAM-INF tag struct MEDIA_EXPORT XStreamInfTag { … }; // Represents the contents of the #EXTINF tag struct MEDIA_EXPORT InfTag { … }; // Represents the contents of the #EXT-X-BITRATE tag. struct MEDIA_EXPORT XBitrateTag { … }; // Represents the contents of the #EXT-X-BYTERANGE tag. struct MEDIA_EXPORT XByteRangeTag { … }; // Represents the contents of the #EXT-X-DISCONTINUITY tag struct MEDIA_EXPORT XDiscontinuityTag { … }; // Represents the contents of the #EXT-X-DISCONTINUITY-SEQUENCE tag. struct MEDIA_EXPORT XDiscontinuitySequenceTag { … }; // Represents the contents of the #EXT-X-ENDLIST tag struct MEDIA_EXPORT XEndListTag { … }; // Represents the contents of the #EXT-X-GAP tag struct MEDIA_EXPORT XGapTag { … }; // Represents the contents of the #EXT-X-I-FRAMES-ONLY tag struct MEDIA_EXPORT XIFramesOnlyTag { … }; // Represents the contents of the #EXT-X-MAP tag. struct MEDIA_EXPORT XMapTag { … }; // Represents the contents of the #EXT-X-MEDIA-SEQUENCE tag. struct MEDIA_EXPORT XMediaSequenceTag { … }; // Represents the contents of the #EXT-X-PART tag. struct MEDIA_EXPORT XPartTag { … }; // Represents the contents of the #EXT-PART-INF tag. struct MEDIA_EXPORT XPartInfTag { … }; enum class PlaylistType { … }; // Represents the contents of the #EXT-X-PLAYLIST-TYPE tag struct MEDIA_EXPORT XPlaylistTypeTag { … }; // Represents the contents of the #EXT-X-SERVER-CONTROL tag. struct MEDIA_EXPORT XServerControlTag { … }; // Represents the contents of the #EXT-X-TARGETDURATION tag. struct MEDIA_EXPORT XTargetDurationTag { … }; struct MEDIA_EXPORT XSkipTag { … }; // A server MAY omit adding an attribute to an EXT-X-RENDITION-REPORT tag - even // a mandatory attribute - if its value is the same as that of the Rendition // Report of the Media Playlist to which the EXT-X-RENDITION-REPORT tag is being // added. Doing so reduces the size of the Rendition Report. struct MEDIA_EXPORT XRenditionReportTag { … }; // The EXT-X-PROGRAM-DATE-TIME tag associates the first sample of a Media // Segment with an absolute date and/or time. It applies only to the next // Media Segment. struct MEDIA_EXPORT XProgramDateTimeTag { … }; enum class XKeyTagMethod { … }; enum class XKeyTagKeyFormat { … }; struct MEDIA_EXPORT XKeyTag { … }; struct MEDIA_EXPORT XSessionKeyTag { … }; } // namespace media::hls #endif // MEDIA_FORMATS_HLS_TAGS_H_