Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
247f329
Updated DOMParser and tested libdash
zenzi-deluxe Apr 19, 2021
2b75446
libdash update - part 1
zenzi-deluxe Apr 22, 2021
b5504c9
Merge branch 'my_updates' of https://github.com/cd-athena/libdash int…
zenzi-deluxe Apr 22, 2021
c802644
libdash update - part 2
zenzi-deluxe Apr 26, 2021
b7c1e1c
minor bug fixes
zenzi-deluxe Apr 27, 2021
cc44ed7
endNumber attribute fix
zenzi-deluxe Apr 27, 2021
c78535b
fixed minor issues, added @contributions, FCS and FailoverContent ele…
zenzi-deluxe Apr 28, 2021
382b7f2
added Event, EventStream and included Period and RepresentationBase d…
zenzi-deluxe Apr 29, 2021
9ba35e6
fixed minore issues, added ServiceDescription, Latency, UIntPairs, UI…
zenzi-deluxe May 6, 2021
739d34c
removed useless include in Node.cpp
zenzi-deluxe May 6, 2021
dad4305
Added ContentPopularityRate, InitializationSet, PatchLocation, Popula…
zenzi-deluxe May 18, 2021
d415ea4
Fixed data types issues (loss due to data types conversion), initiali…
zenzi-deluxe May 20, 2021
e278af8
New elements test updated (check README_mpd.txt file) and testing cod…
zenzi-deluxe May 26, 2021
01b0a1b
Added/Fixed contributions and updated Ubuntu's and QTSamplePlayer's i…
zenzi-deluxe May 27, 2021
fdafc94
Fixed double ';' issue in RepresentationBase.cpp
zenzi-deluxe May 27, 2021
ffe2b1a
Properly formatting files...
zenzi-deluxe Jun 1, 2021
260bccb
Properly formatting files (part 2)...
zenzi-deluxe Jun 1, 2021
c05e750
Ultimate update + DASH revision
zenzi-deluxe Jul 6, 2021
9fdc404
Added updated classes
zenzi-deluxe Jul 6, 2021
26f94f6
Fixed indentation
zenzi-deluxe Jul 7, 2021
4371ca0
Added RepresentationBase@containerProfiles
zenzi-deluxe Jul 7, 2021
8dffc94
Added SegmentBase@pdDelta
zenzi-deluxe Jul 7, 2021
c8bb278
Added AdaptationSet@initializationPrincipal
zenzi-deluxe Jul 7, 2021
8f0150c
Removed @rangeAccess and @index from ResyncType
zenzi-deluxe Jul 7, 2021
00ae2d5
Added BaseURL@rangeAccess
zenzi-deluxe Jul 7, 2021
e0c83fa
Fixed SegmentBase indentation
zenzi-deluxe Jul 8, 2021
1a9fc7f
Deleted README_mpd.txt and removed 'variables check'
zenzi-deluxe Jul 8, 2021
6b3dee2
Removed 'contributors' in README.md
zenzi-deluxe Jul 8, 2021
9e3f141
Trigger Build
zenzi-deluxe Jul 9, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ You can find the latest sources and binaries on github.
4. After that all files will be provided in the bin folder
5. You can test the library with the sampleplayer.exe. This application simply downloads the lowest representation of one of our dataset MPDs.

### Ubuntu 12.04
### Ubuntu 14.04 (Kernel 3.19.0-71-generic)
1. sudo apt-get install git-core build-essential cmake libxml2-dev libcurl4-openssl-dev
2. git clone git://github.com/bitmovin/libdash.git
3. cd libdash/libdash
Expand All @@ -56,20 +56,20 @@ You can find the latest sources and binaries on github.

#### QTSamplePlayer
Prerequisite: libdash must be built as described in the previous section.
Tested using **cmake** version **2.8.12.2**.

1. sudo apt-add-repository ppa:ubuntu-sdk-team/ppa
2. sudo apt-add-repository ppa:canonical-qt5-edgers/qt5-proper
3. sudo apt-get update
4. sudo apt-get install qtmultimedia5-dev qtbase5-dev libqt5widgets5 libqt5core5 libqt5gui5 libqt5multimedia5 libqt5multimediawidgets5 libqt5opengl5 libav-tools libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev
4. sudo apt-get install qtmultimedia5-dev qtbase5-dev libqt5widgets5 libqt5core5a libqt5gui5 libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediawidgets5 libqt5opengl5 libav-tools libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev
5. cd libdash/libdash/qtsampleplayer
6. mkdir build
7. cd build
8. wget http://www.cmake.org/files/v2.8/cmake-2.8.11.2-Linux-i386.sh
9. chmod a+x cmake-2.8.11.2-Linux-i386.sh
10. ./cmake-2.8.11.2-Linux-i386.sh
11. ./cmake-2.8.11.2-Linux-i386/bin/cmake ../
12. make
13. ./qtsampleplayer
8. cmake ../
9. make
10. ./qtsampleplayer

If some issues arise regarding the *make* installation, please make sure to be using the right kernel and *cmake version*. It is important to run *cmake* with the appropriate version in order to avoid linking problems that can fail the *make* process.

## License

Expand Down
55 changes: 33 additions & 22 deletions libdash/libdash/include/IAdaptationSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@
* @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.
*
* @contributor Daniele Lorenzi
* @contributoremail lorenzidaniele.97@gmail.com
* @contributiondate 2021
*/

#ifndef IADAPTATIONSET_H_
Expand Down Expand Up @@ -156,7 +160,19 @@ namespace dash
* @return a reference to a string
*/
virtual const std::string& GetXlinkActuate () const = 0;


/**
* Returns a reference to a string that specifies the type of link.
* @return a reference to a string
*/
virtual const std::string& GetXlinkType () const = 0;

/**
* Returns a reference to a string that specifies where to open the link.
* @return a reference to a string
*/
virtual const std::string& GetXlinkShow () const = 0;

/**
* Returns an unsigned integer that specifies an unique identifier for this Adaptation Set in the scope of the Period.
* The attribute shall be unique in the scope of the containing Period. \n\n
Expand Down Expand Up @@ -255,15 +271,6 @@ namespace dash
*/
virtual const std::string& GetMaxFramerate () const = 0;

/**
* Because of the fact that the type of the attribute \em segmentAlignment is a union of \c xs:unsignedInt and \c xs:boolean this method is needed to determine
* whether its value is of type bool or integer.\n
* If and only if \c 'true' is returned, an invocation of HasSegmentAlignment() is neccessary to retrieve the bool value.\n
* If and only if \c 'false' is returned, an invocation of GetSegmentAlignment() is neccessary to retrieve the integer value.
* @return a bool value
*/
virtual bool SegmentAlignmentIsBoolValue () const = 0;

/**
* If the return value of SegmentAlignmentIsBoolValue() equals \c 'true' the bool value returned by this method
* specifies whether Segment Alignment is used or not. This is only valid for Adaptation Sets containing Representations with multiple media content components.
Expand All @@ -284,16 +291,7 @@ namespace dash
* whenever \em m is not equal to \em n.
* @return an unsigned integer
*/
virtual uint32_t GetSegmentAligment () const = 0;

/**
* Because of the fact that the type of the attribute \em subsegmentAlignment is a union of \c xs:unsignedInt and \c xs:boolean this method is needed to determine
* whether its value is of type bool or integer.\n
* If and only if \c 'true' is returned, an invocation of HasSubsegmentAlignment() is neccessary to retrieve the bool value.\n
* If and only if \c 'false' is returned, an invocation of GetSubsegmentAlignment() is neccessary to retrieve the integer value.
* @return a bool value
*/
virtual bool SubsegmentAlignmentIsBoolValue () const = 0;
virtual bool GetSegmentAligment () const = 0;

/**
* If and only if the return value of SubsegmentAlignmentIsBoolValue() equals \c 'true' the bool value returned by this method
Expand All @@ -319,9 +317,9 @@ namespace dash
* within the union of the two Adaptation Sets, the <em>m</em>-th Subsegment of X and the <em>n</em>-th Subsegment of Y are non-overlapping
* (as defined in section 4.5.2 of <em>ISO/IEC 23009-1, Part 1, 2012</em>) whenever m is not equal to n.
* </ul>
* @return an unsigned integer
* @return a bool value
*/
virtual uint32_t GetSubsegmentAlignment () const = 0;
virtual bool GetSubsegmentAlignment () const = 0;

/**
* Returns a unsigned integer that when greater than 0, specifies that each Subsegment with \c SAP_type greater than 0 starts with a SAP of type
Expand Down Expand Up @@ -360,6 +358,19 @@ namespace dash
* @return a bool value
*/
virtual bool GetBitstreamSwitching () const = 0;

/**
* Returns a reference to a vector of unsigned integers that specifies the reference initialization set defined as a whitespace-separated list of unsigned integers.
* @return a reference to a vector of unsigned integers
*/
virtual const std::vector<uint32_t>& GetInitializationSetRef () const = 0;

/**
* Returns a reference to a string that specifies specifies the URL of an Initialization Segment that is sufficient to initialize the Adaptation Set. If not present, an Initialization Segment from one of the Representations is sufficent.
* @return a reference to a string
*/
virtual const std::string& GetInitializationPrincipal () const = 0;

};
}
}
Expand Down
40 changes: 36 additions & 4 deletions libdash/libdash/include/IBaseUrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@
* @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.
*
* @contributor Daniele Lorenzi
* @contributoremail lorenzidaniele.97@gmail.com
* @contributiondate 2021
*/

#ifndef IBASEURL_H_
Expand All @@ -36,14 +40,14 @@ namespace dash
* Returns the reference to a string representing a BaseURL
* @return a reference to a string
*/
virtual const std::string& GetUrl () const = 0;
virtual const std::string& GetUrl () const = 0;

/**
* Returns the reference to a string that specifies a relationship between Base URLs such that \c <b>BaseURL</b> elements with the same
* \c \@serviceLocation value are likely to have their URLs resolve to services at a common network location, for example a common Content Delivery Network
* @return a reference to a string
*/
virtual const std::string& GetServiceLocation () const = 0;
virtual const std::string& GetServiceLocation () const = 0;

/**
* Returns the reference to a string that represents a byte range. \n
Expand All @@ -53,15 +57,43 @@ namespace dash
* \b NOTE: Such alternative requests are expected to not be used unless the DASH application requires this. For more details refer to Annex E.
* @return a reference to a string
*/
virtual const std::string& GetByteRange () const = 0;
virtual const std::string& GetByteRange () const = 0;

/**
* Returns a number that specifies an offset to define the adjusted segment availability time.
* If the value is present in \c SegmentBase then this attribute is additive to the one in \c SegmentBase.
* @return a double
*/
virtual double GetAvailabilityTimeOffset () const = 0;

/**
* Returns a boolean that specifies if all Segments of all associated Representation are complete at the adjusted availability start time.
* If the value is present in \c SegmentBase then this attribute should not be present. If present in \c SegmentBase and \c BaseURL, the value in \c BaseURL shall be ignored.
* @return a boolean
*/
virtual bool IsAvailabilityTimeComplete () const = 0;

/**
* Returns the reference to a string that specifies the duration of the smallest time shifting buffer for any Representation in the MPD that is guaranteed to be available for a Media Presentation with type 'dynamic'.
* This value overrides \c MPD@timeShiftBufferDepth for the resources that use this \c BaseURL. This value of the attribute is undefined if the \c MPD@type attribute is equal to \c 'static'.
* @return a reference to a string
*/
virtual const std::string& GetTimeShiftBufferDepth () const = 0;

/**
* Returns a boolean that specifies: if set to true, partially available may be accessed with byte range request. If a client is making a byte-range request against a partially available Segment and the first-byte position of that range request is non-zero and the client is expecting an aggregating response, then the client should signal that expectation by following the convention of IETF RFC 8673. Specifically, it should use a last-byte value of 9007199254740991. This will signal the server to respond with a 206 aggregating response instead of waiting for the end of the segment and responding with a 200 response code and a content-length response header. \n
* If set to false, the client should not expect a response corresponding to the requested byte range.
* @return a boolean
*/
virtual bool HasRangeAccess () const = 0;

