shaka-packager/include/packager/hls_params.h
Joey Parrish 3e71302ba4
feat!: Rewrite build system and third-party dependencies (#1310)
This work was done over ~80 individual commits in the `cmake` branch,
which are now being merged back into `main`. As a roll-up commit, it is
too big to be reviewable, but each change was reviewed individually in
context of the `cmake` branch. After this, the `cmake` branch will be
renamed `cmake-porting-history` and preserved.

---------

Co-authored-by: Geoff Jukes <geoffjukes@users.noreply.github.com>
Co-authored-by: Bartek Zdanowski <bartek.zdanowski@gmail.com>
Co-authored-by: Carlos Bentzen <cadubentzen@gmail.com>
Co-authored-by: Dennis E. Mungai <2356871+Brainiarc7@users.noreply.github.com>
Co-authored-by: Cosmin Stejerean <cstejerean@gmail.com>
Co-authored-by: Carlos Bentzen <carlos.bentzen@bitmovin.com>
Co-authored-by: Cosmin Stejerean <cstejerean@meta.com>
Co-authored-by: Cosmin Stejerean <cosmin@offbytwo.com>
2023-12-01 09:32:19 -08:00

71 lines
2.9 KiB
C++

// Copyright 2017 Google LLC. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
#ifndef PACKAGER_PUBLIC_HLS_PARAMS_H_
#define PACKAGER_PUBLIC_HLS_PARAMS_H_
#include <cstdint>
#include <string>
namespace shaka {
/// Defines the EXT-X-PLAYLIST-TYPE in the HLS specification. For
/// HlsPlaylistType of kLive, EXT-X-PLAYLIST-TYPE tag is omitted.
enum class HlsPlaylistType {
kVod,
kEvent,
kLive,
};
/// HLS related parameters.
struct HlsParams {
/// HLS playlist type. See HLS specification for details.
HlsPlaylistType playlist_type = HlsPlaylistType::kVod;
/// HLS master playlist output path.
std::string master_playlist_output;
/// The base URL for the Media Playlists and media files listed in the
/// playlists. This is the prefix for the files.
std::string base_url;
/// Defines the live window, or the guaranteed duration of the time shifting
/// buffer for 'live' playlists.
double time_shift_buffer_depth = 0;
/// Segments outside the live window (defined by 'time_shift_buffer_depth'
/// above) are automatically removed except for the most recent X segments
/// defined by this parameter. This is needed to accommodate latencies in
/// various stages of content serving pipeline, so that the segments stay
/// accessible as they may still be accessed by the player. The segments are
/// not removed if the value is zero.
size_t preserved_segments_outside_live_window = 0;
/// Defines the key uri for "identity" and "com.apple.streamingkeydelivery"
/// key formats. Ignored if the playlist is not encrypted or not using the
/// above key formats.
std::string key_uri;
/// The renditions tagged with this language will have 'DEFAULT' set to 'YES'
/// in 'EXT-X-MEDIA' tag. This allows the player to choose the correct default
/// language for the content.
/// This applies to both audio and text tracks. The default language for text
/// tracks can be overriden by 'default_text_language'.
std::string default_language;
/// Same as above, but this overrides the default language for text tracks,
/// i.e. subtitles or close-captions.
std::string default_text_language;
// Indicates that all media samples in the media segments can be decoded
// without information from other segments.
bool is_independent_segments;
/// This is the target segment duration requested by the user. The actual
/// segment duration may be different to the target segment duration. It will
/// be populated from segment duration specified in ChunkingParams if not
/// specified.
double target_segment_duration = 0;
/// Custom EXT-X-MEDIA-SEQUENCE value to allow continuous media playback
/// across packager restarts. See #691 for details.
uint32_t media_sequence_number = 0;
};
} // namespace shaka
#endif // PACKAGER_PUBLIC_HLS_PARAMS_H_