Shaka Packager SDK
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
Classes | Typedefs | Enumerations | Functions | Variables
shaka Namespace Reference

All the methods that are virtual are virtual for mocking. More...

Classes

class  AdaptationSet
 
class  BandwidthEstimator
 
class  CallbackFile
 
class  Clock
 
struct  ContentProtectionElement
 
struct  Element
 
struct  FileCloser
 
class  FlagSaver
 
struct  HexBytes
 
class  HttpFile
 
class  IoCache
 Declaration of class which implements a thread-safe circular buffer. More...
 
class  LocalFile
 Implement LocalFile which deals with local storage. More...
 
class  MemoryFile
 
class  MockAdaptationSet
 
class  MockMpdBuilder
 
class  MockMpdNotifier
 
class  MockPeriod
 
class  MockRepresentation
 
class  MpdBuilder
 This class generates DASH MPDs (Media Presentation Descriptions). More...
 
class  MpdNotifier
 
class  MpdNotifierFactory
 
struct  MpdOptions
 Defines Mpd Options. More...
 
class  MpdWriter
 
class  Period
 
class  Representation
 
class  RepresentationStateChangeListener
 
struct  SegmentInfo
 
class  SimpleMpdNotifier
 
class  TempFile
 
class  TestClock
 
class  ThreadedIoFile
 Declaration of class which implements a thread-safe circular buffer. More...
 
class  ThreadPool
 
class  UdpFile
 Implements UdpFile, which receives UDP unicast and multicast streams. More...
 
class  UdpOptions
 Options parsed from UDP url string of the form: udp://ip:port[?options]. More...
 

Typedefs

typedef std::pair< std::string, std::string > KVPair
 
typedef MediaInfo::AudioInfo AudioInfo
 
typedef MediaInfo::VideoInfo VideoInfo
 

Enumerations

enum class  HttpMethod { kGet , kPost , kPut , kDelete }
 
enum  ContentType { kContentTypeUnknown , kContentTypeVideo , kContentTypeAudio , kContentTypeText }
 
enum class  DashProfile { kUnknown , kOnDemand , kLive }
 
enum class  MpdType { kStatic , kDynamic }
 

Functions

bool ValidateCryptoFlags ()
 
bool ValidatePRCryptoFlags ()
 
bool ValidateRawKeyCryptoFlags ()
 
bool ValidateRetiredFlags ()
 
std::optional< StreamDescriptor > ParseStreamDescriptor (const std::string &descriptor_string)
 
void PrintError (const std::string &error_message)
 
void PrintWarning (const std::string &warning_message)
 
template<class FlagType >
bool ValidateFlag (const char *flag_name, const FlagType &flag_value, bool condition, bool optional, const char *label)
 
bool ValidateWidevineCryptoFlags ()
 
std::string generate_unique_temp_path ()
 
void delete_file (const std::string &path)
 
bool TempFilePath (const std::string &temp_dir, std::string *temp_file_path)
 
std::string MakePathRelative (const std::filesystem::path &media_path, const std::filesystem::path &parent_path)
 
std::vector< KVPair > SplitStringIntoKeyValuePairs (std::string_view str, char kv_separator, char list_separator)
 
std::string LanguageToShortestForm (const std::string &language)
 
std::string LanguageToISO_639_2 (const std::string &language)
 
bool ProtectedContentEq (const MediaInfo::ProtectedContent &content_protection1, const MediaInfo::ProtectedContent &content_protection2)
 
std::set< std::string > GetUUIDs (const MediaInfo::ProtectedContent *protected_content)
 
bool WriteMpdToFile (const std::string &output_path, MpdBuilder *mpd_builder)
 
ContentType GetContentType (const MediaInfo &media_info)
 
std::string Uint8VectorToBase64 (const std::vector< uint8_t > &input)
 Converts uint8 vector into base64 encoded string.
 
bool HasVODOnlyFields (const MediaInfo &media_info)
 
bool HasLiveOnlyFields (const MediaInfo &media_info)
 
void RemoveDuplicateAttributes (ContentProtectionElement *content_protection_element)
 
std::string GetLanguage (const MediaInfo &media_info)
 
std::string GetCodecs (const MediaInfo &media_info)
 
std::string GetSupplementalCodecs (const MediaInfo &media_info)
 
std::string GetSupplementalProfiles (const MediaInfo &media_info)
 
