Shaka Packager SDK
Public Member Functions | Friends | List of all members
shaka::SimpleMpdNotifier Class Reference

#include <simple_mpd_notifier.h>

Inheritance diagram for shaka::SimpleMpdNotifier:
shaka::MpdNotifier

Public Member Functions

 SimpleMpdNotifier (const MpdOptions &mpd_options)
 
MpdNotifier implemetation overrides.

None of the methods write out the MPD file until Flush() is called.

bool Init () override
 
bool NotifyNewContainer (const MediaInfo &media_info, uint32_t *id) override
 
bool NotifyAvailabilityTimeOffset (uint32_t container_id) override
 
bool NotifySampleDuration (uint32_t container_id, int32_t sample_duration) override
 
bool NotifySegmentDuration (uint32_t container_id) override
 
bool NotifyNewSegment (uint32_t container_id, int64_t start_time, int64_t duration, uint64_t size, int64_t segment_number) override
 
bool NotifyCompletedSegment (uint32_t container_id, int64_t duration, uint64_t size) override
 
bool NotifyCueEvent (uint32_t container_id, int64_t timestamp) override
 
bool NotifyEncryptionUpdate (uint32_t container_id, const std::string &drm_uuid, const std::vector< uint8_t > &new_key_id, const std::vector< uint8_t > &new_pssh) override
 
bool NotifyMediaInfoUpdate (uint32_t container_id, const MediaInfo &media_info) override
 
bool Flush () override
 
- Public Member Functions inherited from shaka::MpdNotifier
 MpdNotifier (const MpdOptions &mpd_options)
 
bool include_mspr_pro () const
 
DashProfile dash_profile () const
 
MpdType mpd_type () const
 
bool use_segment_list () const
 

Friends

class SimpleMpdNotifierTest
 

Detailed Description

A simple MpdNotifier implementation which receives muxer listener event and generates an Mpd file.

Definition at line 30 of file simple_mpd_notifier.h.

Member Function Documentation

◆ Flush()

bool shaka::SimpleMpdNotifier::Flush ( )
overridevirtual

Call this method to force a flush. Implementations might not write out the MPD to a stream (file, stdout, etc.) when the MPD is updated, this forces a flush.

Implements shaka::MpdNotifier.

Definition at line 221 of file simple_mpd_notifier.cc.

◆ Init()

bool shaka::SimpleMpdNotifier::Init ( )
overridevirtual

Initializes the notifier. For example, if this notifier uses a network for notification, then this would set up the connection with the remote host.

Returns
true on success, false otherwise.

Implements shaka::MpdNotifier.

Definition at line 33 of file simple_mpd_notifier.cc.

◆ NotifyAvailabilityTimeOffset()

bool shaka::SimpleMpdNotifier::NotifyAvailabilityTimeOffset ( uint32_t  container_id)
overridevirtual

Record the availailityTimeOffset for Low Latency DASH streaming.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
Returns
true on success, false otherwise. This may fail if the container specified by container_id does not exist.

Reimplemented from shaka::MpdNotifier.

Definition at line 75 of file simple_mpd_notifier.cc.

◆ NotifyCompletedSegment()

bool shaka::SimpleMpdNotifier::NotifyCompletedSegment ( uint32_t  container_id,
int64_t  duration,
uint64_t  size 
)
overridevirtual

Notifies MpdBuilder that a segment is fully written and provides the segment's complete duration and size. For Low Latency only. Note, size and duration are not known when the low latency segment is first registered with the MPD, so we must update these values after the segment is complete.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
durationis the duration of the complete segment, in units of the stream's time scale.
sizeis the complete segment size in bytes.
Returns
true on success, false otherwise.

Reimplemented from shaka::MpdNotifier.

Definition at line 124 of file simple_mpd_notifier.cc.

◆ NotifyCueEvent()

bool shaka::SimpleMpdNotifier::NotifyCueEvent ( uint32_t  container_id,
int64_t  timestamp 
)
overridevirtual

