vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Jul 31 16:15:27 2019 +0200| [6bd9d8e0b43741bf398244ab9564987fbf222fc1] | committer: Francois Cartegnie
demux: adaptive: provide full abstraction for demux_t > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6bd9d8e0b43741bf398244ab9564987fbf222fc1 --- modules/demux/adaptive/Streams.cpp | 4 ++-- modules/demux/adaptive/plumbing/Demuxer.cpp | 31 ++++++++++++++++++++--------- modules/demux/adaptive/plumbing/Demuxer.hpp | 15 ++++++++++---- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/modules/demux/adaptive/Streams.cpp b/modules/demux/adaptive/Streams.cpp index bff61f1088..0ccaec35b4 100644 --- a/modules/demux/adaptive/Streams.cpp +++ b/modules/demux/adaptive/Streams.cpp @@ -380,9 +380,9 @@ AbstractStream::buffering_status AbstractStream::doBufferize(vlc_tick_t nz_deadl /* need to read, demuxer still buffering, ... */ vlc_mutex_unlock(&lock); - int i_ret = demuxer->demux(nz_deadline); + Demuxer::Status demuxStatus = demuxer->demux(nz_deadline); vlc_mutex_lock(&lock); - if(i_ret != VLC_DEMUXER_SUCCESS) + if(demuxStatus != Demuxer::Status::STATUS_SUCCESS) { if(discontinuity || needrestart) { diff --git a/modules/demux/adaptive/plumbing/Demuxer.cpp b/modules/demux/adaptive/plumbing/Demuxer.cpp index 69776bfbb8..f194a6247e 100644 --- a/modules/demux/adaptive/plumbing/Demuxer.cpp +++ b/modules/demux/adaptive/plumbing/Demuxer.cpp @@ -76,6 +76,19 @@ bool AbstractDemuxer::needsRestartOnSeek() const return b_reinitsonseek; } +AbstractDemuxer::Status AbstractDemuxer::returnCode(int i_ret) +{ + switch(i_ret) + { + case VLC_DEMUXER_SUCCESS: + return Status::STATUS_SUCCESS; + case VLC_DEMUXER_EGENERIC: + return Status::STATUS_END_OF_FILE; + default: + return Status::STATUS_ERROR; + }; +} + MimeDemuxer::MimeDemuxer(vlc_object_t *p_obj_, const DemuxerFactoryInterface *factory_, es_out_t *out, AbstractSourceStream *source) @@ -148,10 +161,10 @@ void MimeDemuxer::drain() demuxer->drain(); } -int MimeDemuxer::demux(vlc_tick_t t) +AbstractDemuxer::Status MimeDemuxer::demux(vlc_tick_t t) { if(!demuxer) - return VLC_DEMUXER_EOF; + return Status::STATUS_END_OF_FILE; return demuxer->demux(t); } @@ -220,14 +233,14 @@ void Demuxer::drain() while(p_demux && demux_Demux(p_demux) == VLC_DEMUXER_SUCCESS); } -int Demuxer::demux(vlc_tick_t) +Demuxer::Status Demuxer::demux(vlc_tick_t) { if(!p_demux || b_eof) - return VLC_DEMUXER_EOF; + return Status::STATUS_END_OF_FILE; int i_ret = demux_Demux(p_demux); if(i_ret != VLC_DEMUXER_SUCCESS) b_eof = true; - return i_ret; + return returnCode(i_ret); } SlaveDemuxer::SlaveDemuxer(vlc_object_t *p_obj, const std::string &name, @@ -256,16 +269,16 @@ bool SlaveDemuxer::create() return false; } -int SlaveDemuxer::demux(vlc_tick_t nz_deadline) +AbstractDemuxer::Status SlaveDemuxer::demux(vlc_tick_t nz_deadline) { /* Always call with increment or buffering will get slow stuck */ vlc_tick_t i_next_demux_time = VLC_TICK_0 + nz_deadline + VLC_TICK_FROM_MS(250); if( demux_Control(p_demux, DEMUX_SET_NEXT_DEMUX_TIME, i_next_demux_time ) != VLC_SUCCESS ) { b_eof = true; - return VLC_DEMUXER_EOF; + return Status::STATUS_END_OF_FILE; } - int ret = Demuxer::demux(i_next_demux_time); + Status status = Demuxer::demux(i_next_demux_time); es_out_Control(p_es_out, ES_OUT_SET_GROUP_PCR, 0, i_next_demux_time); - return ret; + return status; } diff --git a/modules/demux/adaptive/plumbing/Demuxer.hpp b/modules/demux/adaptive/plumbing/Demuxer.hpp index b023715dbe..14218d7e38 100644 --- a/modules/demux/adaptive/plumbing/Demuxer.hpp +++ b/modules/demux/adaptive/plumbing/Demuxer.hpp @@ -32,9 +32,15 @@ namespace adaptive class AbstractDemuxer { public: + enum Status + { + STATUS_SUCCESS, + STATUS_ERROR, + STATUS_END_OF_FILE, + }; AbstractDemuxer(); virtual ~AbstractDemuxer(); - virtual int demux(vlc_tick_t) = 0; + virtual Status demux(vlc_tick_t) = 0; virtual void drain() = 0; virtual bool create() = 0; virtual void destroy() = 0; @@ -46,6 +52,7 @@ namespace adaptive void setRestartsOnEachSegment(bool); protected: + static Status returnCode(int); bool b_startsfromzero; bool b_reinitsonseek; bool b_alwaysrestarts; @@ -58,7 +65,7 @@ namespace adaptive MimeDemuxer(vlc_object_t *, const DemuxerFactoryInterface *, es_out_t *, AbstractSourceStream *); virtual ~MimeDemuxer(); - virtual int demux(vlc_tick_t); /* impl */ + virtual Status demux(vlc_tick_t); /* impl */ virtual void drain(); /* impl */ virtual bool create(); /* impl */ virtual void destroy(); /* impl */ @@ -76,7 +83,7 @@ namespace adaptive public: Demuxer(vlc_object_t *, const std::string &, es_out_t *, AbstractSourceStream *); virtual ~Demuxer(); - virtual int demux(vlc_tick_t); /* impl */ + virtual Status demux(vlc_tick_t); /* impl */ virtual void drain(); /* impl */ virtual bool create(); /* impl */ virtual void destroy(); /* impl */ @@ -96,7 +103,7 @@ namespace adaptive SlaveDemuxer(vlc_object_t *, const std::string &, es_out_t *, AbstractSourceStream *); virtual ~SlaveDemuxer(); virtual bool create(); /* reimpl */ - virtual int demux(vlc_tick_t); /* reimpl */ + virtual Status demux(vlc_tick_t); /* reimpl */ private: vlc_tick_t length; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