std::string GetBaseCodec (const MediaInfo &media_info)
 
std::string GetAdaptationSetKey (const MediaInfo &media_info, bool ignore_codec)
 
std::string FloatToXmlString (double number)
 
std::string SecondsToXmlDuration (double seconds)
 
bool GetDurationAttribute (xmlNodePtr node, float *duration)
 
bool MoreThanOneTrue (bool b1, bool b2, bool b3)
 
bool AtLeastOneTrue (bool b1, bool b2, bool b3)
 
bool OnlyOneTrue (bool b1, bool b2, bool b3)
 
bool HexToUUID (const std::string &data, std::string *uuid_format)
 
void UpdateContentProtectionPsshHelper (const std::string &drm_uuid, const std::string &pssh, std::list< ContentProtectionElement > *content_protection_elements)
 
void AddContentProtectionElements (const MediaInfo &media_info, Representation *parent)
 
void AddContentProtectionElements (const MediaInfo &media_info, AdaptationSet *parent)
 
bool XmlEqual (const std::string &xml1, const xml::XmlNode &xml2)
 
std::ostream & operator<< (std::ostream &os, const Status &x)
 
bool AbslParseFlag (absl::string_view text, HexBytes *flag, std::string *error)
 
std::string AbslUnparseFlag (const HexBytes &flag)
 
std::string_view byte_array_to_string_view (const uint8_t *bytes, size_t bytes_size)
 Convert byte array to string_view.
 
std::string_view byte_vector_to_string_view (const std::vector< uint8_t > &bytes)
 Convert byte vector to string_view.
 
void HexStringToBytes (const std::string &hex, std::vector< uint8_t > *bytes)
 
bool ValidHexStringToBytes (const std::string &hex, std::vector< uint8_t > *bytes)
 
bool ValidHexStringToBytes (const std::string &hex, std::string *bytes)
 
std::vector< std::string > SplitAndTrimSkipEmpty (const std::string &str, char delimiter)
 

Variables

const char * kCallbackFilePrefix = "callback://"
 
const char * kLocalFilePrefix = "file://"
 
const char * kMemoryFilePrefix = "memory://"
 
const char * kUdpFilePrefix = "udp://"
 
const char * kHttpFilePrefix = "http://"
 
const char * kHttpsFilePrefix = "https://"
 
const char kAdditionalFileMode [] = "b"
 
const char kEncryptedMp4Scheme [] = "urn:mpeg:dash:mp4protection:2011"
 
const char kPsshElementName [] = "cenc:pssh"
 
const char kMsproElementName [] = "mspr:pro"
 
const uint32_t kTransferFunctionPQ = 16
 
const uint32_t kTransferFunctionHLG = 18
 

Detailed Description

All the methods that are virtual are virtual for mocking.

All the methods that are virtual are virtual for mocking. NOTE: Inclusion of this module will cause xmlInitParser and xmlCleanupParser to be called at static initialization / deinitialization time.

This file contains helper functions and enums for MpdNotifier implementations.

Typedef Documentation

◆ AudioInfo

typedef MediaInfo::AudioInfo shaka::AudioInfo

Definition at line 47 of file xml_node.cc.

◆ KVPair

typedef std::pair<std::string, std::string> shaka::KVPair

Definition at line 14 of file kv_pairs.h.

◆ VideoInfo

typedef MediaInfo::VideoInfo shaka::VideoInfo

Definition at line 48 of file xml_node.cc.

Enumeration Type Documentation

◆ ContentType

enum shaka::ContentType

Definition at line 23 of file mpd_notifier_util.h.

◆ DashProfile

enum class shaka::DashProfile
strong

Definition at line 16 of file mpd_options.h.

◆ HttpMethod

enum class shaka::HttpMethod
strong

Definition at line 23 of file http_file.h.

◆ MpdType

enum class shaka::MpdType
strong

Definition at line 22 of file mpd_options.h.

Function Documentation

◆ AbslParseFlag()

bool shaka::AbslParseFlag ( absl::string_view  text,
HexBytes flag,
std::string *  error 
)

Definition at line 26 of file absl_flag_hexbytes.cc.

◆ AbslUnparseFlag()

std::string shaka::AbslUnparseFlag ( const HexBytes flag)

Definition at line 50 of file absl_flag_hexbytes.cc.

◆ AddContentProtectionElements() [1/2]

