libmpd++
DASH MPD parsing and manipulation library
 
Loading...
Searching...
No Matches
AdaptationSet.hh
Go to the documentation of this file.
1#ifndef _BBC_PARSE_DASH_MPD_ADAPTATION_SET_HH_
2#define _BBC_PARSE_DASH_MPD_ADAPTATION_SET_HH_
3/*****************************************************************************
4 * DASH MPD parsing library in C++: AdaptationSet class
5 *****************************************************************************
6 * Copyright: (C) 2025 British Broadcasting Corporation
7 * Author(s): Dev Audsin <dev.audsin@bbc.co.uk>
8 * David Waring <david.waring2@bbc.co.uk>
9 * License: LGPLv3
10 *
11 * For full license terms please see the LICENSE file distributed with this
12 * library or refer to: https://www.gnu.org/licenses/lgpl-3.0.txt.
13 */
14#include <chrono>
15#include <list>
16#include <optional>
17#include <string>
18#include <unordered_set>
19
20#include "macros.hh"
21#include "BaseURL.hh"
22#include "ContentComponent.hh"
23#include "Descriptor.hh"
24#include "Representation.hh"
25#include "RepresentationBase.hh"
26#include "RFC6838ContentType.hh"
27#include "Ratio.hh"
28#include "FrameRate.hh"
29#include "SAP.hh"
31#include "SegmentBase.hh"
32#include "SegmentList.hh"
33#include "SegmentTemplate.hh"
34#include "URI.hh"
35#include "XLink.hh"
36
39// Forward declarations for types only used by pointer or reference
40namespace xmlpp {
41 class Element;
42 class Node;
43}
46
48
61public:
62 using time_type = std::chrono::system_clock::time_point;
63 using duration_type = std::chrono::microseconds;
64
71
80
89
93 virtual ~AdaptationSet() {};
94
104
114
123 bool operator==(const AdaptationSet &other) const;
124
126
132 const MPD *getMPD() const;
134
136
141 Period *getPeriod() { return m_period; };
142 const Period *getPeriod() const { return m_period; };
144
145 // @id
146
152 bool hasId() const { return m_id.has_value(); };
153
159 const std::optional<unsigned int> &id() const { return m_id; };
160
166 AdaptationSet &id(const std::nullopt_t &) { m_id.reset(); return *this;};
167
174 AdaptationSet &id(unsigned int id) { m_id = id; return *this;};
175
182 AdaptationSet &id(const std::optional<unsigned int> &id) { m_id = id; return *this;};
183
190 AdaptationSet &id(std::optional<unsigned int> &&id) { m_id = std::move(id);return *this;};
191
192 // @group
193
199 bool hasGroup() const { return m_group.has_value(); };
200
206 const std::optional<unsigned int> &group() const { return m_group; };
207
213 AdaptationSet &group(const std::nullopt_t &) { m_group.reset(); return *this;};
214
221 AdaptationSet &group(unsigned int group) { m_group = group; return *this;};
222
229 AdaptationSet &group(const std::optional<unsigned int> &group) { m_group = group; return *this;};
230
237 AdaptationSet &group(std::optional<unsigned int> &&group) { m_group = std::move(group);return *this;};
238
239 // @lang
240
246 bool hasLang() const { return m_lang.has_value(); };
247
253 const std::optional<std::string> &lang() const { return m_lang; };
254
260 AdaptationSet &lang(const std::nullopt_t &) { m_lang.reset(); return *this; };
261
270 AdaptationSet &lang(const std::string &lang) { m_lang = lang; return *this; };
271
280 AdaptationSet &lang(std::string &&lang) { m_lang = std::move(lang); return *this; };
281
290 AdaptationSet &lang(const std::optional<std::string> &lang) { m_lang = lang; return *this; };
291
300 AdaptationSet &lang(std::optional<std::string> &&lang) { m_lang = std::move(lang); return *this; };
301
302 // @contentType
303
309 bool hasContentType() const { return m_contentType.has_value(); };
310
316 const std::optional<RFC6838ContentType> &contentType() const {return m_contentType;};
317
325 AdaptationSet &contentType(const std::nullopt_t &) { m_contentType.reset(); return *this; };
326
335 AdaptationSet &contentType(const RFC6838ContentType &content_type) {m_contentType = content_type; return *this;};
336
345 AdaptationSet &contentType(RFC6838ContentType &&content_type) {m_contentType = std::move(content_type); return *this;};
346
355 AdaptationSet &contentType(const std::optional<RFC6838ContentType> &content_type) { m_contentType = content_type; return *this;};
356
365 AdaptationSet &contentType(std::optional<RFC6838ContentType> &&content_type) { m_contentType = std::move(content_type); return *this;};
366
367 // @par
368
374 bool hasPar() const { return m_par.has_value(); };
375
381 const std::optional<Ratio> &par() const {return m_par;};
382
388 AdaptationSet &par(const std::nullopt_t &) { m_par.reset(); return *this; };
389
398 AdaptationSet &par(const Ratio &par) {m_par = par; return *this;};
399
408 AdaptationSet &par(Ratio &&par) {m_par = std::move(par); return *this;};
409
418 AdaptationSet &par(const std::optional<Ratio> &par) { m_par = par; return *this;};
419
428 AdaptationSet &par(std::optional<Ratio> &&par) { m_par = std::move(par); return *this;};
429
430 // @minBandwidth;
431
437 bool hasMinBandwidth() const { return m_minBandwidth.has_value(); };
438
444 const std::optional<unsigned int> &minBandwidth() const { return m_minBandwidth; };
445
451 AdaptationSet &minBandwidth(const std::nullopt_t &) { m_minBandwidth.reset(); return *this;};
452
459 AdaptationSet &minBandwidth(unsigned int min_bandwidth) { m_minBandwidth = min_bandwidth; return *this;};
460
469 AdaptationSet &minBandwidth(const std::optional<unsigned int> &min_bandwidth) { m_minBandwidth = min_bandwidth; return *this;};
470
479 AdaptationSet &minBandwidth(std::optional<unsigned int> &&min_bandwidth) { m_minBandwidth = std::move(min_bandwidth);return *this;};
480
481 // @maxBandwidth
482
488 bool hasMaxBandwidth() const { return m_maxBandwidth.has_value(); };
489
495 const std::optional<unsigned int> &maxBandwidth() const { return m_maxBandwidth; };
496
502 AdaptationSet &maxBandwidth(const std::nullopt_t &) { m_maxBandwidth.reset(); return *this;};
503
510 AdaptationSet &maxBandwidth(unsigned int max_bandwidth) { m_maxBandwidth = max_bandwidth; return *this;};
511
520 AdaptationSet &maxBandwidth(const std::optional<unsigned int> &max_bandwidth) { m_maxBandwidth = max_bandwidth; return *this;};
521
530 AdaptationSet &maxBandwidth(std::optional<unsigned int> &&max_bandwidth) { m_maxBandwidth = std::move(max_bandwidth);return *this;};
531
532 // @minWidth
533
539 bool hasMinWidth() const { return m_minWidth.has_value(); };
540
546 const std::optional<unsigned int> &minWidth() const { return m_minWidth; };
547
553 AdaptationSet &minWidth(const std::nullopt_t &) { m_minWidth.reset(); return *this;};
554
561 AdaptationSet &minWidth(unsigned int min_width) { m_minWidth = min_width; return *this;};
562
571 AdaptationSet &minWidth(const std::optional<unsigned int> &min_width) { m_minWidth = min_width; return *this;};
572
581 AdaptationSet &minWidth(std::optional<unsigned int> &&min_width) { m_minWidth = std::move(min_width);return *this;};
582
583 // @maxWidth
584
590 bool hasMaxWidth() const { return m_maxWidth.has_value(); };
591
597 const std::optional<unsigned int> &maxWidth() const { return m_maxWidth; };
598
604 AdaptationSet &maxWidth(const std::nullopt_t &) { m_maxWidth.reset(); return *this;};
605
612 AdaptationSet &maxWidth(unsigned int max_width) { m_maxWidth = max_width; return *this;};
613
622 AdaptationSet &maxWidth(const std::optional<unsigned int> &max_width) { m_maxWidth = max_width; return *this;};
623
632 AdaptationSet &maxWidth(std::optional<unsigned int> &&max_width) { m_maxWidth = std::move(max_width);return *this;};
633
634 // @minHeight
635
641 bool hasMinHeight() const { return m_minHeight.has_value(); };
642
648 const std::optional<unsigned int> &minHeight() const { return m_minHeight; };
649
655 AdaptationSet &minHeight(const std::nullopt_t &) { m_minHeight.reset(); return *this;};
656
663 AdaptationSet &minHeight(unsigned int min_height) { m_minHeight = min_height; return *this;};
664
673 AdaptationSet &minHeight(const std::optional<unsigned int> &min_height) { m_minHeight = min_height; return *this;};
674
683 AdaptationSet &minHeight(std::optional<unsigned int> &&min_height) { m_minHeight = std::move(min_height);return *this;};
684
685 // @maxHeight
686
692 bool hasMaxHeight() const { return m_maxHeight.has_value(); };
693
699 const std::optional<unsigned int> &maxHeight() const { return m_maxHeight; };
700
706 AdaptationSet &maxHeight(const std::nullopt_t &) { m_maxHeight.reset(); return *this;};
707
714 AdaptationSet &maxHeight(unsigned int max_height) { m_maxHeight = max_height; return *this;};
715
724 AdaptationSet &maxHeight(const std::optional<unsigned int> &max_height) { m_maxHeight = max_height; return *this;};
725
734 AdaptationSet &maxHeight(std::optional<unsigned int> &&max_height) { m_maxHeight = std::move(max_height);return *this;};
735
736 // @minFrameRate
737
743 bool hasMinFrameRate() const { return m_minFrameRate.has_value(); };
744
750 const std::optional<FrameRate> &minFrameRate() const {return m_minFrameRate;};
751
757 AdaptationSet &minFrameRate(const std::nullopt_t &) { m_minFrameRate.reset(); return *this; };
758
767 AdaptationSet &minFrameRate(const FrameRate &min_frame_rate) {m_minFrameRate = min_frame_rate; return *this;};
768
777 AdaptationSet &minFrameRate(FrameRate &&min_frame_rate) {m_minFrameRate = std::move(min_frame_rate); return *this;};
778
787 AdaptationSet &minFrameRate(const std::optional<FrameRate> &min_frame_rate) { m_minFrameRate = min_frame_rate; return *this;};
788
797 AdaptationSet &minFrameRate(std::optional<FrameRate> &&min_frame_rate) { m_minFrameRate = std::move(min_frame_rate); return *this;};
798
799 // @maxFrameRate
800
806 bool hasMaxFrameRate() const { return m_maxFrameRate.has_value(); };
807
813 const std::optional<FrameRate> &maxFrameRate() const {return m_maxFrameRate;};
814
820 AdaptationSet &maxFrameRate(const std::nullopt_t &) { m_maxFrameRate.reset(); return *this; };
821
830 AdaptationSet &maxFrameRate(const FrameRate &max_frame_rate) {m_maxFrameRate = max_frame_rate; return *this;};
831
840 AdaptationSet &maxFrameRate(FrameRate &&max_frame_rate) {m_maxFrameRate = std::move(max_frame_rate); return *this;};
841
850 AdaptationSet &maxFrameRate(const std::optional<FrameRate> &max_frame_rate) { m_maxFrameRate = max_frame_rate; return *this;};
851
860 AdaptationSet &maxFrameRate(std::optional<FrameRate> &&max_frame_rate) { m_maxFrameRate = std::move(max_frame_rate); return *this;};
861
862 // @segmentAlignment (deprecated)
863
871 bool segmentAlignment() const { return m_segmentAlignment; };
872
882 AdaptationSet &segmentAlignment(bool segment_alignment) { m_segmentAlignment = segment_alignment; return *this;};
883
884 // @subsegmentAlignment (deprecated)
885
893 bool subsegmentAlignment() const { return m_subsegmentAlignment; };
894
904 AdaptationSet &subsegmentAlignment(bool subsegment_alignment) { m_subsegmentAlignment = subsegment_alignment; return *this;};
905
906 // @subsegmentStartsWithSAP
907
913 const SAP &subsegmentStartsWithSAP() const {return m_subsegmentStartsWithSAP;};
914
923 AdaptationSet &subsegmentStartsWithSAP(const SAP &subsegment_starts_with_sap) {m_subsegmentStartsWithSAP = subsegment_starts_with_sap; return *this;};
924
933 AdaptationSet &subsegmentStartsWithSAP(SAP &&subsegment_starts_with_sap) {m_subsegmentStartsWithSAP = std::move(subsegment_starts_with_sap); return *this;};
934
935 // @bitstreamSwitching
936
941 bool hasBitstreamSwitching() const { return m_bitstreamSwitching.has_value(); };
942
947 const std::optional<bool> &bitstreamSwitching() const { return m_bitstreamSwitching; };
948
953 AdaptationSet &bitstreamSwitching(const std::nullopt_t&) { m_bitstreamSwitching.reset(); return *this; };
954
960 AdaptationSet &bitstreamSwitching(bool bitstream_switching) { m_bitstreamSwitching = bitstream_switching; return *this; };
961
969 AdaptationSet &bitstreamSwitching(const std::optional<bool> &bitstream_switching) { m_bitstreamSwitching = bitstream_switching; return *this; };
970
978 AdaptationSet &bitstreamSwitching(std::optional<bool> &&bitstream_switching) { m_bitstreamSwitching = std::move(bitstream_switching); return *this; };
979
980 // @initializationSetRefs
981
987 const std::list<unsigned int> &initializationSetRefs() const { return m_initializationSetRefs; };
988
995 std::list<unsigned int>::const_iterator initializationSetRefsBegin() const { return m_initializationSetRefs.cbegin(); };
996 std::list<unsigned int>::iterator initializationSetRefsBegin() { return m_initializationSetRefs.begin(); };
998
1005 std::list<unsigned int>::const_iterator initializationSetRefsEnd() const { return m_initializationSetRefs.cend(); };
1006 std::list<unsigned int>::iterator initializationSetRefsEnd() { return m_initializationSetRefs.end(); };
1008
1015 unsigned int initializationSetRef(std::list<unsigned int>::size_type idx) const {
1016 if (idx >= m_initializationSetRefs.size())
1017 throw std::out_of_range("AdaptationSet Initialization Set Reference does not exist");
1018 auto it = m_initializationSetRefs.cbegin();
1019 while (idx > 0 && it != m_initializationSetRefs.cend()) {it++; idx--;}
1020 return *it;
1021 };
1022
1029 bool initializationSetRefsContains(unsigned int ref) const { return std::find(m_initializationSetRefs.cbegin(), m_initializationSetRefs.cend(), ref) != m_initializationSetRefs.cend(); };
1030
1037 AdaptationSet &initializationSetRefAdd(unsigned int ref) { m_initializationSetRefs.push_back(ref); return *this; };
1038
1045 AdaptationSet &initializationSetRefRemove(unsigned int ref) { auto it = std::find(m_initializationSetRefs.cbegin(), m_initializationSetRefs.cend(), ref); if (it != m_initializationSetRefs.cend()) m_initializationSetRefs.erase(it); return *this; };
1046
1057 AdaptationSet &initializationSetRefRemove(const std::list<unsigned int>::const_iterator &it) { m_initializationSetRefs.erase(it); return *this; };
1058 AdaptationSet &initializationSetRefRemove(const std::list<unsigned int>::iterator &it) { m_initializationSetRefs.erase(it); return *this; };
1060
1071 AdaptationSet &initializationSetRefs(const std::list<unsigned int> &initialization_set_refs) { m_initializationSetRefs = initialization_set_refs; return *this;};
1072
1082 AdaptationSet &initializationSetRefs(std::list<unsigned int> &&initialization_set_refs) { m_initializationSetRefs = std::move(initialization_set_refs); return *this;};
1083
1084 // @initializationPrincipal
1085
1091 bool hasInitializationPrincipal() const { return m_initializationPrincipal.has_value(); };
1092
1098 const std::optional<URI> &initializationPrincipal() const { return m_initializationPrincipal; };
1099
1105 AdaptationSet &initializationPrincipal(const std::nullopt_t &) { m_initializationPrincipal.reset(); return *this; };
1106
1113 AdaptationSet &initializationPrincipal(const URI &initialization_principal) { m_initializationPrincipal = initialization_principal; return *this; };
1114
1121 AdaptationSet &initializationPrincipal(URI &&initialization_principal) { m_initializationPrincipal = std::move(initialization_principal); return *this; };
1122
1132 AdaptationSet &initializationPrincipal(const std::optional<URI> &initialization_principal) { m_initializationPrincipal = initialization_principal; return *this; };
1133
1143 AdaptationSet &initializationPrincipal(std::optional<URI> &&initialization_principal) { m_lang = std::move(initialization_principal); return *this; };
1144
1145 // Accessibility children
1146
1151 const std::list<Descriptor> &accessibilities() const { return m_accessibilities; };
1158 std::list<Descriptor>::const_iterator accessibilitiesBegin() const { return m_accessibilities.cbegin(); };
1159 std::list<Descriptor>::iterator accessibilitiesBegin() { return m_accessibilities.begin(); };
1161
1168 std::list<Descriptor>::const_iterator accessibilitiesEnd() const { return m_accessibilities.cend(); };
1169 std::list<Descriptor>::iterator accessibilitiesEnd() { return m_accessibilities.end(); };
1171
1180 const Descriptor &accessibility(std::list<Descriptor>::size_type idx) const;
1181
1187 bool accessibilitiesContains(const Descriptor &descriptor) const;
1188
1198
1207
1218 AdaptationSet &accessibilitiesRemove(const std::list<Descriptor>::const_iterator &it);
1219 AdaptationSet &accessibilitiesRemove(const std::list<Descriptor>::iterator &it);
1221
1222 // Role children
1223
1228 const std::list<Descriptor> &roles() const { return m_roles; };
1229
1236 std::list<Descriptor>::const_iterator rolesBegin() const { return m_roles.cbegin(); };
1237 std::list<Descriptor>::iterator rolesBegin() { return m_roles.begin(); };
1239
1246 std::list<Descriptor>::const_iterator rolesEnd() const { return m_roles.cend(); };
1247 std::list<Descriptor>::iterator rolesEnd() { return m_roles.end(); };
1249
1258 const Descriptor &role(std::list<Descriptor>::size_type idx) const;
1259
1265 bool rolesContains(const Descriptor &descriptor) const;
1266
1276
1285
1296 AdaptationSet &rolesRemove(const std::list<Descriptor>::const_iterator &it);
1297 AdaptationSet &rolesRemove(const std::list<Descriptor>::iterator &it);
1299
1300 // Rating children
1301
1306 const std::list<Descriptor> &ratings() const { return m_ratings; };
1307
1314 std::list<Descriptor>::const_iterator ratingsBegin() const { return m_ratings.cbegin(); };
1315 std::list<Descriptor>::iterator ratingsBegin() { return m_ratings.begin(); };
1317
1324 std::list<Descriptor>::const_iterator ratingsEnd() const { return m_ratings.cend(); };
1325 std::list<Descriptor>::iterator ratingsEnd() { return m_ratings.end(); };
1327
1336 const Descriptor &rating(std::list<Descriptor>::size_type idx) const;
1337
1343 bool ratingsContains(const Descriptor &descriptor) const;
1344
1354
1363
1374 AdaptationSet &ratingsRemove(const std::list<Descriptor>::const_iterator &it);
1375 AdaptationSet &ratingsRemove(const std::list<Descriptor>::iterator &it);
1377
1378 // Viewpoint children
1379
1384 const std::list<Descriptor> &viewpoints() const { return m_viewpoints; };
1385
1392 std::list<Descriptor>::const_iterator viewpointsBegin() const { return m_viewpoints.cbegin(); };
1393 std::list<Descriptor>::iterator viewpointsBegin() { return m_viewpoints.begin(); };
1395
1402 std::list<Descriptor>::const_iterator viewpointsEnd() const { return m_viewpoints.cend(); };
1403 std::list<Descriptor>::iterator viewpointsEnd() { return m_viewpoints.end(); };
1405
1414 const Descriptor &viewpoint(std::list<Descriptor>::size_type idx) const;
1415
1421 bool viewpointsContains(const Descriptor &descriptor) const;
1422
1432
1441
1452 AdaptationSet &viewpointsRemove(const std::list<Descriptor>::const_iterator &it);
1453 AdaptationSet &viewpointsRemove(const std::list<Descriptor>::iterator &it);
1455
1456 // ContentComponent children
1457
1462 const std::list<ContentComponent> &contentComponents() const { return m_contentComponents; };
1463
1470 std::list<ContentComponent>::const_iterator contentComponentsBegin() const { return m_contentComponents.cbegin(); };
1471 std::list<ContentComponent>::iterator contentComponentsBegin() { return m_contentComponents.begin(); };
1473
1480 std::list<ContentComponent>::const_iterator contentComponentsEnd() const { return m_contentComponents.cend(); };
1481 std::list<ContentComponent>::iterator contentComponentsEnd() { return m_contentComponents.end(); };
1483
1492 const ContentComponent &contentComponent(std::list<ContentComponent>::size_type idx) const;
1493
1499 bool contentComponentsContains(const ContentComponent &content_component) const;
1500
1510
1519
1530 AdaptationSet &contentComponentsRemove(const std::list<ContentComponent>::const_iterator &it);
1531 AdaptationSet &contentComponentsRemove(const std::list<ContentComponent>::iterator &it);
1533
1534 // BaseURL children
1535
1540 const std::list<BaseURL> &baseURLs() const { return m_baseURLs; };
1541
1548 std::list<BaseURL>::const_iterator baseURLsBegin() const { return m_baseURLs.cbegin(); };
1549 std::list<BaseURL>::iterator baseURLsBegin() { return m_baseURLs.begin(); };
1551
1558 std::list<BaseURL>::const_iterator baseURLsEnd() const { return m_baseURLs.cend(); };
1559 std::list<BaseURL>::iterator baseURLsEnd() { return m_baseURLs.end(); };
1561
1570 const BaseURL &baseURL(std::list<BaseURL>::size_type idx) const;
1571
1577 bool baseURLsContains(const BaseURL &base_url) const;
1578
1588
1597
1608 AdaptationSet &baseURLsRemove(const std::list<BaseURL>::const_iterator &it);
1609 AdaptationSet &baseURLsRemove(const std::list<BaseURL>::iterator &it);
1611
1616 std::list<BaseURL> getBaseURLs() const;
1617
1618 // SegmentBase child
1619
1624 bool hasSegmentBase() const { return m_segmentBase.has_value(); };
1625
1630 const std::optional<SegmentBase> &segmentBase() const { return m_segmentBase; };
1631
1638 AdaptationSet &segmentBase(const std::nullopt_t &) { m_segmentBase.reset(); return *this; };
1639
1647 AdaptationSet &segmentBase(const SegmentBase &seg_base) { m_segmentBase = seg_base; return *this; };
1648
1656 AdaptationSet &segmentBase(SegmentBase &&seg_base) { m_segmentBase = std::move(seg_base); return *this; };
1657
1666 AdaptationSet &segmentBase(const std::optional<SegmentBase> &seg_base) { m_segmentBase = seg_base; return *this; };
1667 AdaptationSet &segmentBase(std::optional<SegmentBase> &&seg_base) { m_segmentBase = std::move(seg_base); return *this; };
1669
1670 // SegmentList child
1671
1676 bool hasSegmentList() const { return m_segmentList.has_value(); };
1677
1682 const std::optional<SegmentList> &segmentList() const { return m_segmentList; };
1683
1690 AdaptationSet &segmentList(const std::nullopt_t &) { m_segmentList.reset(); return *this; };
1691
1699 AdaptationSet &segmentList(const SegmentList &seg_list) { m_segmentList = seg_list; return *this; };
1700
1708 AdaptationSet &segmentList(SegmentList &&seg_list) { m_segmentList = std::move(seg_list); return *this; };
1709
1718 AdaptationSet &segmentList(const std::optional<SegmentList> &seg_list) { m_segmentList = seg_list; return *this; };
1719 AdaptationSet &segmentList(std::optional<SegmentList> &&seg_list) { m_segmentList = std::move(seg_list); return *this; };
1721
1722 // SegmentTemplate child
1723
1728 bool hasSegmentTemplate() const { return m_segmentTemplate.has_value(); };
1729
1734 const std::optional<SegmentTemplate> &segmentTemplate() const { return m_segmentTemplate; };
1735
1742 AdaptationSet &segmentTemplate(const std::nullopt_t &) { m_segmentTemplate.reset(); return *this; };
1743
1751 AdaptationSet &segmentTemplate(const SegmentTemplate &seg_template) {m_segmentTemplate = seg_template; return *this; };
1752
1760 AdaptationSet &segmentTemplate(SegmentTemplate &&seg_template) {m_segmentTemplate = std::move(seg_template); return *this; };
1761
1770 AdaptationSet &segmentTemplate(const std::optional<SegmentTemplate> &seg_template) {m_segmentTemplate = seg_template; return *this; };
1771 AdaptationSet &segmentTemplate(std::optional<SegmentTemplate> &&seg_template) {m_segmentTemplate = std::move(seg_template); return *this; };
1773
1774 // Representation children
1775
1780 const std::list<Representation> &representations() const { return m_representations; };
1781
1788 std::list<Representation>::const_iterator representationsBegin() const { return m_representations.cbegin(); };
1789 std::list<Representation>::iterator representationsBegin() { return m_representations.begin(); };
1791
1798 std::list<Representation>::const_iterator representationsEnd() const { return m_representations.cend(); };
1799 std::list<Representation>::iterator representationsEnd() { return m_representations.end(); };
1801
1810 const Representation &representation(std::list<Representation>::size_type idx) const;
1811
1818
1828
1837
1848 AdaptationSet &representationsRemove(const std::list<Representation>::const_iterator &it);
1849 AdaptationSet &representationsRemove(const std::list<Representation>::iterator &it);
1851
1852 // Representation selection
1853
1865
1878 void selectRepresentation(const Representation &rep, bool deselect_others = false);
1879
1895 void selectRepresentation(const std::list<Representation>::const_iterator &rep_it, bool deselect_others = false);
1896 void selectRepresentation(const std::list<Representation>::iterator &rep_it, bool deselect_others = false);
1898
1911
1926
1941 void deselectRepresentation(const std::list<Representation>::const_iterator &rep_it);
1942 void deselectRepresentation(const std::list<Representation>::iterator &rep_it);
1944
1950 const std::unordered_set<const Representation*> &selectedRepresentations() const { return m_selectedRepresentations; };
1951
1952 // Representation querying
1953
1965 std::list<SegmentAvailability> selectedSegmentAvailability(const time_type &query_time) const;
1966
1975 std::list<SegmentAvailability> selectedInitializationSegments() const;
1976
1978protected:
1979 friend class MPD;
1980 friend class Period;
1981 friend class Representation;
1982
1990 AdaptationSet(xmlpp::Node &node);
1991
1999 void setXMLElement(xmlpp::Element &element) const;
2000
2007 AdaptationSet &setPeriod(Period *period) { m_period = period; return *this; };
2008
2017 std::string getMediaURL(const SegmentTemplate::Variables &vars) const;
2018
2028 std::string getInitializationURL(const SegmentTemplate::Variables &vars) const;
2029
2038 SegmentAvailability getMediaAvailability(const SegmentTemplate::Variables &vars) const;
2039
2050 SegmentAvailability getInitialisationAvailability(const SegmentTemplate::Variables &vars) const;
2051
2057 time_type getPeriodStartTime() const;
2058
2065 std::optional<duration_type> getPeriodDuration() const;
2066
2075 const MultipleSegmentBase &getMultiSegmentBase() const;
2076
2078
2079private:
2080 Period *m_period;
2081 std::unordered_set<const Representation*> m_selectedRepresentations;
2082
2083 // Period attributes (ISO 23009-1:2022 Clause 5.3.3.3)
2084 std::optional<XLink> m_xlink;
2085 std::optional<unsigned int> m_id;
2086 std::optional<unsigned int> m_group;
2087 std::optional<std::string> m_lang;
2088 std::optional<RFC6838ContentType> m_contentType;
2089 std::optional<Ratio> m_par;
2090 std::optional<unsigned int> m_minBandwidth;
2091 std::optional<unsigned int> m_maxBandwidth;
2092 std::optional<unsigned int> m_minWidth;
2093 std::optional<unsigned int> m_maxWidth;
2094 std::optional<unsigned int> m_minHeight;
2095 std::optional<unsigned int> m_maxHeight;
2096 std::optional<FrameRate> m_minFrameRate;
2097 std::optional<FrameRate> m_maxFrameRate;
2098 bool m_segmentAlignment;
2099 bool m_subsegmentAlignment;
2100 SAP m_subsegmentStartsWithSAP;
2101 std::optional<bool> m_bitstreamSwitching;
2102 std::list<unsigned int> m_initializationSetRefs;
2103 std::optional<URI> m_initializationPrincipal;
2104
2105 // Period child elements (ISO 23009-1:2022 Clause 5.3.3.3)
2106 std::list<Descriptor> m_accessibilities;
2107 std::list<Descriptor> m_roles;
2108 std::list<Descriptor> m_ratings;
2109 std::list<Descriptor> m_viewpoints;
2110 std::list<ContentComponent> m_contentComponents;
2111 std::list<BaseURL> m_baseURLs;
2112 std::optional<SegmentBase> m_segmentBase;
2113 std::optional<SegmentList> m_segmentList;
2114 std::optional<SegmentTemplate> m_segmentTemplate;
2115 std::list<Representation> m_representations;
2116};
2117
2119
2120/* vim:ts=8:sts=4:sw=4:expandtab:
2121 */
2122#endif /*_BBC_PARSE_DASH_MPD_ADAPTATION_SET_HH_*/
AdaptationSet & minFrameRate(const std::optional< FrameRate > &min_frame_rate)
Definition AdaptationSet.hh:787
std::list< SegmentAvailability > selectedInitializationSegments() const
AdaptationSet & subsegmentStartsWithSAP(const SAP &subsegment_starts_with_sap)
Definition AdaptationSet.hh:923
void deselectRepresentation(const Representation &rep)
AdaptationSet & rolesRemove(const std::list< Descriptor >::const_iterator &it)
AdaptationSet & maxFrameRate(std::optional< FrameRate > &&max_frame_rate)
Definition AdaptationSet.hh:860
std::list< ContentComponent >::const_iterator contentComponentsBegin() const
Definition AdaptationSet.hh:1470
AdaptationSet & contentComponentsRemove(const std::list< ContentComponent >::const_iterator &it)
AdaptationSet & lang(const std::optional< std::string > &lang)
Definition AdaptationSet.hh:290
AdaptationSet & bitstreamSwitching(const std::nullopt_t &)
Definition AdaptationSet.hh:953
std::chrono::microseconds duration_type
Time duration type.
Definition AdaptationSet.hh:63
const std::optional< Ratio > & par() const
Definition AdaptationSet.hh:381
const std::optional< std::string > & lang() const
Definition AdaptationSet.hh:253
std::list< unsignedint >::const_iterator initializationSetRefsEnd() const
Definition AdaptationSet.hh:1005
bool subsegmentAlignment() const
Definition AdaptationSet.hh:893
std::list< Representation >::const_iterator representationsBegin() const
Definition AdaptationSet.hh:1788
AdaptationSet & representationsRemove(const std::list< Representation >::const_iterator &it)
std::list< BaseURL > getBaseURLs() const
AdaptationSet & contentType(const std::optional< RFC6838ContentType > &content_type)
Definition AdaptationSet.hh:355
AdaptationSet & minFrameRate(const std::nullopt_t &)
Definition AdaptationSet.hh:757
AdaptationSet & baseURLsRemove(const BaseURL &base_url)
const std::optional< unsigned int > & maxHeight() const
Definition AdaptationSet.hh:699
std::list< ContentComponent >::iterator contentComponentsBegin()
Definition AdaptationSet.hh:1471
const std::optional< FrameRate > & minFrameRate() const
Definition AdaptationSet.hh:750
const std::list< unsigned int > & initializationSetRefs() const
Definition AdaptationSet.hh:987
std::list< Descriptor >::const_iterator viewpointsEnd() const
Definition AdaptationSet.hh:1402
const std::optional< unsigned int > & maxBandwidth() const
Definition AdaptationSet.hh:495
AdaptationSet & maxBandwidth(const std::optional< unsigned int > &max_bandwidth)
Definition AdaptationSet.hh:520
AdaptationSet & bitstreamSwitching(const std::optional< bool > &bitstream_switching)
Definition AdaptationSet.hh:969
AdaptationSet & segmentList(std::optional< SegmentList > &&seg_list)
Definition AdaptationSet.hh:1719
bool hasSegmentBase() const
Definition AdaptationSet.hh:1624
AdaptationSet & contentComponentsAdd(ContentComponent &&content_component)
AdaptationSet & maxHeight(const std::optional< unsigned int > &max_height)
Definition AdaptationSet.hh:724
bool hasId() const
Definition AdaptationSet.hh:152
AdaptationSet & par(std::optional< Ratio > &&par)
Definition AdaptationSet.hh:428
const BaseURL & baseURL(std::list< BaseURL >::size_type idx) const
bool hasSegmentList() const
Definition AdaptationSet.hh:1676
AdaptationSet & minWidth(unsigned int min_width)
Definition AdaptationSet.hh:561
AdaptationSet & ratingsAdd(Descriptor &&rating)
AdaptationSet & contentType(const RFC6838ContentType &content_type)
Definition AdaptationSet.hh:335
bool hasInitializationPrincipal() const
Definition AdaptationSet.hh:1091
std::list< ContentComponent >::const_iterator contentComponentsEnd() const
Definition AdaptationSet.hh:1480
bool contentComponentsContains(const ContentComponent &content_component) const
AdaptationSet & initializationPrincipal(URI &&initialization_principal)
Definition AdaptationSet.hh:1121
AdaptationSet & maxHeight(unsigned int max_height)
Definition AdaptationSet.hh:714
AdaptationSet & minWidth(const std::optional< unsigned int > &min_width)
Definition AdaptationSet.hh:571
AdaptationSet & viewpointsAdd(Descriptor &&viewpoint)
std::list< ContentComponent >::iterator contentComponentsEnd()
Definition AdaptationSet.hh:1481
AdaptationSet & accessibilitiesAdd(Descriptor &&accessibility)
std::list< Descriptor >::const_iterator viewpointsBegin() const
Definition AdaptationSet.hh:1392
AdaptationSet & viewpointsAdd(const Descriptor &viewpoint)
const std::optional< SegmentTemplate > & segmentTemplate() const
Definition AdaptationSet.hh:1734
AdaptationSet & bitstreamSwitching(bool bitstream_switching)
Definition AdaptationSet.hh:960
AdaptationSet & maxBandwidth(const std::nullopt_t &)
Definition AdaptationSet.hh:502
std::list< Representation >::const_iterator representationsEnd() const
Definition AdaptationSet.hh:1798
const Descriptor & role(std::list< Descriptor >::size_type idx) const
bool viewpointsContains(const Descriptor &descriptor) const
const std::list< Descriptor > & roles() const
Definition AdaptationSet.hh:1228
AdaptationSet & contentComponentsRemove(const std::list< ContentComponent >::iterator &it)
AdaptationSet & segmentBase(const std::nullopt_t &)
Definition AdaptationSet.hh:1638
AdaptationSet & group(unsigned int group)
Definition AdaptationSet.hh:221
AdaptationSet & representationsRemove(const std::list< Representation >::iterator &it)
AdaptationSet & segmentBase(std::optional< SegmentBase > &&seg_base)
Definition AdaptationSet.hh:1667
std::list< Descriptor >::iterator viewpointsBegin()
Definition AdaptationSet.hh:1393
AdaptationSet & maxFrameRate(const FrameRate &max_frame_rate)
Definition AdaptationSet.hh:830
bool hasMaxFrameRate() const
Definition AdaptationSet.hh:806
const Descriptor & accessibility(std::list< Descriptor >::size_type idx) const
AdaptationSet & lang(std::string &&lang)
Definition AdaptationSet.hh:280
bool baseURLsContains(const BaseURL &base_url) const
AdaptationSet(AdaptationSet &&other)
AdaptationSet & segmentTemplate(std::optional< SegmentTemplate > &&seg_template)
Definition AdaptationSet.hh:1771
AdaptationSet & maxHeight(std::optional< unsigned int > &&max_height)
Definition AdaptationSet.hh:734
const std::list< Descriptor > & ratings() const
Definition AdaptationSet.hh:1306
const std::optional< SegmentBase > & segmentBase() const
Definition AdaptationSet.hh:1630
bool hasGroup() const
Definition AdaptationSet.hh:199
AdaptationSet & initializationSetRefRemove(const std::list< unsigned int >::const_iterator &it)
Definition AdaptationSet.hh:1057
AdaptationSet & minBandwidth(const std::nullopt_t &)
Definition AdaptationSet.hh:451
AdaptationSet & id(const std::optional< unsigned int > &id)
Definition AdaptationSet.hh:182
AdaptationSet & group(const std::nullopt_t &)
Definition AdaptationSet.hh:213
std::list< Descriptor >::const_iterator accessibilitiesBegin() const
Definition AdaptationSet.hh:1158
AdaptationSet & subsegmentAlignment(bool subsegment_alignment)
Definition AdaptationSet.hh:904
AdaptationSet & segmentAlignment(bool segment_alignment)
Definition AdaptationSet.hh:882
AdaptationSet & segmentTemplate(SegmentTemplate &&seg_template)
Definition AdaptationSet.hh:1760
AdaptationSet & id(std::optional< unsigned int > &&id)
Definition AdaptationSet.hh:190
const std::optional< RFC6838ContentType > & contentType() const
Definition AdaptationSet.hh:316
AdaptationSet & par(Ratio &&par)
Definition AdaptationSet.hh:408
bool hasPar() const
Definition AdaptationSet.hh:374
AdaptationSet & bitstreamSwitching(std::optional< bool > &&bitstream_switching)
Definition AdaptationSet.hh:978
AdaptationSet & ratingsAdd(const Descriptor &rating)
bool hasBitstreamSwitching() const
Definition AdaptationSet.hh:941
std::list< Representation >::iterator representationsEnd()
Definition AdaptationSet.hh:1799
AdaptationSet(const AdaptationSet &other)
AdaptationSet & minFrameRate(FrameRate &&min_frame_rate)
Definition AdaptationSet.hh:777
AdaptationSet & minWidth(std::optional< unsigned int > &&min_width)
Definition AdaptationSet.hh:581
void deselectRepresentation(const std::list< Representation >::const_iterator &rep_it)
AdaptationSet & segmentList(SegmentList &&seg_list)
Definition AdaptationSet.hh:1708
bool representationsContains(const Representation &representation) const
AdaptationSet & maxWidth(const std::nullopt_t &)
Definition AdaptationSet.hh:604
bool operator==(const AdaptationSet &other) const
std::list< Descriptor >::iterator ratingsEnd()
Definition AdaptationSet.hh:1325
AdaptationSet & accessibilitiesAdd(const Descriptor &accessibility)
AdaptationSet & lang(const std::string &lang)
Definition AdaptationSet.hh:270
bool accessibilitiesContains(const Descriptor &descriptor) const
std::list< Descriptor >::const_iterator rolesEnd() const
Definition AdaptationSet.hh:1246
const std::optional< unsigned int > & maxWidth() const
Definition AdaptationSet.hh:597
std::list< unsignedint >::iterator initializationSetRefsEnd()
Definition AdaptationSet.hh:1006
Period * getPeriod()
Definition AdaptationSet.hh:141
AdaptationSet & baseURLsAdd(BaseURL &&base_url)
AdaptationSet & operator=(AdaptationSet &&other)
AdaptationSet & contentType(const std::nullopt_t &)
Definition AdaptationSet.hh:325
AdaptationSet & segmentList(const std::nullopt_t &)
Definition AdaptationSet.hh:1690
const Descriptor & viewpoint(std::list< Descriptor >::size_type idx) const
bool segmentAlignment() const
Definition AdaptationSet.hh:871
AdaptationSet & segmentTemplate(const std::nullopt_t &)
Definition AdaptationSet.hh:1742
AdaptationSet & segmentTemplate(const SegmentTemplate &seg_template)
Definition AdaptationSet.hh:1751
const std::optional< bool > & bitstreamSwitching() const
Definition AdaptationSet.hh:947
AdaptationSet & maxWidth(const std::optional< unsigned int > &max_width)
Definition AdaptationSet.hh:622
const std::optional< unsigned int > & id() const
Definition AdaptationSet.hh:159
bool hasMaxHeight() const
Definition AdaptationSet.hh:692
AdaptationSet & group(std::optional< unsigned int > &&group)
Definition AdaptationSet.hh:237
const std::list< BaseURL > & baseURLs() const
Definition AdaptationSet.hh:1540
AdaptationSet & initializationSetRefs(std::list< unsigned int > &&initialization_set_refs)
Definition AdaptationSet.hh:1082
const std::optional< URI > & initializationPrincipal() const
Definition AdaptationSet.hh:1098
std::chrono::system_clock::time_point time_type
Date-time type.
Definition AdaptationSet.hh:62
AdaptationSet & ratingsRemove(const std::list< Descriptor >::const_iterator &it)
const SAP & subsegmentStartsWithSAP() const
Definition AdaptationSet.hh:913
void deselectRepresentation(const std::list< Representation >::iterator &rep_it)
AdaptationSet & segmentBase(SegmentBase &&seg_base)
Definition AdaptationSet.hh:1656
AdaptationSet & rolesAdd(const Descriptor &role)
AdaptationSet & initializationSetRefRemove(const std::list< unsigned int >::iterator &it)
Definition AdaptationSet.hh:1058
bool hasContentType() const
Definition AdaptationSet.hh:309
AdaptationSet & minWidth(const std::nullopt_t &)
Definition AdaptationSet.hh:553
AdaptationSet & subsegmentStartsWithSAP(SAP &&subsegment_starts_with_sap)
Definition AdaptationSet.hh:933
AdaptationSet & contentType(RFC6838ContentType &&content_type)
Definition AdaptationSet.hh:345
bool hasMinBandwidth() const
Definition AdaptationSet.hh:437
AdaptationSet & minBandwidth(const std::optional< unsigned int > &min_bandwidth)
Definition AdaptationSet.hh:469
AdaptationSet & segmentList(const std::optional< SegmentList > &seg_list)
Definition AdaptationSet.hh:1718
bool hasMinWidth() const
Definition AdaptationSet.hh:539
std::list< Descriptor >::iterator viewpointsEnd()
Definition AdaptationSet.hh:1403
AdaptationSet & initializationPrincipal(std::optional< URI > &&initialization_principal)
Definition AdaptationSet.hh:1143
AdaptationSet & id(unsigned int id)
Definition AdaptationSet.hh:174
const std::list< ContentComponent > & contentComponents() const
Definition AdaptationSet.hh:1462
AdaptationSet & lang(const std::nullopt_t &)
Definition AdaptationSet.hh:260
bool hasMaxBandwidth() const
Definition AdaptationSet.hh:488
const std::optional< unsigned int > & minHeight() const
Definition AdaptationSet.hh:648
AdaptationSet & ratingsRemove(const Descriptor &rating)
AdaptationSet & baseURLsRemove(const std::list< BaseURL >::const_iterator &it)
std::list< BaseURL >::iterator baseURLsEnd()
Definition AdaptationSet.hh:1559
bool hasMinFrameRate() const
Definition AdaptationSet.hh:743
AdaptationSet & representationsRemove(const Representation &representation)
AdaptationSet & baseURLsRemove(const std::list< BaseURL >::iterator &it)
bool hasLang() const
Definition AdaptationSet.hh:246
AdaptationSet & minFrameRate(std::optional< FrameRate > &&min_frame_rate)
Definition AdaptationSet.hh:797
void selectRepresentation(const std::list< Representation >::iterator &rep_it, bool deselect_others=false)
const std::optional< unsigned int > & minBandwidth() const
Definition AdaptationSet.hh:444
std::list< SegmentAvailability > selectedSegmentAvailability(const time_type &query_time) const
AdaptationSet & representationsAdd(Representation &&representation)
AdaptationSet & rolesRemove(const std::list< Descriptor >::iterator &it)
AdaptationSet & accessibilitiesRemove(const std::list< Descriptor >::iterator &it)
AdaptationSet & minHeight(const std::nullopt_t &)
Definition AdaptationSet.hh:655
bool rolesContains(const Descriptor &descriptor) const
AdaptationSet & maxWidth(std::optional< unsigned int > &&max_width)
Definition AdaptationSet.hh:632
const std::optional< unsigned int > & minWidth() const
Definition AdaptationSet.hh:546
AdaptationSet & initializationPrincipal(const std::nullopt_t &)
Definition AdaptationSet.hh:1105
AdaptationSet & minHeight(const std::optional< unsigned int > &min_height)
Definition AdaptationSet.hh:673
AdaptationSet & baseURLsAdd(const BaseURL &base_url)
AdaptationSet & representationsAdd(const Representation &representation)
AdaptationSet & accessibilitiesRemove(const std::list< Descriptor >::const_iterator &it)
AdaptationSet & segmentBase(const std::optional< SegmentBase > &seg_base)
Definition AdaptationSet.hh:1666
void selectRepresentation(const Representation &rep, bool deselect_others=false)
AdaptationSet & par(const std::nullopt_t &)
Definition AdaptationSet.hh:388
AdaptationSet & maxBandwidth(unsigned int max_bandwidth)
Definition AdaptationSet.hh:510
std::list< Representation >::iterator representationsBegin()
Definition AdaptationSet.hh:1789
AdaptationSet & contentType(std::optional< RFC6838ContentType > &&content_type)
Definition AdaptationSet.hh:365
virtual ~AdaptationSet()
Definition AdaptationSet.hh:93
const std::list< Descriptor > & viewpoints() const
Definition AdaptationSet.hh:1384
AdaptationSet & maxFrameRate(const std::nullopt_t &)
Definition AdaptationSet.hh:820
AdaptationSet & initializationSetRefs(const std::list< unsigned int > &initialization_set_refs)
Definition AdaptationSet.hh:1071
std::list< Descriptor >::const_iterator rolesBegin() const
Definition AdaptationSet.hh:1236
AdaptationSet & initializationPrincipal(const URI &initialization_principal)
Definition AdaptationSet.hh:1113
std::list< BaseURL >::const_iterator baseURLsEnd() const
Definition AdaptationSet.hh:1558
std::list< Descriptor >::iterator accessibilitiesBegin()
Definition AdaptationSet.hh:1159
AdaptationSet & par(const std::optional< Ratio > &par)
Definition AdaptationSet.hh:418
std::list< BaseURL >::const_iterator baseURLsBegin() const
Definition AdaptationSet.hh:1548
AdaptationSet & minHeight(std::optional< unsigned int > &&min_height)
Definition AdaptationSet.hh:683
AdaptationSet & segmentBase(const SegmentBase &seg_base)
Definition AdaptationSet.hh:1647
AdaptationSet & initializationPrincipal(const std::optional< URI > &initialization_principal)
Definition AdaptationSet.hh:1132
bool ratingsContains(const Descriptor &descriptor) const
AdaptationSet & initializationSetRefRemove(unsigned int ref)
Definition AdaptationSet.hh:1045
AdaptationSet & minHeight(unsigned int min_height)
Definition AdaptationSet.hh:663
const ContentComponent & contentComponent(std::list< ContentComponent >::size_type idx) const
std::list< unsignedint >::iterator initializationSetRefsBegin()
Definition AdaptationSet.hh:996
AdaptationSet & maxBandwidth(std::optional< unsigned int > &&max_bandwidth)
Definition AdaptationSet.hh:530
std::list< unsignedint >::const_iterator initializationSetRefsBegin() const
Definition AdaptationSet.hh:995
AdaptationSet & viewpointsRemove(const std::list< Descriptor >::const_iterator &it)
bool hasSegmentTemplate() const
Definition AdaptationSet.hh:1728
AdaptationSet & maxHeight(const std::nullopt_t &)
Definition AdaptationSet.hh:706
std::list< Descriptor >::iterator rolesEnd()
Definition AdaptationSet.hh:1247
const std::list< Descriptor > & accessibilities() const
Definition AdaptationSet.hh:1151
std::list< Descriptor >::iterator ratingsBegin()
Definition AdaptationSet.hh:1315
bool hasMinHeight() const
Definition AdaptationSet.hh:641
void selectRepresentation(const std::list< Representation >::const_iterator &rep_it, bool deselect_others=false)
AdaptationSet & segmentTemplate(const std::optional< SegmentTemplate > &seg_template)
Definition AdaptationSet.hh:1770
AdaptationSet & accessibilitiesRemove(const Descriptor &accessibility)
AdaptationSet & par(const Ratio &par)
Definition AdaptationSet.hh:398
AdaptationSet & rolesRemove(const Descriptor &role)
AdaptationSet & ratingsRemove(const std::list< Descriptor >::iterator &it)
AdaptationSet & maxFrameRate(FrameRate &&max_frame_rate)
Definition AdaptationSet.hh:840
AdaptationSet & rolesAdd(Descriptor &&role)
bool hasMaxWidth() const
Definition AdaptationSet.hh:590
AdaptationSet & id(const std::nullopt_t &)
Definition AdaptationSet.hh:166
bool initializationSetRefsContains(unsigned int ref) const
Definition AdaptationSet.hh:1029
const std::optional< unsigned int > & group() const
Definition AdaptationSet.hh:206
std::list< Descriptor >::const_iterator ratingsBegin() const
Definition AdaptationSet.hh:1314
AdaptationSet & contentComponentsAdd(const ContentComponent &content_component)
AdaptationSet & maxWidth(unsigned int max_width)
Definition AdaptationSet.hh:612
AdaptationSet & operator=(const AdaptationSet &other)
const Representation & representation(std::list< Representation >::size_type idx) const
const std::optional< FrameRate > & maxFrameRate() const
Definition AdaptationSet.hh:813
AdaptationSet & lang(std::optional< std::string > &&lang)
Definition AdaptationSet.hh:300
AdaptationSet & minFrameRate(const FrameRate &min_frame_rate)
Definition AdaptationSet.hh:767
AdaptationSet & group(const std::optional< unsigned int > &group)
Definition AdaptationSet.hh:229
AdaptationSet & minBandwidth(unsigned int min_bandwidth)
Definition AdaptationSet.hh:459
std::list< Descriptor >::const_iterator accessibilitiesEnd() const
Definition AdaptationSet.hh:1168
AdaptationSet & initializationSetRefAdd(unsigned int ref)
Definition AdaptationSet.hh:1037
std::list< Descriptor >::iterator accessibilitiesEnd()
Definition AdaptationSet.hh:1169
const std::optional< SegmentList > & segmentList() const
Definition AdaptationSet.hh:1682
AdaptationSet & segmentList(const SegmentList &seg_list)
Definition AdaptationSet.hh:1699
AdaptationSet & maxFrameRate(const std::optional< FrameRate > &max_frame_rate)
Definition AdaptationSet.hh:850
const Descriptor & rating(std::list< Descriptor >::size_type idx) const
std::list< Descriptor >::const_iterator ratingsEnd() const
Definition AdaptationSet.hh:1324
const Period * getPeriod() const
Definition AdaptationSet.hh:142
std::list< BaseURL >::iterator baseURLsBegin()
Definition AdaptationSet.hh:1549
AdaptationSet & viewpointsRemove(const std::list< Descriptor >::iterator &it)
unsigned int initializationSetRef(std::list< unsigned int >::size_type idx) const
Definition AdaptationSet.hh:1015
const std::list< Representation > & representations() const
Definition AdaptationSet.hh:1780
std::list< Descriptor >::iterator rolesBegin()
Definition AdaptationSet.hh:1237
AdaptationSet & contentComponentsRemove(const ContentComponent &content_component)
AdaptationSet & minBandwidth(std::optional< unsigned int > &&min_bandwidth)
Definition AdaptationSet.hh:479
const std::unordered_set< const Representation * > & selectedRepresentations() const
Definition AdaptationSet.hh:1950
AdaptationSet & viewpointsRemove(const Descriptor &viewpoint)
Definition BaseURL.hh:43
Definition ContentComponent.hh:39
Definition Descriptor.hh:41
Definition FrameRate.hh:38
Definition MPD.hh:49
Definition MultipleSegmentBase.hh:39
Definition Period.hh:53
Definition RFC6838ContentType.hh:35
Definition Ratio.hh:36
Definition Representation.hh:55
Definition SAP.hh:36
Definition SegmentAvailability.hh:27
Definition SegmentBase.hh:41
Definition SegmentList.hh:41
Definition SegmentTemplate.hh:46
Definition SegmentTemplate.hh:40
Definition URI.hh:40
#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