diff --git a/modules/demux/adaptive/SegmentTracker.cpp b/modules/demux/adaptive/SegmentTracker.cpp index be7554aee15380e24aabc735629f168f5a16fae7..8b2ab7c79e50ff594b8a91eef7a56cbf040b4545 100644 --- a/modules/demux/adaptive/SegmentTracker.cpp +++ b/modules/demux/adaptive/SegmentTracker.cpp @@ -117,6 +117,11 @@ StreamFormat SegmentTracker::getCurrentFormat() const return StreamFormat(); } +const Role & SegmentTracker::getStreamRole() const +{ + return adaptationSet->getRole(); +} + bool SegmentTracker::segmentsListReady() const { BaseRepresentation *rep = curRepresentation; diff --git a/modules/demux/adaptive/SegmentTracker.hpp b/modules/demux/adaptive/SegmentTracker.hpp index 03dafa2e5348e70d58d6f23fe9836988bee143c9..925b265e28725818428dc5e8fc6bce709f7966c8 100644 --- a/modules/demux/adaptive/SegmentTracker.hpp +++ b/modules/demux/adaptive/SegmentTracker.hpp @@ -21,6 +21,7 @@ #define SEGMENTTRACKER_HPP #include "StreamFormat.hpp" +#include "playlist/Role.hpp" #include <vlc_common.h> #include <list> @@ -118,6 +119,7 @@ namespace adaptive ~SegmentTracker(); StreamFormat getCurrentFormat() const; + const Role & getStreamRole() const; bool segmentsListReady() const; void reset(); SegmentChunk* getNextChunk(bool, AbstractConnectionManager *); diff --git a/modules/demux/adaptive/Streams.cpp b/modules/demux/adaptive/Streams.cpp index dda8c101f6bc81fe4f4d6ff6dae9711505a3a130..bcc1f6aa96fb5437df7e0a52fbef4ab8211f749e 100644 --- a/modules/demux/adaptive/Streams.cpp +++ b/modules/demux/adaptive/Streams.cpp @@ -79,6 +79,11 @@ bool AbstractStream::init(const StreamFormat &format_, SegmentTracker *tracker, { /* All successfull */ fakeesout->setExtraInfoProvider( this ); + const Role & streamRole = tracker->getStreamRole(); + if(streamRole.isDefault() && streamRole.autoSelectable()) + fakeesout->setPriority(ES_PRIORITY_MIN + 10); + else if(!streamRole.autoSelectable()) + fakeesout->setPriority(ES_PRIORITY_NOT_DEFAULTABLE); format = format_; segmentTracker = tracker; segmentTracker->registerListener(this);