vlc | branch: master | Hugo Beauzée-Luyssen <beauz...@gmail.com> | Thu Jan 5 14:53:49 2012 +0100| [8158205e527712886aa05a644d508e406a024e68] | committer: Jean-Baptiste Kempf
dash: Allow SegmentTimeline to be queried for a "S" element. Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8158205e527712886aa05a644d508e406a024e68 --- modules/stream_filter/dash/mpd/SegmentTimeline.cpp | 24 ++++++++++++++++++++ modules/stream_filter/dash/mpd/SegmentTimeline.h | 2 + 2 files changed, 26 insertions(+), 0 deletions(-) diff --git a/modules/stream_filter/dash/mpd/SegmentTimeline.cpp b/modules/stream_filter/dash/mpd/SegmentTimeline.cpp index c18e537..f97aeae 100644 --- a/modules/stream_filter/dash/mpd/SegmentTimeline.cpp +++ b/modules/stream_filter/dash/mpd/SegmentTimeline.cpp @@ -26,6 +26,8 @@ #include <vlc_common.h> #include <vlc_arrays.h> +#include <iostream> + using namespace dash::mpd; SegmentTimeline::SegmentTimeline() : @@ -53,6 +55,28 @@ void dash::mpd::SegmentTimeline::addElement(dash::mpd::SegmentTimeline::Element this->elements.push_back( e ); } +const SegmentTimeline::Element* SegmentTimeline::getElement( mtime_t dts ) const +{ + if ( this->elements.size() == 0 ) + return NULL; + int64_t targetT = dts * this->timescale / 1000000; + targetT -= this->elements.front()->t; + + std::list<Element*>::const_iterator it = this->elements.begin(); + std::list<Element*>::const_iterator end = this->elements.end(); + const Element* res = NULL; + + while ( it != end ) + { + if ( (*it)->t > targetT ) + return res; + res = *it; + ++it; + } + std::cerr << "No more element to be used." << std::endl; + return NULL; +} + dash::mpd::SegmentTimeline::Element::Element() : r( 0 ) { diff --git a/modules/stream_filter/dash/mpd/SegmentTimeline.h b/modules/stream_filter/dash/mpd/SegmentTimeline.h index efc5db7..c7d5cde 100644 --- a/modules/stream_filter/dash/mpd/SegmentTimeline.h +++ b/modules/stream_filter/dash/mpd/SegmentTimeline.h @@ -27,6 +27,7 @@ #include <sys/types.h> #include <list> #include <stdint.h> +#include <vlc_common.h> namespace dash { @@ -47,6 +48,7 @@ namespace dash int getTimescale() const; void setTimescale( int timescale ); void addElement( Element* e ); + const Element* getElement( mtime_t dts ) const; private: int timescale; _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org http://mailman.videolan.org/listinfo/vlc-commits