Notifies MpdBuilder that there is a new CueEvent.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
timestampis the timestamp of the CueEvent.
Returns
true on success, false otherwise.

Implements shaka::MpdNotifier.

Definition at line 137 of file simple_mpd_notifier.cc.

◆ NotifyEncryptionUpdate()

bool shaka::SimpleMpdNotifier::NotifyEncryptionUpdate ( uint32_t  container_id,
const std::string &  drm_uuid,
const std::vector< uint8_t > &  new_key_id,
const std::vector< uint8_t > &  new_pssh 
)
overridevirtual

Notifiers MpdBuilder that there is a new PSSH for the container. This may be called whenever the key has to change, e.g. key rotation.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
drm_uuidis the UUID of the DRM for encryption.
new_key_idis the new key ID for the key.
new_psshis the new pssh box (including the header).
Attention
This might change or get removed once DASH IF IOP specification writes a clear guideline on how to handle key rotation.

Implements shaka::MpdNotifier.

Definition at line 181 of file simple_mpd_notifier.cc.

◆ NotifyMediaInfoUpdate()

bool shaka::SimpleMpdNotifier::NotifyMediaInfoUpdate ( uint32_t  container_id,
const MediaInfo &  media_info 
)
overridevirtual
Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
media_infois the new MediaInfo. Note that codec related information cannot be updated.

Implements shaka::MpdNotifier.

Definition at line 205 of file simple_mpd_notifier.cc.

◆ NotifyNewContainer()

bool shaka::SimpleMpdNotifier::NotifyNewContainer ( const MediaInfo &  media_info,
uint32_t *  container_id 
)
overridevirtual

Notifies the MpdBuilder that there is a new container along with media_info. Live may have multiple files (segments) but those should be notified via NotifyNewSegment().

Parameters
media_infois the MediaInfo that will be passed to MpdBuilder.
[out]container_idis the numeric ID of the container, possibly for NotifyNewSegment() and AddContentProtectionElement(). Only populated on success.
Returns
true on success, false otherwise.

Implements shaka::MpdNotifier.

Definition at line 37 of file simple_mpd_notifier.cc.

◆ NotifyNewSegment()

bool shaka::SimpleMpdNotifier::NotifyNewSegment ( uint32_t  container_id,
int64_t  start_time,
int64_t  duration,
uint64_t  size,
int64_t  segment_number 
)
overridevirtual

Notifies MpdBuilder that there is a new segment ready. For live, this is usually a new segment, for VOD this is usually a subsegment, for low latency this is the first chunk.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
start_timeis the start time of the new segment, in units of the stream's time scale.
durationis the duration of the new segment, in units of the stream's time scale.
sizeis the new segment size in bytes.
segment_numberis the segment number.
Returns
true on success, false otherwise.

Implements shaka::MpdNotifier.

Definition at line 109 of file simple_mpd_notifier.cc.

◆ NotifySampleDuration()

bool shaka::SimpleMpdNotifier::NotifySampleDuration ( uint32_t  container_id,
int32_t  sample_duration 
)
overridevirtual

Change the sample duration of container with container_id.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
sample_durationis the duration of a sample in timescale of the media.
Returns
true on success, false otherwise. This may fail if the container specified by container_id does not exist.

Implements shaka::MpdNotifier.

Definition at line 86 of file simple_mpd_notifier.cc.

◆ NotifySegmentDuration()

bool shaka::SimpleMpdNotifier::NotifySegmentDuration ( uint32_t  container_id)
overridevirtual

Record the duration of a segment for Low Latency DASH streaming.

Parameters
container_idContainer ID obtained from calling NotifyNewContainer().
Returns
true on success, false otherwise. This may fail if the container specified by container_id does not exist.

Reimplemented from shaka::MpdNotifier.

Definition at line 98 of file simple_mpd_notifier.cc.


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