void shaka::AddContentProtectionElements ( const MediaInfo &  media_info,
AdaptationSet parent 
)

Adds <ContentProtection> elements specified by media_info to representation.

Parameters
media_infomay or may not have protected_content field.
representationis the parent element that owns the ContentProtection elements.

Definition at line 528 of file mpd_utils.cc.

◆ AddContentProtectionElements() [2/2]

void shaka::AddContentProtectionElements ( const MediaInfo &  media_info,
Representation parent 
)

Adds <ContentProtection> elements specified by media_info to adaptation_set. Note that this will add the elements as direct chlidren of AdaptationSet.

Parameters
media_infomay or may not have protected_content field.
adaptation_setis the parent element that owns the ContentProtection elements.

Definition at line 523 of file mpd_utils.cc.

◆ AtLeastOneTrue()

bool shaka::AtLeastOneTrue ( bool  b1,
bool  b2,
bool  b3 
)

Definition at line 281 of file mpd_utils.cc.

◆ byte_array_to_string_view()

std::string_view shaka::byte_array_to_string_view ( const uint8_t *  bytes,
size_t  bytes_size 
)
inline

Convert byte array to string_view.

Definition at line 16 of file bytes_to_string_view.h.

◆ byte_vector_to_string_view()

std::string_view shaka::byte_vector_to_string_view ( const std::vector< uint8_t > &  bytes)
inline

Convert byte vector to string_view.

Definition at line 22 of file bytes_to_string_view.h.

◆ delete_file()

void shaka::delete_file ( const std::string &  path)

Definition at line 35 of file file_test_util.cc.

◆ FloatToXmlString()

std::string shaka::FloatToXmlString ( double  number)

Definition at line 231 of file mpd_utils.cc.

◆ generate_unique_temp_path()

std::string shaka::generate_unique_temp_path ( )

Definition at line 13 of file file_test_util.cc.

◆ GetAdaptationSetKey()

std::string shaka::GetAdaptationSetKey ( const MediaInfo &  media_info,
bool  ignore_codec 
)

Definition at line 173 of file mpd_utils.cc.

◆ GetBaseCodec()

std::string shaka::GetBaseCodec ( const MediaInfo &  media_info)

Definition at line 155 of file mpd_utils.cc.

◆ GetCodecs()

std::string shaka::GetCodecs ( const MediaInfo &  media_info)

Definition at line 101 of file mpd_utils.cc.

◆ GetContentType()

ContentType shaka::GetContentType ( const MediaInfo &  media_info)

Determines the content type of |media_info|.

Parameters
media_infois the information about the media.
Returns
content type of the media_info.

Definition at line 34 of file mpd_notifier_util.cc.

◆ GetDurationAttribute()

bool shaka::GetDurationAttribute ( xmlNodePtr  node,
float *  duration 
)

Definition at line 257 of file mpd_utils.cc.

◆ GetLanguage()

std::string shaka::GetLanguage ( const MediaInfo &  media_info)

Definition at line 91 of file mpd_utils.cc.

◆ GetSupplementalCodecs()

std::string shaka::GetSupplementalCodecs ( const MediaInfo &  media_info)

Definition at line 132 of file mpd_utils.cc.

◆ GetSupplementalProfiles()

std::string shaka::GetSupplementalProfiles ( const MediaInfo &  media_info)

Definition at line 143 of file mpd_utils.cc.

◆ GetUUIDs()

std::set< std::string > shaka::GetUUIDs ( const MediaInfo::ProtectedContent *  protected_content)

Definition at line 235 of file adaptation_set.cc.

◆ HasLiveOnlyFields()

bool shaka::HasLiveOnlyFields ( const MediaInfo &  media_info)

Definition at line 73 of file mpd_utils.cc.

◆ HasVODOnlyFields()

bool shaka::HasVODOnlyFields ( const MediaInfo &  media_info)

Definition at line 68 of file mpd_utils.cc.

◆ HexStringToBytes()

void shaka::HexStringToBytes ( const std::string &  hex,
std::vector< uint8_t > *  bytes 
)

Definition at line 14 of file hex_parser.cc.

◆ HexToUUID()

bool shaka::HexToUUID ( const std::string &  data,
std::string *  uuid_format 
)

Converts hex data to UUID format. Hex data must be size 16.

Parameters
datainput hex data.
uuid_formatis the UUID format of the input.

