aboutsummaryrefslogtreecommitdiffstats
path: root/src/libdash/include/ISegmentTimeline.h
blob: 809ee735ce8c0890682938573da930d375bf8540 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
 *  @class      dash::mpd::ISegmentTimeline
 *  @brief      This interface is needed for accessing the subelements of the <tt><b>SegmentTimeline</b></tt> element, as specified in <em>ISO/IEC 23009-1, Part 1, 2012</em>, section 5.3.9.6
 *  @details    The <tt><b>SegmentTimeline</b></tt> element expresses the earliest presentation time and presentation duration (in units based on the \c \@timescale attribute)
 *              for each Segment in the Representation. The use is an alternative to providing the \c \@duration attribute and provides three additional features:
 *              <ul>
 *                  <li> the specification of arbitrary Segment durations,
 *                  <li> the specification of accurate Segment durations for one media stream where the duration expresses presentation duration of the Segment, and
 *                  <li> the signalling of discontinuities of the Media Presentation timeline for which no Segment data are present in a specific Representation.
 *              </ul>
 *              For compactness the syntax of this element includes run-length compression to express a sequence of Segments having constant duration.\n\n
 *              The <tt><b>SegmentTimeline</b></tt> element shall contain a list of <tt><b>S</b></tt> elements each of which describes a sequence of contiguous segments of identical MPD duration.
 *  @see        dash::mpd::ITimeline dash::mpd::IMultipleSegmentBase dash::mpd::IMPDElement
 *
 *  @author     bitmovin Softwareentwicklung OG \n
 *              Email: libdash-dev@vicky.bitmovin.net
 *  @version    2.1
 *  @date       2013
 *  @copyright  bitmovin Softwareentwicklung OG, All Rights Reserved \n\n
 *              This source code and its use and distribution, is subject to the terms
 *              and conditions of the applicable license agreement.
 */

#ifndef ISEGMENTTIMELINE_H_
#define ISEGMENTTIMELINE_H_

#include "config.h"

#include "ITimeline.h"
#include "IMPDElement.h"

namespace dash
{
    namespace mpd
    {
        class ISegmentTimeline : public virtual IMPDElement
        {
            public:
                virtual ~ISegmentTimeline(){}

                /**
                 *  Returns a reference to a vector of pointers to dash::mpd::ITimeline objects, that correspond to the to <b><tt>S</tt></b> elements.
                 *  @return     a reference to vector of pointers to dash::mpd::ITimeline objects
                 */
                virtual std::vector<ITimeline *>&   GetTimelines ()  const = 0;
        };
    }
}

#endif /* ISEGMENTTIMELINE_H_ */