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

#include <mpd_builder.h>

Inheritance diagram for edash_packager::AdaptationSet:
edash_packager::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::ScopedXmlPtr< xmlNode >::type GetXml ()
 
void ForceSetSegmentAlignment (bool segment_alignment)
 
virtual void SetGroup (int group_number)
 
virtual int Group () 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
 

Detailed Description

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

Definition at line 156 of file mpd_builder.h.

Constructor & Destructor Documentation

edash_packager::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 636 of file mpd_builder.cc.

Member Function Documentation

void edash_packager::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 693 of file mpd_builder.cc.

Representation * edash_packager::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.
Returns
On success, returns a pointer to Representation. Otherwise returns NULL. The returned pointer is owned by the AdaptationSet instance.

Definition at line 655 of file mpd_builder.cc.

void edash_packager::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 707 of file mpd_builder.cc.

void edash_packager::AdaptationSet::ForceSetSegmentAlignment ( bool  segment_alignment)

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 783 of file mpd_builder.cc.

xml::ScopedXmlPtr< xmlNode >::type edash_packager::AdaptationSet::GetXml ( )

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

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

Definition at line 713 of file mpd_builder.cc.

int edash_packager::AdaptationSet::Group ( ) const
virtual
Returns
Returns the value for group. If not set, returns a negative value.

Definition at line 793 of file mpd_builder.cc.

void edash_packager::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 804 of file mpd_builder.cc.

void edash_packager::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 817 of file mpd_builder.cc.

void edash_packager::AdaptationSet::SetGroup ( int  group_number)
virtual

Sets the AdaptationSet attribute. Passing a negative value to this method will unset the attribute. Note that group=0 is a special group, as mentioned in the DASH MPD specification.

Parameters
group_numberis the value of AdaptatoinSet.

Definition at line 789 of file mpd_builder.cc.

void edash_packager::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 700 of file mpd_builder.cc.


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