Definition at line 290 of file mpd_utils.cc.

◆ LanguageToISO_639_2()

std::string shaka::LanguageToISO_639_2 ( const std::string &  language)

Convert a language tag to a 3-letter ISO-639-2 code, as required by the ISO BMFF spec. The input is assumed to be a valid ISO-639-2 or ISO-639-1 language code. Regions and variants are not supported.

Definition at line 110 of file language_utils.cc.

◆ LanguageToShortestForm()

std::string shaka::LanguageToShortestForm ( const std::string &  language)

Convert a language tag to its shortest form, as required by RFC 5646 indicated in the MPD and HLS specs. Assumes the input is a valid ISO-639-2 or ISO-639-1 language tag, or an empty string. Regions and variants are preserved in the conversion.

Definition at line 82 of file language_utils.cc.

◆ MakePathRelative()

std::string shaka::MakePathRelative ( const std::filesystem::path &  media_path,
const std::filesystem::path &  parent_path 
)

Definition at line 56 of file file_util.cc.

◆ MoreThanOneTrue()

bool shaka::MoreThanOneTrue ( bool  b1,
bool  b2,
bool  b3 
)

Definition at line 277 of file mpd_utils.cc.

◆ OnlyOneTrue()

bool shaka::OnlyOneTrue ( bool  b1,
bool  b2,
bool  b3 
)

Definition at line 285 of file mpd_utils.cc.

◆ operator<<()

std::ostream & shaka::operator<< ( std::ostream &  os,
const Status &  x 
)

Definition at line 94 of file status.cc.

◆ ParseStreamDescriptor()

std::optional< StreamDescriptor > shaka::ParseStreamDescriptor ( const std::string &  descriptor_string)

Parses a descriptor string, and inserts into sorted list of stream descriptors.

Parameters
descriptor_stringcontains comma separate name-value pairs describing the stream.
descriptor_listis a pointer to the sorted descriptor list into which the new descriptor should be inserted.
Returns
true if successful, false otherwise. May print error messages.

Definition at line 107 of file stream_descriptor.cc.

◆ PrintError()

void shaka::PrintError ( const std::string &  error_message)

Format and print error message.

Parameters
error_messagespecifies the error message.

Definition at line 15 of file validate_flag.cc.

◆ PrintWarning()

void shaka::PrintWarning ( const std::string &  warning_message)

Format and print warning message.

Parameters
warning_messagespecifies the warning message.

Definition at line 19 of file validate_flag.cc.

◆ ProtectedContentEq()

bool shaka::ProtectedContentEq ( const MediaInfo::ProtectedContent &  content_protection1,
const MediaInfo::ProtectedContent &  content_protection2 
)

Definition at line 209 of file adaptation_set.cc.

◆ RemoveDuplicateAttributes()

void shaka::RemoveDuplicateAttributes ( ContentProtectionElement content_protection_element)

Definition at line 78 of file mpd_utils.cc.

◆ SecondsToXmlDuration()

std::string shaka::SecondsToXmlDuration ( double  seconds)

Definition at line 248 of file mpd_utils.cc.

◆ SplitAndTrimSkipEmpty()

std::vector< std::string > shaka::SplitAndTrimSkipEmpty ( const std::string &  str,
char  delimiter 
)

Definition at line 12 of file string_trim_split.cc.

◆ SplitStringIntoKeyValuePairs()

std::vector< KVPair > shaka::SplitStringIntoKeyValuePairs ( std::string_view  str,
char  kv_separator,
char  list_separator 
)

Definition at line 13 of file kv_pairs.cc.

◆ TempFilePath()

bool shaka::TempFilePath ( const std::string &  temp_dir,
std::string *  temp_file_path 
)

Create a temp file name in directory temp_dir. Generate the temp file in os specific temporary directory if temp_dir is empty.

Parameters
temp_dirspecifies the directory where the file should go.
temp_file_pathis the result temp file path on success.
Returns
true on success, false otherwise.

Definition at line 43 of file file_util.cc.

◆ Uint8VectorToBase64()

std::string shaka::Uint8VectorToBase64 ( const std::vector< uint8_t > &  input)

Converts uint8 vector into base64 encoded string.

Definition at line 51 of file mpd_notifier_util.cc.

◆ UpdateContentProtectionPsshHelper()

void shaka::UpdateContentProtectionPsshHelper ( const std::string &  drm_uuid,
const std::string &  pssh,
std::list< ContentProtectionElement > *  content_protection_elements 
)

Definition at line 321 of file mpd_utils.cc.

◆ ValidateCryptoFlags()

bool shaka::ValidateCryptoFlags ( )

Definition at line 67 of file crypto_flags.cc.

◆ ValidateFlag()

template<class FlagType >
bool shaka::ValidateFlag ( const char *  flag_name,
const FlagType &  flag_value,
bool  condition,
bool  optional,
const char *  label 
)

Validate a flag against the given condition.

Parameters
flag_nameis the name of the flag.
flag_valueis the value of the flag.
condition,optionaldetermines how the flag should be validated. If condition is true and optional is false, then this flag is required
labelspecifies the label associated with the condition. It is used to generate the error message on validation failure.
Returns
true on success, false otherwise.

Definition at line 37 of file validate_flag.h.

◆ ValidatePRCryptoFlags()

bool shaka::ValidatePRCryptoFlags ( )

Validate PlayReady encryption flags.

Returns
true on success, false otherwise.

Definition at line 31 of file playready_key_encryption_flags.cc.

◆ ValidateRawKeyCryptoFlags()

bool shaka::ValidateRawKeyCryptoFlags ( )

Validate raw encryption/decryption flags.

Returns
true on success, false otherwise.

Definition at line 56 of file raw_key_encryption_flags.cc.

◆ ValidateRetiredFlags()

bool shaka::ValidateRetiredFlags ( )

Definition at line 116 of file retired_flags.cc.

◆ ValidateWidevineCryptoFlags()

bool shaka::ValidateWidevineCryptoFlags ( )

Validate widevine encryption/decryption flags.

Returns
true on success, false otherwise.

Definition at line 91 of file widevine_encryption_flags.cc.

◆ ValidHexStringToBytes() [1/2]

bool shaka::ValidHexStringToBytes ( const std::string &  hex,
std::string *  bytes 
)

Definition at line 36 of file hex_parser.cc.

◆ ValidHexStringToBytes() [2/2]

bool shaka::ValidHexStringToBytes ( const std::string &  hex,
std::vector< uint8_t > *  bytes 
)

Definition at line 23 of file hex_parser.cc.

◆ WriteMpdToFile()

bool shaka::WriteMpdToFile ( const std::string &  output_path,
MpdBuilder mpd_builder 
)

Outputs MPD to output_path.

Parameters
output_pathis the path to the MPD output location.
mpd_builderis the MPD builder instance.

Definition at line 18 of file mpd_notifier_util.cc.

Variable Documentation

◆ kAdditionalFileMode

const char shaka::kAdditionalFileMode[] = "b"

Definition at line 26 of file local_file.cc.

◆ kCallbackFilePrefix

const char* shaka::kCallbackFilePrefix = "callback://"

Definition at line 42 of file file.cc.

◆ kEncryptedMp4Scheme

const char shaka::kEncryptedMp4Scheme[] = "urn:mpeg:dash:mp4protection:2011"

Definition at line 26 of file mpd_utils.h.

◆ kHttpFilePrefix

const char* shaka::kHttpFilePrefix = "http://"

Definition at line 46 of file file.cc.

◆ kHttpsFilePrefix

const char* shaka::kHttpsFilePrefix = "https://"

Definition at line 47 of file file.cc.

◆ kLocalFilePrefix

const char* shaka::kLocalFilePrefix = "file://"

Definition at line 43 of file file.cc.

◆ kMemoryFilePrefix

const char* shaka::kMemoryFilePrefix = "memory://"

Definition at line 44 of file file.cc.

◆ kMsproElementName

const char shaka::kMsproElementName[] = "mspr:pro"

Definition at line 28 of file mpd_utils.h.

◆ kPsshElementName

const char shaka::kPsshElementName[] = "cenc:pssh"

Definition at line 27 of file mpd_utils.h.

◆ kTransferFunctionHLG

const uint32_t shaka::kTransferFunctionHLG = 18

Definition at line 30 of file mpd_utils.h.

◆ kTransferFunctionPQ

const uint32_t shaka::kTransferFunctionPQ = 16

Definition at line 29 of file mpd_utils.h.

◆ kUdpFilePrefix

const char* shaka::kUdpFilePrefix = "udp://"

Definition at line 45 of file file.cc.