libmpd++
DASH MPD parsing and manipulation library
 
Loading...
Searching...
No Matches
Period.hh
Go to the documentation of this file.
1#ifndef _BBC_PARSE_DASH_MPD_PERIOD_HH_
2#define _BBC_PARSE_DASH_MPD_PERIOD_HH_
3/*****************************************************************************
4 * DASH MPD parsing library in C++: Period class
5 *****************************************************************************
6 * Copyright: (C) 2025 British Broadcasting Corporation
7 * Author(s): David Waring <david.waring2@bbc.co.uk>
8 * License: LGPLv3
9 *
10 * For full license terms please see the LICENSE file distributed with this
11 * library or refer to: https://www.gnu.org/licenses/lgpl-3.0.txt.
12 */
13#include <chrono>
14#include <list>
15#include <memory>
16#include <optional>
17#include <string>
18#include <unordered_set>
19
20#include "macros.hh"
21#include "AdaptationSet.hh"
22#include "BaseURL.hh"
23#include "ContentProtection.hh"
24#include "Descriptor.hh"
25#include "EventStream.hh"
26#include "Label.hh"
27#include "Preselection.hh"
29#include "SegmentBase.hh"
30#include "SegmentTemplate.hh"
31#include "SegmentList.hh"
32#include "ServiceDescription.hh"
33#include "Subset.hh"
34#include "XLink.hh"
35
38// Forward declarations for types only used by pointer or reference
39namespace xmlpp {
40 class Element;
41 class Node;
42}
45
47
54public:
55 using time_type = std::chrono::system_clock::time_point;
56 using duration_type = std::chrono::microseconds;
57
63
70 Period(const Period &to_copy);
71
78 Period(Period &&to_move);
79
82 virtual ~Period();
83
91 Period &operator=(const Period &to_copy);
92
101
109 bool operator==(const Period &to_compare) const;
110
118 MPD *getMPD() { return m_mpd; };
119 const MPD *getMPD() const { return m_mpd; };
121
122 bool hasId() const { return m_id.has_value(); };
123 const std::optional<std::string> &id() const { return m_id; };
124 Period &id(const std::nullopt_t &) { m_id.reset(); return *this; };
125 Period &id(const std::string &id) { m_id = id; return *this; };
126 Period &id(std::string &&id) { m_id = std::move(id); return *this; };
127 Period &id(const std::optional<std::string> &id) { m_id = id; return *this; };
128 Period &id(std::optional<std::string> &&id) { m_id = std::move(id); return *this; };
129
130 bool hasStart() const { return m_start.has_value(); };
131 const std::optional<duration_type> &start() const { return m_start; };
132 Period &start(const std::nullopt_t &) { m_start.reset(); return *this; };
133 Period &start(const duration_type &start) { m_start = start; return *this; };
134 Period &start(const std::optional<duration_type> &start) { m_start = start; return *this; };
135
136 bool hasDuration() const { return m_duration.has_value(); };
137 const std::optional<duration_type> &duration() const { return m_duration; };
138 Period &duration(const std::nullopt_t &) { m_duration.reset(); return *this; };
139 Period &duration(const duration_type &durn) { m_duration = durn; return *this; };
140 Period &duration(const std::optional<duration_type> &durn) { m_duration = durn; return *this; };
141
142 bool bitstreamSwitching() const { return m_bitstreamSwitching; };
143 Period &bitstreamSwitching(bool bitstream_switching) { m_bitstreamSwitching = bitstream_switching; return *this; };
144
145 //std::list<BaseURL> m_baseURLs;
146 const std::list<BaseURL> &baseURLs() const { return m_baseURLs; };
147 std::list<BaseURL>::const_iterator baseURLsBegin() const { return m_baseURLs.cbegin(); };
148 std::list<BaseURL>::const_iterator baseURLsEnd() const { return m_baseURLs.cend(); };
149 std::list<BaseURL>::iterator baseURLsBegin() { return m_baseURLs.begin(); };
150 std::list<BaseURL>::iterator baseURLsEnd() { return m_baseURLs.end(); };
151 Period &baseURLAdd(const BaseURL &base_url);
153 Period &baseURLRemove(const BaseURL &base_url);
154 Period &baseURLRemove(const std::list<BaseURL>::const_iterator &);
155 Period &baseURLRemove(const std::list<BaseURL>::iterator &);
156
168 std::list<BaseURL> getBaseURLs() const;
169
170 //std::optional<SegmentBase> m_segmentBase;
171 bool hasSegmentBase() const { return m_segmentBase.has_value(); };
172 const std::optional<SegmentBase> &segmentBase() const { return m_segmentBase; };
173 Period &segmentBase(const std::nullopt_t &) { m_segmentBase.reset(); return *this; };
174 Period &segmentBase(const SegmentBase &seg_base) { m_segmentBase = seg_base; return *this; };
175 Period &segmentBase(SegmentBase &&seg_base) { m_segmentBase = std::move(seg_base); return *this; };
176 Period &segmentBase(const std::optional<SegmentBase> &seg_base) { m_segmentBase = seg_base; return *this; };
177 Period &segmentBase(std::optional<SegmentBase> &&seg_base) { m_segmentBase = std::move(seg_base); return *this; };
178
179 //std::optional<SegmentList> m_segmentList;
180 bool hasSegmentList() const { return m_segmentList.has_value(); };
181 const std::optional<SegmentList> &segmentList() const { return m_segmentList; };
182 Period &segmentList(const std::nullopt_t &) { m_segmentList.reset(); return *this; };
183 Period &segmentList(const SegmentList &seg_list) { m_segmentList = seg_list; return *this; };
184 Period &segmentList(SegmentList &&seg_list) { m_segmentList = std::move(seg_list); return *this; };
185 Period &segmentList(const std::optional<SegmentList> &seg_list) { m_segmentList = seg_list; return *this; };
186 Period &segmentList(std::optional<SegmentList> &&seg_list) { m_segmentList = std::move(seg_list); return *this; };
187
188 //std::optional<SegmentTemplate> m_segmentTemplate;
189 bool hasSegmentTemplate() const { return m_segmentTemplate.has_value(); };
190 const std::optional<SegmentTemplate> &segmentTemplate() const { return m_segmentTemplate; };
191 Period &segmentTemplate(const std::nullopt_t &) { m_segmentTemplate.reset(); return *this; };
192 Period &segmentTemplate(const SegmentTemplate &seg_template) {m_segmentTemplate = seg_template; return *this; };
193 Period &segmentTemplate(SegmentTemplate &&seg_template) {m_segmentTemplate = std::move(seg_template); return *this; };
194 Period &segmentTemplate(const std::optional<SegmentTemplate> &seg_template) {m_segmentTemplate = seg_template; return *this; };
195 Period &segmentTemplate(std::optional<SegmentTemplate> &&seg_template) {m_segmentTemplate = std::move(seg_template); return *this; };
196
197 //std::optional<Descriptor> m_assetIdentifier;
198 bool hasAssetIdentifier() const { return m_assetIdentifier.has_value(); };
199 const std::optional<Descriptor> &assetIdentifier() const { return m_assetIdentifier; };
200 Period &assetIdentifier(const std::nullopt_t &) { m_assetIdentifier.reset(); return *this; };
201 Period &assetIdentifier(const Descriptor &asset_id) { m_assetIdentifier = asset_id; return *this; };
202 Period &assetIdentifier(Descriptor &&asset_id) { m_assetIdentifier = std::move(asset_id); return *this; };
203 Period &assetIdentifier(const std::optional<Descriptor> &asset_id) { m_assetIdentifier = asset_id; return *this; };
204 Period &assetIdentifier(std::optional<Descriptor> &&asset_id) { m_assetIdentifier = std::move(asset_id); return *this; };
205
206 //std::list<EventStream> m_eventStreams;
207 const std::list<EventStream> &eventStreams() const { return m_eventStreams; };
208 std::list<EventStream>::const_iterator eventStreamsBegin() const { return m_eventStreams.cbegin(); };
209 std::list<EventStream>::const_iterator eventStreamsEnd() const { return m_eventStreams.cend(); };
210 std::list<EventStream>::iterator eventStreamsBegin() { return m_eventStreams.begin(); };
211 std::list<EventStream>::iterator eventStreamsEnd() { return m_eventStreams.end(); };
212 Period &eventStreamAdd(const EventStream &event_stream);
214 Period &eventStreamRemove(const EventStream &event_stream);
215 Period &eventStreamRemove(const std::list<EventStream>::const_iterator &);
216 Period &eventStreamRemove(const std::list<EventStream>::iterator &);
217
218 //std::list<ServiceDescription> m_serviceDescriptions;
219 const std::list<ServiceDescription> &serviceDescriptions() const { return m_serviceDescriptions; };
220 std::list<ServiceDescription>::const_iterator serviceDescriptionsBegin() const { return m_serviceDescriptions.cbegin(); };
221 std::list<ServiceDescription>::const_iterator serviceDescriptionsEnd() const { return m_serviceDescriptions.cend(); };
222 std::list<ServiceDescription>::iterator serviceDescriptionsBegin() { return m_serviceDescriptions.begin(); };
223 std::list<ServiceDescription>::iterator serviceDescriptionsEnd() { return m_serviceDescriptions.end(); };
227 Period &serviceDescriptionRemove(const std::list<ServiceDescription>::const_iterator &);
228 Period &serviceDescriptionRemove(const std::list<ServiceDescription>::iterator &);
229
230 //std::list<ContentProtection> m_contentProtections;
231 const std::list<ContentProtection> &contentProtections() const { return m_contentProtections; };
232 std::list<ContentProtection>::const_iterator contentProtectionsBegin() const { return m_contentProtections.cbegin(); };
233 std::list<ContentProtection>::const_iterator contentProtectionsEnd() const { return m_contentProtections.cend(); };
234 std::list<ContentProtection>::iterator contentProtectionsBegin() { return m_contentProtections.begin(); };
235 std::list<ContentProtection>::iterator contentProtectionsEnd() { return m_contentProtections.end(); };
239 Period &contentProtectionRemove(const std::list<ContentProtection>::const_iterator &);
240 Period &contentProtectionRemove(const std::list<ContentProtection>::iterator &);
241
242 //std::list<AdaptationSet> m_adaptationSets;
243 const std::list<AdaptationSet> &adaptationSets() const { return m_adaptationSets; };
244 std::list<AdaptationSet>::const_iterator adaptationSetsBegin() const { return m_adaptationSets.cbegin(); };
245 std::list<AdaptationSet>::const_iterator adaptationSetsEnd() const { return m_adaptationSets.cend(); };
246 std::list<AdaptationSet>::iterator adaptationSetsBegin() { return m_adaptationSets.begin(); };
247 std::list<AdaptationSet>::iterator adaptationSetsEnd() { return m_adaptationSets.end(); };
251 Period &adaptationSetRemove(const std::list<AdaptationSet>::const_iterator &);
252 Period &adaptationSetRemove(const std::list<AdaptationSet>::iterator &);
253
254 //std::list<Subset> m_subsets;
255 const std::list<Subset> &subsets() const { return m_subsets; };
256 std::list<Subset>::const_iterator subsetsBegin() const { return m_subsets.cbegin(); };
257 std::list<Subset>::const_iterator subsetsEnd() const { return m_subsets.cend(); };
258 std::list<Subset>::iterator subsetsBegin() { return m_subsets.begin(); };
259 std::list<Subset>::iterator subsetsEnd() { return m_subsets.end(); };
260 Period &subsetAdd(const Subset &subset);
262 Period &subsetRemove(const Subset &subset);
263 Period &subsetRemove(const std::list<Subset>::const_iterator &);
264 Period &subsetRemove(const std::list<Subset>::iterator &);
265
266 //std::list<Descriptor> m_supplementalProperties;
267 const std::list<Descriptor> &supplementalProperties() const { return m_supplementalProperties; };
268 std::list<Descriptor>::const_iterator supplementalPropertiesBegin() const { return m_supplementalProperties.cbegin(); };
269 std::list<Descriptor>::const_iterator supplementalPropertiesEnd() const { return m_supplementalProperties.cend(); };
270 std::list<Descriptor>::iterator supplementalPropertiesBegin() { return m_supplementalProperties.begin(); };
271 std::list<Descriptor>::iterator supplementalPropertiesEnd() { return m_supplementalProperties.end(); };
275 Period &supplementalPropertyRemove(const std::list<Descriptor>::const_iterator &);
276 Period &supplementalPropertyRemove(const std::list<Descriptor>::iterator &);
277
278 //std::list<AdaptationSet> m_emptyAdaptationSets;
279 const std::list<AdaptationSet> &emptyAdaptationSets() const { return m_emptyAdaptationSets; };
280 std::list<AdaptationSet>::const_iterator emptyAdaptationSetsBegin() const { return m_emptyAdaptationSets.cbegin(); };
281 std::list<AdaptationSet>::const_iterator emptyAdaptationSetsEnd() const { return m_emptyAdaptationSets.cend(); };
282 std::list<AdaptationSet>::iterator emptyAdaptationSetsBegin() { return m_emptyAdaptationSets.begin(); };
283 std::list<AdaptationSet>::iterator emptyAdaptationSetsEnd() { return m_emptyAdaptationSets.end(); };
287 Period &emptyAdaptationSetRemove(const std::list<AdaptationSet>::const_iterator &);
288 Period &emptyAdaptationSetRemove(const std::list<AdaptationSet>::iterator &);
289
290 //std::list<Label> m_groupLabels;
291 const std::list<Label> &groupLabels() const { return m_groupLabels; };
292 std::list<Label>::const_iterator groupLabelsBegin() const { return m_groupLabels.cbegin(); };
293 std::list<Label>::const_iterator groupLabelsEnd() const { return m_groupLabels.cend(); };
294 std::list<Label>::iterator groupLabelsBegin() { return m_groupLabels.begin(); };
295 std::list<Label>::iterator groupLabelsEnd() { return m_groupLabels.end(); };
296 Period &groupLabelAdd(const Label &label);
299 Period &groupLabelRemove(const std::list<Label>::const_iterator &);
300 Period &groupLabelRemove(const std::list<Label>::iterator &);
301
302 //std::list<Preselection> m_preselections;
303 const std::list<Preselection> &preselections() const { return m_preselections; };
304 std::list<Preselection>::const_iterator preselectionsBegin() const { return m_preselections.cbegin(); };
305 std::list<Preselection>::const_iterator preselectionsEnd() const { return m_preselections.cend(); };
306 std::list<Preselection>::iterator preselectionsBegin() { return m_preselections.begin(); };
307 std::list<Preselection>::iterator preselectionsEnd() { return m_preselections.end(); };
308 Period &preselectionAdd(const Preselection &preselection);
311 Period &preselectionRemove(const std::list<Preselection>::const_iterator &);
312 Period &preselectionRemove(const std::list<Preselection>::iterator &);
313
319
325
330 std::unordered_set<const Representation*> selectedRepresentations() const;
331
341 std::list<SegmentAvailability> selectedSegmentAvailability(const time_type &query_time = std::chrono::system_clock::now()) const;
342
350 std::list<SegmentAvailability> selectedInitializationSegments() const;
351
359 Period &setMPD(MPD *mpd) { m_mpd = mpd; return *this; };
360
371 const std::optional<duration_type> &calcStart() const;
372
383 const std::optional<duration_type> &calcDuration() const;
384
386protected:
387 friend class MPD;
388 friend class AdaptationSet;
389 Period(xmlpp::Node&);
390 void setXMLElement(xmlpp::Element&) const;
391 std::string getMediaURL(const SegmentTemplate::Variables&) const;
392 std::string getInitializationURL(const SegmentTemplate::Variables&) const;
393 SegmentAvailability getMediaAvailability(const SegmentTemplate::Variables&) const;
394 SegmentAvailability getInitialisationAvailability(const SegmentTemplate::Variables &vars) const;
395 Period &setPreviousSibling(Period *sibling) { m_previousSibling = sibling; cacheCalcClear(); sibling->cacheCalcClear(); return *this; };
396 Period &setNextSibling(Period *sibling) { m_nextSibling = sibling; cacheCalcClear(); sibling->cacheCalcClear(); return *this; };
397 time_type getPeriodStartTime() const;
398 std::optional<duration_type> getPeriodDuration() const;
399 const MultipleSegmentBase &getMultiSegmentBase() const;
401
402private:
403 void cacheCalcTimes() const;
404 void cacheCalcClear() const;
405
406 MPD *m_mpd;
407 Period *m_previousSibling;
408 Period *m_nextSibling;
409
410 // Period attributes (ISO 23009-1:2022 Table 4)
411 std::optional<XLink> m_xlink;
412 std::optional<std::string> m_id;
413 std::optional<duration_type> m_start;
414 std::optional<duration_type> m_duration;
415 bool m_bitstreamSwitching;
416
417 // Period child elements (ISO 23009-1:2022 Table 4)
418 std::list<BaseURL> m_baseURLs;
419 std::optional<SegmentBase> m_segmentBase;
420 std::optional<SegmentList> m_segmentList;
421 std::optional<SegmentTemplate> m_segmentTemplate;
422 std::optional<Descriptor> m_assetIdentifier;
423 std::list<EventStream> m_eventStreams;
424 std::list<ServiceDescription> m_serviceDescriptions;
425 std::list<ContentProtection> m_contentProtections;
426 std::list<AdaptationSet> m_adaptationSets;
427 std::list<Subset> m_subsets;
428 std::list<Descriptor> m_supplementalProperties;
429 std::list<AdaptationSet> m_emptyAdaptationSets;
430 std::list<Label> m_groupLabels;
431 std::list<Preselection> m_preselections;
432
433 struct Cache {
434 Cache() :calcStart(), calcDuration() {};
435 Cache(const Cache &other) :calcStart(other.calcStart), calcDuration(other.calcDuration) {};
436 Cache(Cache &&other) :calcStart(std::move(other.calcStart)), calcDuration(std::move(other.calcDuration)) {};
437 Cache &operator=(const Cache &other) { calcStart = other.calcStart; calcDuration = other.calcDuration; return *this; };
438 Cache &operator=(Cache &&other) { calcStart = std::move(other.calcStart); calcDuration = std::move(other.calcDuration); return *this; };
439 ~Cache() {};
440 std::optional<Period::duration_type> calcStart;
441 std::optional<Period::duration_type> calcDuration;
442 } *m_cache;
443};
444
446
447/* vim:ts=8:sts=4:sw=4:expandtab:
448 */
449#endif /*_BBC_PARSE_DASH_MPD_PERIOD_HH_*/
AdaptationSet class.
Definition AdaptationSet.hh:60
Definition BaseURL.hh:43
Definition ContentProtection.hh:37
Definition Descriptor.hh:41
Definition EventStream.hh:39
Definition Label.hh:37
Definition MPD.hh:49
Definition Period.hh:53
Period & segmentTemplate(const std::optional< SegmentTemplate > &seg_template)
Definition Period.hh:194
bool bitstreamSwitching() const
Definition Period.hh:142
Period & segmentList(const std::nullopt_t &)
Definition Period.hh:182
Period & groupLabelRemove(const std::list< Label >::const_iterator &)
std::list< Subset >::iterator subsetsEnd()
Definition Period.hh:259
Period & emptyAdaptationSetRemove(const std::list< AdaptationSet >::const_iterator &)
bool hasSegmentTemplate() const
Definition Period.hh:189
Period & eventStreamAdd(const EventStream &event_stream)
Period & assetIdentifier(const std::nullopt_t &)
Definition Period.hh:200
const std::list< AdaptationSet > & emptyAdaptationSets() const
Definition Period.hh:279
Period & eventStreamRemove(const std::list< EventStream >::const_iterator &)
std::list< Preselection >::iterator preselectionsBegin()
Definition Period.hh:306
Period & duration(const std::optional< duration_type > &durn)
Definition Period.hh:140
Period & supplementalPropertyRemove(const Descriptor &supp_prop)
std::list< Subset >::iterator subsetsBegin()
Definition Period.hh:258
Period & operator=(const Period &to_copy)
Period & preselectionRemove(const std::list< Preselection >::const_iterator &)
MPD * getMPD()
Definition Period.hh:118
std::list< EventStream >::iterator eventStreamsEnd()
Definition Period.hh:211
std::list< Descriptor >::const_iterator supplementalPropertiesBegin() const
Definition Period.hh:268
Period & assetIdentifier(std::optional< Descriptor > &&asset_id)
Definition Period.hh:204
const std::optional< duration_type > & start() const
Definition Period.hh:131
const std::list< AdaptationSet > & adaptationSets() const
Definition Period.hh:243
Period & eventStreamRemove(const EventStream &event_stream)
Period & serviceDescriptionAdd(ServiceDescription &&service_desc)
const std::optional< duration_type > & calcStart() const
Period & segmentBase(std::optional< SegmentBase > &&seg_base)
Definition Period.hh:177
Period & preselectionRemove(const Preselection &preselection)
Period & duration(const duration_type &durn)
Definition Period.hh:139
std::list< Preselection >::const_iterator preselectionsEnd() const
Definition Period.hh:305
std::list< EventStream >::const_iterator eventStreamsEnd() const
Definition Period.hh:209
const std::optional< duration_type > & duration() const
Definition Period.hh:137
std::list< Label >::const_iterator groupLabelsBegin() const
Definition Period.hh:292
Period & start(const std::nullopt_t &)
Definition Period.hh:132
std::list< ContentProtection >::const_iterator contentProtectionsEnd() const
Definition Period.hh:233
Period & segmentList(std::optional< SegmentList > &&seg_list)
Definition Period.hh:186
Period & id(const std::string &id)
Definition Period.hh:125
Period & contentProtectionRemove(const ContentProtection &content_prot)
std::list< BaseURL >::iterator baseURLsBegin()
Definition Period.hh:149
std::list< AdaptationSet >::iterator adaptationSetsBegin()
Definition Period.hh:246
bool hasAssetIdentifier() const
Definition Period.hh:198
Period & subsetAdd(Subset &&subset)
std::list< AdaptationSet >::const_iterator adaptationSetsBegin() const
Definition Period.hh:244
Period & id(const std::nullopt_t &)
Definition Period.hh:124
Period & segmentList(const SegmentList &seg_list)
Definition Period.hh:183
const std::list< EventStream > & eventStreams() const
Definition Period.hh:207
Period & serviceDescriptionRemove(const std::list< ServiceDescription >::const_iterator &)
Period & segmentTemplate(const SegmentTemplate &seg_template)
Definition Period.hh:192
std::list< Label >::const_iterator groupLabelsEnd() const
Definition Period.hh:293
const std::list< Label > & groupLabels() const
Definition Period.hh:291
Period & duration(const std::nullopt_t &)
Definition Period.hh:138
Period & segmentBase(const SegmentBase &seg_base)
Definition Period.hh:174
Period & subsetAdd(const Subset &subset)
Period & supplementalPropertyRemove(const std::list< Descriptor >::iterator &)
Period & id(std::optional< std::string > &&id)
Definition Period.hh:128
bool hasStart() const
Definition Period.hh:130
Period & adaptationSetAdd(AdaptationSet &&adapt_set)
Period(Period &&to_move)
Period(const Period &to_copy)
Period & serviceDescriptionAdd(const ServiceDescription &service_desc)
Period & supplementalPropertyRemove(const std::list< Descriptor >::const_iterator &)
Period & emptyAdaptationSetAdd(AdaptationSet &&adapt_set)
std::list< ContentProtection >::iterator contentProtectionsBegin()
Definition Period.hh:234
std::list< Subset >::const_iterator subsetsBegin() const
Definition Period.hh:256
Period & groupLabelRemove(const std::list< Label >::iterator &)
std::chrono::microseconds duration_type
Time duration type used in this class.
Definition Period.hh:56
Period & contentProtectionAdd(const ContentProtection &content_prot)
std::list< SegmentAvailability > selectedSegmentAvailability(const time_type &query_time=std::chrono::system_clock::now()) const
Period & segmentBase(SegmentBase &&seg_base)
Definition Period.hh:175
const MPD * getMPD() const
Definition Period.hh:119
Period & setMPD(MPD *mpd)
Definition Period.hh:359
std::list< Preselection >::iterator preselectionsEnd()
Definition Period.hh:307
std::list< ServiceDescription >::const_iterator serviceDescriptionsBegin() const
Definition Period.hh:220
std::list< ServiceDescription >::iterator serviceDescriptionsBegin()
Definition Period.hh:222
const std::optional< SegmentTemplate > & segmentTemplate() const
Definition Period.hh:190
Period & eventStreamRemove(const std::list< EventStream >::iterator &)
Period & contentProtectionRemove(const std::list< ContentProtection >::iterator &)
Period & preselectionAdd(const Preselection &preselection)
std::list< ContentProtection >::iterator contentProtectionsEnd()
Definition Period.hh:235
const std::list< Descriptor > & supplementalProperties() const
Definition Period.hh:267
Period & serviceDescriptionRemove(const std::list< ServiceDescription >::iterator &)
Period & subsetRemove(const std::list< Subset >::iterator &)
Period & emptyAdaptationSetRemove(const AdaptationSet &adapt_set)
const std::optional< Descriptor > & assetIdentifier() const
Definition Period.hh:199
const std::list< Subset > & subsets() const
Definition Period.hh:255
Period & segmentList(const std::optional< SegmentList > &seg_list)
Definition Period.hh:185
std::list< BaseURL > getBaseURLs() const
std::list< ServiceDescription >::const_iterator serviceDescriptionsEnd() const
Definition Period.hh:221
std::list< Preselection >::const_iterator preselectionsBegin() const
Definition Period.hh:304
std::list< EventStream >::iterator eventStreamsBegin()
Definition Period.hh:210
const std::list< ServiceDescription > & serviceDescriptions() const
Definition Period.hh:219
Period & supplementalPropertyAdd(Descriptor &&supp_prop)
Period & baseURLRemove(const std::list< BaseURL >::const_iterator &)
bool operator==(const Period &to_compare) const
Period & supplementalPropertyAdd(const Descriptor &supp_prop)
std::list< BaseURL >::const_iterator baseURLsEnd() const
Definition Period.hh:148
Period & baseURLRemove(const BaseURL &base_url)
Period & groupLabelRemove(const Label &label)
Period & segmentTemplate(SegmentTemplate &&seg_template)
Definition Period.hh:193
std::list< AdaptationSet >::const_iterator adaptationSetsEnd() const
Definition Period.hh:245
bool hasDuration() const
Definition Period.hh:136
std::list< Label >::iterator groupLabelsBegin()
Definition Period.hh:294
bool hasSegmentList() const
Definition Period.hh:180
Period & contentProtectionAdd(ContentProtection &&content_prot)
bool hasSegmentBase() const
Definition Period.hh:171
const std::optional< std::string > & id() const
Definition Period.hh:123
std::list< Subset >::const_iterator subsetsEnd() const
Definition Period.hh:257
std::list< BaseURL >::const_iterator baseURLsBegin() const
Definition Period.hh:147
const std::optional< duration_type > & calcDuration() const
const std::list< BaseURL > & baseURLs() const
Definition Period.hh:146
std::list< AdaptationSet >::iterator adaptationSetsEnd()
Definition Period.hh:247
std::list< AdaptationSet >::iterator emptyAdaptationSetsEnd()
Definition Period.hh:283
Period & adaptationSetRemove(const std::list< AdaptationSet >::iterator &)
Period & segmentBase(const std::nullopt_t &)
Definition Period.hh:173
std::list< BaseURL >::iterator baseURLsEnd()
Definition Period.hh:150
Period & groupLabelAdd(const Label &label)
bool hasId() const
Definition Period.hh:122
Period & contentProtectionRemove(const std::list< ContentProtection >::const_iterator &)
std::list< ContentProtection >::const_iterator contentProtectionsBegin() const
Definition Period.hh:232
const std::optional< SegmentList > & segmentList() const
Definition Period.hh:181
Period & start(const duration_type &start)
Definition Period.hh:133
std::list< Descriptor >::const_iterator supplementalPropertiesEnd() const
Definition Period.hh:269
std::list< Descriptor >::iterator supplementalPropertiesEnd()
Definition Period.hh:271
Period & baseURLAdd(const BaseURL &base_url)
std::list< EventStream >::const_iterator eventStreamsBegin() const
Definition Period.hh:208
std::list< AdaptationSet >::const_iterator emptyAdaptationSetsEnd() const
Definition Period.hh:281
Period & assetIdentifier(const std::optional< Descriptor > &asset_id)
Definition Period.hh:203
Period & assetIdentifier(Descriptor &&asset_id)
Definition Period.hh:202
Period & adaptationSetRemove(const std::list< AdaptationSet >::const_iterator &)
std::list< ServiceDescription >::iterator serviceDescriptionsEnd()
Definition Period.hh:223
const std::list< Preselection > & preselections() const
Definition Period.hh:303
std::list< AdaptationSet >::const_iterator emptyAdaptationSetsBegin() const
Definition Period.hh:280
Period & subsetRemove(const Subset &subset)
std::list< Label >::iterator groupLabelsEnd()
Definition Period.hh:295
const std::list< ContentProtection > & contentProtections() const
Definition Period.hh:231
const std::optional< SegmentBase > & segmentBase() const
Definition Period.hh:172
std::list< AdaptationSet >::iterator emptyAdaptationSetsBegin()
Definition Period.hh:282
Period & bitstreamSwitching(bool bitstream_switching)
Definition Period.hh:143
std::list< SegmentAvailability > selectedInitializationSegments() const
Period & assetIdentifier(const Descriptor &asset_id)
Definition Period.hh:201
Period & operator=(Period &&to_move)
Period & baseURLRemove(const std::list< BaseURL >::iterator &)
Period & eventStreamAdd(EventStream &&event_stream)
std::chrono::system_clock::time_point time_type
Date-time type used in this class.
Definition Period.hh:55
Period & subsetRemove(const std::list< Subset >::const_iterator &)
Period & start(const std::optional< duration_type > &start)
Definition Period.hh:134
Period & segmentTemplate(std::optional< SegmentTemplate > &&seg_template)
Definition Period.hh:195
std::list< Descriptor >::iterator supplementalPropertiesBegin()
Definition Period.hh:270
Period & baseURLAdd(BaseURL &&base_url)
Period & segmentBase(const std::optional< SegmentBase > &seg_base)
Definition Period.hh:176
Period & adaptationSetAdd(const AdaptationSet &adapt_set)
Period & serviceDescriptionRemove(const ServiceDescription &service_desc)
Period & emptyAdaptationSetAdd(const AdaptationSet &adapt_set)
Period & emptyAdaptationSetRemove(const std::list< AdaptationSet >::iterator &)
Period & groupLabelAdd(Label &&label)
Period & id(std::string &&id)
Definition Period.hh:126
Period & preselectionRemove(const std::list< Preselection >::iterator &)
std::unordered_set< const Representation * > selectedRepresentations() const
Period & id(const std::optional< std::string > &id)
Definition Period.hh:127
Period & preselectionAdd(Preselection &&preselection)
Period & segmentList(SegmentList &&seg_list)
Definition Period.hh:184
Period & adaptationSetRemove(const AdaptationSet &adapt_set)
Period & segmentTemplate(const std::nullopt_t &)
Definition Period.hh:191
Definition Preselection.hh:39
Definition SegmentAvailability.hh:27
Definition SegmentBase.hh:41
Definition SegmentList.hh:41
Definition SegmentTemplate.hh:46
Definition SegmentTemplate.hh:40
Definition ServiceDescription.hh:37
Definition Subset.hh:38
#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
Definition SegmentAvailability.hh:87