DASH Media Packaging SDK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator
Public Types | Public Member Functions | Protected Member Functions | Friends | List of all members
shaka::AdaptationSet Class Reference

#include <mpd_builder.h>

Inheritance diagram for shaka::AdaptationSet:
shaka::MockAdaptationSet

Public Types

enum  Role {
  kRoleCaption, kRoleSubtitle, kRoleMain, kRoleAlternate,
  kRoleSupplementary, kRoleCommentary, kRoleDub
}
 

Public Member Functions

virtual RepresentationAddRepresentation (const MediaInfo &media_info)
 
virtual void AddContentProtectionElement (const ContentProtectionElement &element)
 
virtual void UpdateContentProtectionPssh (const std::string &drm_uuid, const std::string &pssh)
 
virtual void AddRole (Role role)
 
xml::scoped_xml_ptr< xmlNode > GetXml ()
 
virtual void ForceSetSegmentAlignment (bool segment_alignment)
 
void AddAdaptationSetSwitching (uint32_t adaptation_set_id)
 
const std::vector< uint32_t > & adaptation_set_switching_ids () const
 
uint32_t id () const
 
void OnNewSegmentForRepresentation (uint32_t representation_id, uint64_t start_time, uint64_t duration)
 
void OnSetFrameRateForRepresentation (uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
 

Protected Member Functions

 AdaptationSet (uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
 

Friends

class MpdBuilder
 
template<MpdBuilder::MpdType type>
class MpdBuilderTest
 

Detailed Description

AdaptationSet class provides methods to add Representations and <ContentProtection> elements to the AdaptationSet element.

Definition at line 165 of file mpd_builder.h.

Constructor & Destructor Documentation

shaka::AdaptationSet::AdaptationSet ( uint32_t  adaptation_set_id,
const std::string &  lang,
const MpdOptions mpd_options,
MpdBuilder::MpdType  mpd_type,
base::AtomicSequenceNumber *  representation_counter 
)
protected
Parameters
adaptation_set_idis an ID number for this AdaptationSet.
langis the language of this AdaptationSet. Mainly relevant for audio.
mpd_optionsis the options for this MPD.
mpd_typeis the type of this MPD.
representation_counteris a Counter for assigning ID numbers to Representation. It can not be NULL.

Definition at line 673 of file mpd_builder.cc.

Member Function Documentation

const std::vector<uint32_t>& shaka::AdaptationSet::adaptation_set_switching_ids ( ) const
inline
Returns
the ids of the adaptation sets this adaptation set can switch to.

Definition at line 240 of file mpd_builder.h.

void shaka::AdaptationSet::AddAdaptationSetSwitching ( uint32_t  adaptation_set_id)

Adds the id of the adaptation set this adaptation set can switch to.

Parameters
adaptation_set_idis the id of the switchable adaptation set.

Definition at line 849 of file mpd_builder.cc.

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

Add a ContenProtection element to the adaptation set. AdaptationSet does not add <ContentProtection> elements automatically to itself even if media_info.protected_content is 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 734 of file mpd_builder.cc.

Representation * shaka::AdaptationSet::AddRepresentation ( const MediaInfo &  media_info)
virtual

Create a Representation instance using media_info.

Parameters
media_infois a MediaInfo object used to initialize the returned Representation instance. It may contain only one of VideoInfo, AudioInfo, or TextInfo, i.e. VideoInfo XOR AudioInfo XOR TextInfo.
Returns
On success, returns a pointer to Representation. Otherwise returns NULL. The returned pointer is owned by the AdaptationSet instance.

Definition at line 690 of file mpd_builder.cc.

void shaka::AdaptationSet::AddRole ( Role  role)
virtual

Set the Role element for this AdaptationSet. The Role element's is schemeIdUri='urn:mpeg:dash:role:2011'. See ISO/IEC 23009-1:2012 section 5.8.5.5.

Parameters
roleof this AdaptationSet.

Definition at line 746 of file mpd_builder.cc.

void shaka::AdaptationSet::ForceSetSegmentAlignment ( bool  segment_alignment)
virtual

Forces the (sub)segmentAlignment field to be set to segment_alignment. Use this if you are certain that the (sub)segments are alinged/unaligned for the AdaptationSet.

Parameters
segment_alignmentis the value used for (sub)segmentAlignment attribute.

Definition at line 843 of file mpd_builder.cc.

xml::scoped_xml_ptr< xmlNode > shaka::AdaptationSet::GetXml ( )

Makes a copy of AdaptationSet xml element with its child Representation and ContentProtection elements.

Returns
On success returns a non-NULL scoped_xml_ptr. Otherwise returns a NULL scoped_xml_ptr.

Definition at line 756 of file mpd_builder.cc.

void shaka::AdaptationSet::OnNewSegmentForRepresentation ( uint32_t  representation_id,
uint64_t  start_time,
uint64_t  duration 
)

Notifies the AdaptationSet instance that a new (sub)segment was added to the Representation with representation_id. This must be called every time a (sub)segment is added to a Representation in this AdaptationSet. If a Representation is constructed using AddRepresentation() this is called automatically whenever Representation::AddNewSegment() is is called.

Parameters
representation_idis the id of the Representation with a new segment.
start_timeis the start time of the new segment.
durationis the duration of the new segment.

Definition at line 860 of file mpd_builder.cc.

void shaka::AdaptationSet::OnSetFrameRateForRepresentation ( uint32_t  representation_id,
uint32_t  frame_duration,
uint32_t  timescale 
)

Notifies the AdaptationSet instance that the sample duration for the Representation was set. The frame duration for a video Representation might not be specified when a Representation is created (by calling AddRepresentation()). This should be used to notify this instance that the frame rate for a Represenatation has been set. This method is called automatically when Represenatation::SetSampleDuration() is called if the Represenatation instance was created using AddRepresentation().

Parameters
representation_idis the id of the Representation. is the duration of a frame in the Representation.
timescaleis the timescale of the Representation.

Definition at line 871 of file mpd_builder.cc.

void shaka::AdaptationSet::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 740 of file mpd_builder.cc.


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