Shaka Packager SDK
Public Types | Public Member Functions | List of all members
shaka::Representation Class Reference

#include <representation.h>

Inheritance diagram for shaka::Representation:
shaka::MockRepresentation

Public Types

enum  SuppressFlag { kSuppressWidth = 1, kSuppressHeight = 2, kSuppressFrameRate = 4 }
 

Public Member Functions

bool Init ()
 
virtual void AddContentProtectionElement (const ContentProtectionElement &element)
 
virtual void UpdateContentProtectionPssh (const std::string &drm_uuid, const std::string &pssh)
 
class AdaptationSet
 
class RepresentationTest
 
virtual void AddNewSegment (uint64_t start_time, uint64_t duration, uint64_t size)
 
virtual void SetSampleDuration (uint32_t sample_duration)
 
virtual const MediaInfo & GetMediaInfo () const
 
xml::scoped_xml_ptr< xmlNode > GetXml ()
 
void SuppressOnce (SuppressFlag flag)
 
bool GetEarliestTimestamp (double *timestamp_seconds) const
 
float GetDurationSeconds () const
 
uint32_t id () const
 
 Representation (const MediaInfo &media_info, const MpdOptions &mpd_options, uint32_t representation_id, std::unique_ptr< RepresentationStateChangeListener > state_change_listener)
 
 Representation (const Representation &representation, uint64_t presentation_time_offset, std::unique_ptr< RepresentationStateChangeListener > state_change_listener)
 

Detailed Description

Representation class contains references to a single media stream, as well as optional ContentProtection elements for that stream.

Definition at line 54 of file representation.h.

Constructor & Destructor Documentation

◆ Representation() [1/2]

shaka::Representation::Representation ( const MediaInfo &  media_info,
const MpdOptions mpd_options,
uint32_t  representation_id,
std::unique_ptr< RepresentationStateChangeListener state_change_listener 
)
protected
Parameters
media_infois a MediaInfo containing information on the media. media_info.bandwidth is required for 'static' profile. If media_info.bandwidth is not present in 'dynamic' profile, this tries to estimate it using the info passed to AddNewSegment().
mpd_optionsis options for the entire MPD.
representation_idis the numeric ID for the <Representation>.
state_change_listeneris an event handler for state changes to the representation. If null, no event handler registered.

Definition at line 105 of file representation.cc.

◆ Representation() [2/2]

shaka::Representation::Representation ( const Representation representation,
uint64_t  presentation_time_offset,
std::unique_ptr< RepresentationStateChangeListener state_change_listener 
)
protected
Parameters
representationpoints to the original Representation to be cloned.
presentation_time_offsetis the presentation time offset for the new Representation.
state_change_listeneris an event handler for state changes to the representation. If null, no event handler registered.

Definition at line 118 of file representation.cc.

Member Function Documentation

◆ AddContentProtectionElement()

void shaka::Representation::AddContentProtectionElement ( const ContentProtectionElement element)
virtual

Add a ContenProtection element to the representation. Representation does not add <ContentProtection> elements automatically to itself even if media_info passed to AdaptationSet::AddRepresentation() has media_info.protected_content populated. This is because some MPDs should have the elements at AdaptationSet level and some at Representation level.

Parameters
elementcontains the ContentProtection element contents. If element has {value, schemeIdUri} set and has {“value”, “schemeIdUri”} as key for additional_attributes, then the former is used.

Definition at line 180 of file representation.cc.

◆ AddNewSegment()

void shaka::Representation::AddNewSegment ( uint64_t  start_time,
uint64_t  duration,
uint64_t  size 
)
virtual

Add a media (sub)segment to the representation. AdaptationSetsubsegmentAlignment,segmentAlignment} cannot be set if this is not called for all Representations.

Parameters
start_timeis the start time for the (sub)segment, in units of the stream's time scale.
durationis the duration of the segment, in units of the stream's time scale.
sizeof the segment in bytes.

Definition at line 192 of file representation.cc.

◆ GetDurationSeconds()

float shaka::Representation::GetDurationSeconds ( ) const
Returns
The duration of the Representation in seconds.

Definition at line 314 of file representation.cc.

◆ GetEarliestTimestamp()

bool shaka::Representation::GetEarliestTimestamp ( double *  timestamp_seconds) const

Gets the earliest, normalized segment timestamp.

Returns
true if successful, false otherwise.

Definition at line 303 of file representation.cc.

◆ GetMediaInfo()

const MediaInfo & shaka::Representation::GetMediaInfo ( ) const
virtual
Returns
MediaInfo for the Representation.

Definition at line 226 of file representation.cc.

◆ GetXml()

xml::scoped_xml_ptr< xmlNode > shaka::Representation::GetXml ( )
Returns
Copy of <Representation>.

Definition at line 236 of file representation.cc.

◆ id()

uint32_t shaka::Representation::id ( ) const
inline
Returns
ID number for <Representation>.

Definition at line 139 of file representation.h.

◆ Init()

bool shaka::Representation::Init ( )

Tries to initialize the instance. If this does not succeed, the instance should not be used.

Returns
true on success, false otherwise.

Definition at line 138 of file representation.cc.

◆ SetSampleDuration()

void shaka::Representation::SetSampleDuration ( uint32_t  sample_duration)
virtual

Set the sample duration of this Representation. Sample duration is not available right away especially for live. This allows setting the sample duration after the Representation has been initialized.

Parameters
sample_durationis the duration of a sample.

Definition at line 216 of file representation.cc.

◆ SuppressOnce()

void shaka::Representation::SuppressOnce ( SuppressFlag  flag)

By calling this methods, the next time GetXml() is called, the corresponding attributes will not be set. For example, if SuppressOnce(kSuppressWidth) is called, then GetXml() will return a <Representation> element without a attribute. Note that it only applies to the next call to GetXml(), calling GetXml() again without calling this methods will return a <Representation> element with the attribute. This may be called multiple times to set different (or the same) flags.

Definition at line 299 of file representation.cc.

◆ UpdateContentProtectionPssh()

void shaka::Representation::UpdateContentProtectionPssh ( const std::string &  drm_uuid,
const std::string &  pssh 
)
virtual

Update the 'cenc:pssh' element for drm_uuid ContentProtection element. If the element does not exist, this will add one.

Parameters
drm_uuidis the UUID of the DRM for encryption.
psshis the content of <cenc:pssh> element. Note that DASH IF IOP mentions that this should be base64 encoded string of the whole pssh box.
Attention
This might get removed once DASH IF IOP specification makes a a clear guideline on how to handle key rotation. Also to get this working with shaka-player, this method DOES NOT update the PSSH element. Instead, it removes the element regardless of the content of pssh.

Definition at line 186 of file representation.cc.


The documentation for this class was generated from the following files: