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)
 
virtual void AddTrickPlayReferenceId (uint32_t id)
 

Protected Member Functions

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

Friends

class MpdBuilder
 
template<DashProfile profile>
class MpdBuilderTest
 

Detailed Description

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

Definition at line 142 of file mpd_builder.h.

Constructor & Destructor Documentation

shaka::AdaptationSet::AdaptationSet ( uint32_t  adaptation_set_id,
const std::string &  lang,
const MpdOptions mpd_options,
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 648 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 217 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 836 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 709 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 663 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 721 of file mpd_builder.cc.

void shaka::AdaptationSet::AddTrickPlayReferenceId ( uint32_t  id)
virtual

Add the id of the adaptation set this trick play adaptation set belongs to.

Parameters
idthe id of the reference (or main) adapation set.

Definition at line 865 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 830 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 731 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 847 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 858 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 715 of file mpd_builder.cc.


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