1#ifndef _BBC_PARSE_DASH_MPD_MPD_HH_
2#define _BBC_PARSE_DASH_MPD_MPD_HH_
18#include <unordered_set>
51 using time_type = std::chrono::system_clock::time_point;
87 MPD(std::istream &input_stream,
const std::optional<URI> &mpd_location = std::nullopt);
95 MPD(
const std::vector<char> &mpd_xml,
const std::optional<URI> &mpd_location = std::nullopt);
96 MPD(
const std::vector<unsigned char> &mpd_xml,
const std::optional<URI> &mpd_location = std::nullopt);
104 MPD(
const std::string &filename,
const std::optional<URI> &mpd_location = std::nullopt);
165 const std::optional<URI> &
sourceURL()
const {
return m_mpdURL; };
173 MPD &
sourceURL(
const std::nullopt_t &) { m_mpdURL.reset();
return *
this; };
182 MPD &
sourceURL(
const std::optional<URI> &url) { m_mpdURL = url;
return *
this; };
183 MPD &
sourceURL(std::optional<URI> &&url) { m_mpdURL = std::move(url);
return *
this; };
202 std::string
asXML(
bool compact_form)
const;
217 static std::ostream &
compact(std::ostream &os);
232 static std::ostream &
pretty(std::ostream &os);
234 bool hasId()
const {
return m_id.has_value(); };
235 const std::string &
id(
const std::string &default_val)
const;
236 const std::optional<std::string> &
id()
const {
return m_id; };
237 MPD &
id(
const std::string &val) { m_id = val;
return *
this; };
238 MPD &
id(std::string &&val) { m_id = std::move(val);
return *
this; };
239 MPD &
id(
const std::nullopt_t&) { m_id.reset();
return *
this; };
241 const std::list<URI> &
profiles()
const {
return m_profiles; };
242 std::list<URI>::const_iterator
profilesBegin()
const {
return m_profiles.cbegin(); };
243 std::list<URI>::const_iterator
profilesEnd()
const {
return m_profiles.cend(); };
245 std::list<URI>::iterator
profilesEnd() {
return m_profiles.end(); };
247 if (idx >= m_profiles.size())
248 throw std::out_of_range(
"MPD profile does not exist");
249 auto it = m_profiles.cbegin();
250 while (idx > 0 && it != m_profiles.cend()) {it++; idx--;}
280 const std::optional<time_type> &
publishTime()
const {
return m_publishTime; };
283 MPD &
publishTime(
const std::nullopt_t&) { m_publishTime.reset();
return *
this; };
342 const std::list<BaseURL> &
baseURLs()
const {
return m_baseURLs; };
343 std::list<BaseURL>::const_iterator
baseURLsBegin()
const {
return m_baseURLs.cbegin(); };
344 std::list<BaseURL>::const_iterator
baseURLsEnd()
const {
return m_baseURLs.cend(); };
345 std::list<BaseURL>::iterator
baseURLsBegin() {
return m_baseURLs.begin(); };
346 std::list<BaseURL>::iterator
baseURLsEnd() {
return m_baseURLs.end(); };
366 const std::list<URI> &
locations()
const {
return m_locations; };
367 std::list<URI>::const_iterator
locationsBegin()
const {
return m_locations.cbegin(); };
368 std::list<URI>::const_iterator
locationsEnd()
const {
return m_locations.cend(); };
377 const std::list<PatchLocation> &
patchLocations()
const {
return m_patchLocations; };
378 std::list<PatchLocation>::const_iterator
patchLocationsBegin()
const {
return m_patchLocations.cbegin(); };
379 std::list<PatchLocation>::const_iterator
patchLocationsEnd()
const {
return m_patchLocations.cend(); };
443 const std::list<Period> &
periods()
const {
return m_periods; };
444 std::list<Period>::const_iterator
period(
const std::string &
id)
const;
445 std::list<Period>::const_iterator
periodsBegin()
const {
return m_periods.cbegin(); };
446 std::list<Period>::const_iterator
periodsEnd()
const {
return m_periods.cend(); };
447 std::list<Period>::iterator
period(
const std::string &
id);
448 std::list<Period>::iterator
periodsBegin() {
return m_periods.begin(); };
449 std::list<Period>::iterator
periodsEnd() {
return m_periods.end(); };
456 const std::list<Metrics> &
metrics()
const {
return m_metrics; };
457 std::list<Metrics>::const_iterator
metricsBegin()
const {
return m_metrics.cbegin(); };
458 std::list<Metrics>::const_iterator
metricsEnd()
const {
return m_metrics.cend(); };
459 std::list<Metrics>::iterator
metricsBegin() {
return m_metrics.begin(); };
460 std::list<Metrics>::iterator
metricsEnd() {
return m_metrics.end(); };
489 const std::list<Descriptor> &
utcTimings()
const {
return m_utcTimings; };
490 std::list<Descriptor>::const_iterator
utcTimingsBegin()
const {
return m_utcTimings.cbegin(); };
491 std::list<Descriptor>::const_iterator
utcTimingsEnd()
const {
return m_utcTimings.cend(); };
493 std::list<Descriptor>::iterator
utcTimingsEnd() {
return m_utcTimings.end(); };
561 void extractMPD(
void *doc);
562 std::list<Period>::const_iterator getPeriodFor(
const time_type &pres_time)
const;
566 std::optional<std::string> m_id;
567 std::list<URI> m_profiles;
569 std::optional<time_type> m_availabilityStartTime;
570 std::optional<time_type> m_availabilityEndTime;
571 std::optional<time_type> m_publishTime;
572 std::optional<duration_type> m_mediaPresentationDuration;
573 std::optional<duration_type> m_minimumUpdatePeriod;
575 std::optional<duration_type> m_timeShiftBufferDepth;
576 std::optional<duration_type> m_suggestedPresentationDelay;
577 std::optional<duration_type> m_maxSegmentDuration;
578 std::optional<duration_type> m_maxSubsegmentDuration;
580 std::list<ProgramInformation> m_programInformations;
581 std::list<BaseURL> m_baseURLs;
582 std::list<URI> m_locations;
583 std::list<PatchLocation> m_patchLocations;
584 std::list<ServiceDescription> m_serviceDescriptions;
585 std::list<InitializationSet> m_initializationSets;
586 std::list<UIntVWithID> m_initializationGroups;
587 std::list<UIntVWithID> m_initializationPresentations;
588 std::list<ContentProtection> m_contentProtections;
589 std::list<Period> m_periods;
590 std::list<Metrics> m_metrics;
591 std::list<Descriptor> m_essentialProperties;
592 std::list<Descriptor> m_supplementaryProperties;
593 std::list<Descriptor> m_utcTimings;
594 std::optional<LeapSecondInformation> m_leapSecondInformation;
597 std::optional<URI> m_mpdURL;
602 bool haveUtcTimingOffsetFromSystemClock;
std::ostream & operator<<(std::ostream &os, const com::bbc::libmpdpp ::MPD &mpd)
AdaptationSet class.
Definition AdaptationSet.hh:60
Definition ContentProtection.hh:37
Definition Descriptor.hh:41
Definition InitializationSet.hh:39
std::list< Descriptor >::iterator utcTimingsEnd()
Definition MPD.hh:493
std::list< Period >::iterator periodsBegin()
Definition MPD.hh:448
MPD & profileRemove(const std::list< URI >::const_iterator &it)
MPD & baseURLRemove(const BaseURL &base_url)
std::list< Descriptor >::iterator supplementaryPropertiesEnd()
Definition MPD.hh:482
bool hasId() const
Definition MPD.hh:234
MPD & initializationSetAdd(const InitializationSet &init_set)
MPD & baseURLAdd(const BaseURL &base_url)
MPD & suggestedPresentationDelay(const duration_type &val)
Definition MPD.hh:313
MPD & locationAdd(const URI &location)
MPD & programInformationRemove(const std::list< ProgramInformation >::iterator &)
MPD & sourceURL(const std::nullopt_t &)
Definition MPD.hh:173
MPD & supplementaryPropertyRemove(const std::list< Descriptor >::iterator &)
MPD & locationRemove(const URI &location)
MPD & periodAdd(Period &&period)
MPD & profileAdd(const URI &uri)
MPD & publishTime(const std::nullopt_t &)
Definition MPD.hh:283
MPD & metricRemove(const std::list< Metrics >::const_iterator &)
MPD & id(std::string &&val)
Definition MPD.hh:238
const URI & profile(std::list< URI >::size_type idx) const
Definition MPD.hh:246
MPD & leapSecondInformation(const std::nullopt_t &)
Definition MPD.hh:506
std::list< URI >::iterator profilesBegin()
Definition MPD.hh:244
MPD & timeShiftBufferDepth(const duration_type &val)
Definition MPD.hh:306
std::list< UIntVWithID >::const_iterator initializationPresentationsBegin() const
Definition MPD.hh:422
MPD & maxSegmentDuration(const std::nullopt_t &)
Definition MPD.hh:322
PresentationType presentationType() const
Definition MPD.hh:261
MPD & programInformationAdd(const ProgramInformation &prog_info)
const std::list< ProgramInformation > & programInformations() const
Definition MPD.hh:331
bool hasMaxSubsegmentDuration() const
Definition MPD.hh:324
bool hasMinimumUpdatePeriod() const
Definition MPD.hh:292
std::list< Period >::const_iterator period(const std::string &id) const
MPD & minBufferTime(const duration_type &val)
Definition MPD.hh:300
MPD & mediaPresentationDuration(const std::nullopt_t &)
Definition MPD.hh:290
std::list< Descriptor >::const_iterator essentialPropertiesEnd() const
Definition MPD.hh:469
std::list< BaseURL >::iterator baseURLsEnd()
Definition MPD.hh:346
std::list< ProgramInformation >::iterator programInformationsEnd()
Definition MPD.hh:335
MPD(std::istream &input_stream, const std::optional< URI > &mpd_location=std::nullopt)
std::list< ProgramInformation >::const_iterator programInformationsBegin() const
Definition MPD.hh:332
std::list< URI >::const_iterator locationsBegin() const
Definition MPD.hh:367
MPD(const std::vector< unsigned char > &mpd_xml, const std::optional< URI > &mpd_location=std::nullopt)
const duration_type & minBufferTime() const
Definition MPD.hh:299
std::list< InitializationSet >::iterator initializationSetsBegin()
Definition MPD.hh:402
MPD & maxSubsegmentDuration(const duration_type &val)
Definition MPD.hh:327
std::list< Descriptor >::const_iterator supplementaryPropertiesEnd() const
Definition MPD.hh:480
static std::ostream & pretty(std::ostream &os)
bool hasLeapSecondInformation() const
Definition MPD.hh:501
std::list< URI >::const_iterator locationsEnd() const
Definition MPD.hh:368
std::list< BaseURL > getBaseURLs() const
std::list< BaseURL >::const_iterator baseURLsBegin() const
Definition MPD.hh:343
std::list< PatchLocation >::const_iterator patchLocationsBegin() const
Definition MPD.hh:378
std::list< BaseURL >::const_iterator baseURLsEnd() const
Definition MPD.hh:344
std::list< Metrics >::const_iterator metricsEnd() const
Definition MPD.hh:458
MPD & initializationPresentationAdd(UIntVWithID &&init_pres)
MPD & baseURLRemove(const std::list< BaseURL >::const_iterator &)
const std::list< BaseURL > & baseURLs() const
Definition MPD.hh:342
MPD & sourceURL(URI &&url)
Definition MPD.hh:181
MPD & initializationGroupRemove(const std::list< UIntVWithID >::iterator &)
std::list< Descriptor >::iterator supplementaryPropertiesBegin()
Definition MPD.hh:481
std::list< ContentProtection >::const_iterator contentProtectionsEnd() const
Definition MPD.hh:434
MPD & leapSecondInformation(const LeapSecondInformation &val)
Definition MPD.hh:504
const time_type & availabilityEndTime(const time_type &default_val) const
MPD & sourceURL(const std::optional< URI > &url)
Definition MPD.hh:182
std::unordered_set< const Representation * > selectedRepresentations() const
const time_type & publishTime(const time_type &default_val) const
MPD & minimumUpdatePeriod(duration_type &&val)
Definition MPD.hh:296
MPD & initializationGroupAdd(UIntVWithID &&init_group)
MPD & initializationGroupRemove(const UIntVWithID &init_group)
std::list< BaseURL >::iterator baseURLsBegin()
Definition MPD.hh:345
MPD & utcTimingAdd(Descriptor &&prog_info)
MPD & serviceDescriptionRemove(const std::list< ServiceDescription >::const_iterator &)
void deselectAllRepresentations()
const std::list< URI > & locations() const
Definition MPD.hh:366
const std::list< Descriptor > & supplementaryProperties() const
Definition MPD.hh:478
std::list< SegmentAvailability > selectedSegmentAvailability(const time_type &query_time=std::chrono::system_clock::now()) const
MPD & contentProtectionRemove(const std::list< ContentProtection >::const_iterator &)
std::list< InitializationSet >::iterator initializationSetsEnd()
Definition MPD.hh:403
std::list< ContentProtection >::iterator contentProtectionsBegin()
Definition MPD.hh:435
MPD & serviceDescriptionRemove(const std::list< ServiceDescription >::iterator &)
MPD & periodAdd(const Period &period)
const std::list< UIntVWithID > & initializationGroups() const
Definition MPD.hh:410
MPD & availabilityEndTime(const time_type &val)
Definition MPD.hh:274
const std::list< ContentProtection > & contentProtections() const
Definition MPD.hh:432
MPD(const std::vector< char > &mpd_xml, const std::optional< URI > &mpd_location=std::nullopt)
std::list< Metrics >::iterator metricsBegin()
Definition MPD.hh:459
MPD & minimumUpdatePeriod(const duration_type &val)
Definition MPD.hh:295
const std::list< Descriptor > & essentialProperties() const
Definition MPD.hh:467
const std::optional< time_type > & publishTime() const
Definition MPD.hh:280
MPD & essentialPropertyRemove(const Descriptor &prog_info)
const std::optional< duration_type > & timeShiftBufferDepth() const
Definition MPD.hh:305
MPD & maxSegmentDuration(const duration_type &val)
Definition MPD.hh:320
MPD & minimumUpdatePeriod(const std::nullopt_t &)
Definition MPD.hh:297
std::list< UIntVWithID >::const_iterator initializationPresentationsEnd() const
Definition MPD.hh:423
const std::list< ServiceDescription > & serviceDescriptions() const
Definition MPD.hh:388
MPD & sourceURL(const URI &url)
Definition MPD.hh:180
std::list< URI >::iterator locationsEnd()
Definition MPD.hh:370
MPD & periodRemove(const std::list< Period >::const_iterator &period_it)
MPD & serviceDescriptionRemove(const ServiceDescription &service_desc)
MPD & supplementaryPropertyAdd(Descriptor &&prog_info)
MPD & metricAdd(Metrics &&prog_info)
std::list< SegmentAvailability > selectedInitializationSegments(const time_type &query_time=std::chrono::system_clock::now()) const
MPD & timeShiftBufferDepth(const std::nullopt_t &)
Definition MPD.hh:308
std::list< UIntVWithID >::const_iterator initializationGroupsEnd() const
Definition MPD.hh:412
bool profilesContain(const URI &uri) const
const std::optional< duration_type > & minimumUpdatePeriod() const
Definition MPD.hh:294
const std::list< Descriptor > & utcTimings() const
Definition MPD.hh:489
std::list< Period >::iterator periodsEnd()
Definition MPD.hh:449
bool hasMediaPresentationDuration() const
Definition MPD.hh:285
bool hasMaxSegmentDuration() const
Definition MPD.hh:317
MPD & essentialPropertyRemove(const std::list< Descriptor >::iterator &)
std::chrono::system_clock::time_point time_type
Date-time type used in the MPD.
Definition MPD.hh:51
std::list< PatchLocation >::const_iterator patchLocationsEnd() const
Definition MPD.hh:379
MPD & suggestedPresentationDelay(const std::nullopt_t &)
Definition MPD.hh:315
std::list< Period >::const_iterator periodsBegin() const
Definition MPD.hh:445
MPD & baseURLAdd(BaseURL &&base_url)
MPD & maxSubsegmentDuration(const std::nullopt_t &)
Definition MPD.hh:329
MPD & initializationSetAdd(InitializationSet &&init_set)
MPD & contentProtectionAdd(const ContentProtection &content_protection)
MPD & availabilityEndTime(time_type &&val)
Definition MPD.hh:275
const std::optional< duration_type > & maxSegmentDuration() const
Definition MPD.hh:319
const std::list< Metrics > & metrics() const
Definition MPD.hh:456
MPD & periodRemove(const std::list< Period >::iterator &period_it)
const std::optional< std::string > & id() const
Definition MPD.hh:236
const std::optional< duration_type > & mediaPresentationDuration() const
Definition MPD.hh:287
MPD & patchLocationRemove(const std::list< PatchLocation >::iterator &)
std::list< InitializationSet >::const_iterator initializationSetsBegin() const
Definition MPD.hh:400
MPD & id(const std::string &val)
Definition MPD.hh:237
std::list< Period >::iterator period(const std::string &id)
std::list< ServiceDescription >::iterator serviceDescriptionsBegin()
Definition MPD.hh:391
bool hasTimeShiftBufferDepth() const
Definition MPD.hh:303
MPD & contentProtectionAdd(ContentProtection &&content_protection)
MPD & essentialPropertyRemove(const std::list< Descriptor >::const_iterator &)
std::string asXML(bool compact_form) const
std::list< Period >::const_iterator periodsEnd() const
Definition MPD.hh:446
MPD(const duration_type &minimum_buffer_time, const URI &profile, Period &&period, PresentationType presentation_type=STATIC)
const duration_type & maxSegmentDuration(const duration_type &default_val) const
bool hasSourceURL() const
Definition MPD.hh:159
MPD & mediaPresentationDuration(const duration_type &val)
Definition MPD.hh:288
std::list< InitializationSet >::const_iterator initializationSetsEnd() const
Definition MPD.hh:401
const std::optional< duration_type > & maxSubsegmentDuration() const
Definition MPD.hh:326
const duration_type & maxSubsegmentDuration(const duration_type &default_val) const
const duration_type & minimumUpdatePeriod(const duration_type &default_val) const
std::list< ServiceDescription >::const_iterator serviceDescriptionsEnd() const
Definition MPD.hh:390
const std::optional< duration_type > & suggestedPresentationDelay() const
Definition MPD.hh:312
MPD & locationRemove(const std::list< URI >::iterator &)
const std::optional< time_type > & availabilityStartTime() const
Definition MPD.hh:266
MPD & supplementaryPropertyRemove(const std::list< Descriptor >::const_iterator &)
MPD & locationAdd(URI &&location)
bool isDynamicPresentation() const
Definition MPD.hh:260
MPD & presentationType(PresentationType pres_type)
Definition MPD.hh:262
const std::list< InitializationSet > & initializationSets() const
Definition MPD.hh:399
MPD & operator=(MPD &&other)
MPD & id(const std::nullopt_t &)
Definition MPD.hh:239
std::list< Descriptor >::const_iterator supplementaryPropertiesBegin() const
Definition MPD.hh:479
MPD(const std::string &filename, const std::optional< URI > &mpd_location=std::nullopt)
MPD & utcTimingRemove(const std::list< Descriptor >::iterator &)
std::list< Descriptor >::const_iterator utcTimingsEnd() const
Definition MPD.hh:491
MPD & initializationPresentationAdd(const UIntVWithID &init_pres)
std::list< UIntVWithID >::iterator initializationGroupsEnd()
Definition MPD.hh:414
std::list< Descriptor >::const_iterator essentialPropertiesBegin() const
Definition MPD.hh:468
const std::list< PatchLocation > & patchLocations() const
Definition MPD.hh:377
std::list< Descriptor >::const_iterator utcTimingsBegin() const
Definition MPD.hh:490
const duration_type & suggestedPresentationDelay(const duration_type &default_val) const
MPD & sourceURL(std::optional< URI > &&url)
Definition MPD.hh:183
std::list< UIntVWithID >::iterator initializationPresentationsBegin()
Definition MPD.hh:424
MPD & essentialPropertyAdd(Descriptor &&prog_info)
MPD & availabilityStartTime(time_type &&val)
Definition MPD.hh:268
bool hasAvailabilityStartTime() const
Definition MPD.hh:264
MPD & availabilityStartTime(const std::nullopt_t &)
Definition MPD.hh:269
const std::list< URI > & profiles() const
Definition MPD.hh:241
MPD & initializationPresentationRemove(const std::list< UIntVWithID >::iterator &)
MPD & programInformationAdd(ProgramInformation &&prog_info)
std::list< Descriptor >::iterator essentialPropertiesEnd()
Definition MPD.hh:471
const time_type & availabilityStartTime(const time_type &default_val) const
MPD & contentProtectionRemove(const ContentProtection &content_protection)
std::list< ContentProtection >::iterator contentProtectionsEnd()
Definition MPD.hh:436
std::list< Metrics >::const_iterator metricsBegin() const
Definition MPD.hh:457
MPD & supplementaryPropertyAdd(const Descriptor &prog_info)
MPD & profileAdd(URI &&uri)
bool hasAvailabilityEndTime() const
Definition MPD.hh:271
MPD & timeShiftBufferDepth(duration_type &&val)
Definition MPD.hh:307
std::list< UIntVWithID >::iterator initializationGroupsBegin()
Definition MPD.hh:413
PresentationType
Definition MPD.hh:56
@ DYNAMIC
Presentation is dynamic (can change during playback, e.g. live stream)
Definition MPD.hh:58
@ STATIC
Presentation is static (unchanging, e.g. video on demand)
Definition MPD.hh:57
MPD & availabilityStartTime(const time_type &val)
Definition MPD.hh:267
std::chrono::microseconds duration_type
Time duration type used in the MPD.
Definition MPD.hh:52
const duration_type & timeShiftBufferDepth(const duration_type &default_val) const
MPD & serviceDescriptionAdd(ServiceDescription &&service_desc)
void synchroniseWithUTCTiming() const
MPD & programInformationRemove(const ProgramInformation &prog_info)
MPD & initializationGroupAdd(const UIntVWithID &init_group)
MPD & baseURLRemove(const std::list< BaseURL >::iterator &)
std::list< PatchLocation >::iterator patchLocationsBegin()
Definition MPD.hh:380
MPD & minBufferTime(duration_type &&val)
Definition MPD.hh:301
MPD & leapSecondInformation(LeapSecondInformation &&val)
Definition MPD.hh:505
MPD & patchLocationAdd(const PatchLocation &patch_location)
MPD & suggestedPresentationDelay(duration_type &&val)
Definition MPD.hh:314
MPD & profileRemove(const URI &uri)
MPD & supplementaryPropertyRemove(const Descriptor &prog_info)
std::list< ProgramInformation >::const_iterator programInformationsEnd() const
Definition MPD.hh:333
MPD & maxSubsegmentDuration(duration_type &&val)
Definition MPD.hh:328
MPD & initializationPresentationRemove(const UIntVWithID &init_pres)
MPD & programInformationRemove(const std::list< ProgramInformation >::const_iterator &)
MPD & publishTime(const time_type &val)
Definition MPD.hh:281
MPD & metricRemove(const std::list< Metrics >::iterator &)
std::list< Metrics >::iterator metricsEnd()
Definition MPD.hh:460
const LeapSecondInformation & leapSecondInformation(const LeapSecondInformation &default_val) const
std::list< Descriptor >::iterator essentialPropertiesBegin()
Definition MPD.hh:470
MPD & initializationSetRemove(const std::list< InitializationSet >::iterator &)
std::list< PatchLocation >::iterator patchLocationsEnd()
Definition MPD.hh:381
bool operator==(const MPD &other) const
MPD & publishTime(time_type &&val)
Definition MPD.hh:282
MPD & initializationPresentationRemove(const std::list< UIntVWithID >::const_iterator &)
std::list< URI >::iterator locationsBegin()
Definition MPD.hh:369
std::list< ProgramInformation >::iterator programInformationsBegin()
Definition MPD.hh:334
bool hasPublishTime() const
Definition MPD.hh:278
MPD & operator=(const MPD &other)
MPD(const duration_type &minimum_buffer_time, const URI &profile, const Period &period, PresentationType presentation_type=STATIC)
MPD & initializationSetRemove(const InitializationSet &init_set)
MPD & utcTimingRemove(const Descriptor &prog_info)
std::list< URI >::const_iterator profilesEnd() const
Definition MPD.hh:243
const std::optional< LeapSecondInformation > & leapSecondInformation() const
Definition MPD.hh:503
const std::list< Period > & periods() const
Definition MPD.hh:443
MPD & patchLocationRemove(const std::list< PatchLocation >::const_iterator &)
const std::optional< time_type > & availabilityEndTime() const
Definition MPD.hh:273
static std::ostream & compact(std::ostream &os)
MPD & maxSegmentDuration(duration_type &&val)
Definition MPD.hh:321
std::list< UIntVWithID >::const_iterator initializationGroupsBegin() const
Definition MPD.hh:411
const std::list< UIntVWithID > & initializationPresentations() const
Definition MPD.hh:421
std::list< UIntVWithID >::iterator initializationPresentationsEnd()
Definition MPD.hh:425
std::list< ContentProtection >::const_iterator contentProtectionsBegin() const
Definition MPD.hh:433
MPD & mediaPresentationDuration(duration_type &&val)
Definition MPD.hh:289
MPD & metricAdd(const Metrics &prog_info)
bool hasSuggestedPresentationDelay() const
Definition MPD.hh:310
bool isStaticPresentation() const
Definition MPD.hh:259
void selectAllRepresentations()
MPD & metricRemove(const Metrics &prog_info)
std::list< URI >::const_iterator profilesBegin() const
Definition MPD.hh:242
MPD & utcTimingAdd(const Descriptor &prog_info)
MPD & patchLocationRemove(const PatchLocation &patch_location)
MPD & utcTimingRemove(const std::list< Descriptor >::const_iterator &)
std::list< URI >::iterator profilesEnd()
Definition MPD.hh:245
MPD & locationRemove(const std::list< URI >::const_iterator &)
const std::string & id(const std::string &default_val) const
std::list< ServiceDescription >::const_iterator serviceDescriptionsBegin() const
Definition MPD.hh:389
const duration_type & mediaPresentationDuration(const duration_type &default_val) const
MPD & serviceDescriptionAdd(const ServiceDescription &service_desc)
const std::optional< URI > & sourceURL() const
Definition MPD.hh:165
MPD & availabilityEndTime(const std::nullopt_t &)
Definition MPD.hh:276
std::list< ServiceDescription >::iterator serviceDescriptionsEnd()
Definition MPD.hh:392
MPD & contentProtectionRemove(const std::list< ContentProtection >::iterator &)
MPD & patchLocationAdd(PatchLocation &&patch_location)
MPD & essentialPropertyAdd(const Descriptor &prog_info)
MPD & initializationGroupRemove(const std::list< UIntVWithID >::const_iterator &)
std::list< Descriptor >::iterator utcTimingsBegin()
Definition MPD.hh:492
MPD & initializationSetRemove(const std::list< InitializationSet >::const_iterator &)
MPD & periodRemove(const Period &period)
Definition PatchLocation.hh:38
Definition Representation.hh:55
Definition ServiceDescription.hh:37
Definition UIntVWithID.hh:35
#define LIBMPDPP_NAMESPACE_CLASS(A)
Definition macros.hh:61
#define LIBMPDPP_NAMESPACE_END
Definition macros.hh:54
#define LIBMPDPP_PUBLIC_API
Used to mark something as part of the public API.
Definition macros.hh:21
#define LIBMPDPP_NAMESPACE_BEGIN
Definition macros.hh:50