/**
* Returns a pointer to a dash::mpd::ISegment object which represents a media segment that can be downloaded. Should be used for single base urls inside
* a representation.
* @param baseurls a vector of pointers to dash::mpd::IBaseUrl objects that represent the path to the media segment
* @return a pointer to a dash::mpd::ISegment object
*/
virtual ISegment* ToMediaSegment (const std::vector<IBaseUrl *>& baseurls) const = 0;
virtual ISegment* ToMediaSegment (const std::vector<IBaseUrl *>& baseurls) const = 0;
};
}
}
Expand Down
11 changes: 11 additions & 0 deletions libdash/libdash/include/IContentComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
* @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.
*
* @contributor Daniele Lorenzi
* @contributoremail lorenzidaniele.97@gmail.com
* @contributiondate 2021
*/

#ifndef ICONTENTCOMPONENT_H_
Expand Down Expand Up @@ -75,6 +79,13 @@ namespace dash
* @copydoc dash::mpd::IAdaptationSet::GetPar()
*/
virtual const std::string& GetPar () const = 0;

/**
* Returns a reference to a string that specifies the tag of the Content Component
* which may be used for selection purposes towards the decoder.
* @return a reference to a string
*/
virtual const std::string& GetTag () const = 0;

};
}
Expand Down
76 changes: 76 additions & 0 deletions libdash/libdash/include/IContentPopularityRate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/**
* @class dash::mpd::IContentPopularityRate
* @brief This interface is needed for accessing the common elements and attributes of <tt><b>ContentPopularityRate</b></tt>
* @details Content Popularity Rate is a method for signalling information on which content items amongst the different Preselections and Adaptation Sets are expected to be more popular than others.
* Example use cases for different content streams in a Media Presentation include:
* <ul>
* <li> content streams from different viewpoints: in this case, an Adaptation Set containing recommended viewpoint is expected to be more popular than other Adaptation Sets;
* <li> sub-picture streams in a 360 video: in this case, a set of Adaptation Sets containing the sub-picture streams that compose "recommended viewport" can be signalled as more popular than others.
* </ul>
* Content Popularity Rate information is expected to be provided by the content provider based on the author’s intent, expected consumption rate by users,
* or actual viewing statistics that could have been measured by using DASH metrics, such as Play list as defined in Annex D.4.6. of <em>ISO/IEC 23009-1</em>.\n
* If provided, the information can be used for data prefetching by clients or network elements, e.g. CDN servers.
* It can also be used for example to deliver the data that is considered most relevant on a preferred data link, for example on multicast or broadcast, whereas less popular data is only provided in unicast.
* Expected-to-be-popular data can also be prefetched in higher quality in order to ensure that such data is available in good quality.\n
* To indicate the popularity of a Pre-selection or Adaptation Set, the \b ContentPopularityRate element may be present within that element.
* The \b ContentPopularityRate element contains one or more \b PR elements giving the rating for different parts of the content.
* The semantics of the \b ContentPopularityRate element are provided in 5.14.2, Table 43, the syntax is provided in 5.14.3 (of <em>ISO/IEC 23009-1</em>).
* @see dash::mpd::IPopularityRate dash::mpd::IMPDElement
*
* @author Daniele Lorenzi \n
* Email: lorenzidaniele.97@gmail.com
* @version 2.1
* @date 2021
*/

#ifndef ICONTENTPOPULARITYRATE_H_
#define ICONTENTPOPULARITYRATE_H_

#include "config.h"

#include "IMPDElement.h"
#include "IPopularityRate.h"

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

/**
* Returns a reference to a vector of pointers to dash::mpd::IPopularityRate objects that specifies
* start time and number of segments for a contiguous sequence of segments assigned identical Popularity Rate value.
*
* @return a reference to a vector of pointers to dash::mpd::IPopularityRate objects
*/
virtual const std::vector<IPopularityRate *>& GetPopularityRates () const = 0;

/**
* Returns a reference to a string that indicates the source of rating by this element.
* The value can be one of the following:
* <ul>
* <li> \c content (when the value is specified by the content author or content provider);
* <li> \c statistics (when the value is specified based on viewing statistics);
* <li> \c other.
* </ul>
* When \c "other" is used, \c @source_description should be provided.
*
* @return a reference to a string
*/
virtual const std::string& GetSource () const = 0;

/**
* Returns a reference to a UTF-8 string that provides a textual description of the source of rating.
*
* @return a reference to a string
*/
virtual const std::string& GetSourceDescription () const = 0;

};
}
}

#endif /* ICONTENTPOPULARITYRATE_H_ */
Loading