vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Fri Oct 14 22:13:30 2016 +0200| [3742e056b1dd21479edb8b8ea4d56a34afa2903b] | committer: Francois Cartegnie
demux: adaptive: add support for group meta > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3742e056b1dd21479edb8b8ea4d56a34afa2903b --- modules/demux/adaptive/plumbing/CommandsQueue.cpp | 30 +++++++++++++++++++++++ modules/demux/adaptive/plumbing/CommandsQueue.hpp | 14 +++++++++++ 2 files changed, 44 insertions(+) diff --git a/modules/demux/adaptive/plumbing/CommandsQueue.cpp b/modules/demux/adaptive/plumbing/CommandsQueue.cpp index 140bc6a..26ac9aa 100644 --- a/modules/demux/adaptive/plumbing/CommandsQueue.cpp +++ b/modules/demux/adaptive/plumbing/CommandsQueue.cpp @@ -26,6 +26,7 @@ #include "FakeESOut.hpp" #include <vlc_es_out.h> #include <vlc_block.h> +#include <vlc_meta.h> #include <algorithm> using namespace adaptive; @@ -156,6 +157,24 @@ void EsOutControlResetPCRCommand::Execute( es_out_t * ) { } +EsOutMetaCommand::EsOutMetaCommand( int i_group, vlc_meta_t *p_meta ) : + AbstractCommand( ES_OUT_SET_GROUP_META ) +{ + group = i_group; + this->p_meta = p_meta; +} + +EsOutMetaCommand::~EsOutMetaCommand() +{ + if( p_meta ) + vlc_meta_Delete( p_meta ); +} + +void EsOutMetaCommand::Execute( es_out_t *out ) +{ + es_out_Control( out, ES_OUT_SET_GROUP_META, group, p_meta ); +} + /* * Commands Default Factory */ @@ -190,6 +209,17 @@ EsOutControlResetPCRCommand * CommandsFactory::creatEsOutControlResetPCRCommand( return new (std::nothrow) EsOutControlResetPCRCommand(); } +EsOutMetaCommand * CommandsFactory::createEsOutMetaCommand( int group, const vlc_meta_t *p_meta ) const +{ + vlc_meta_t *p_dup = vlc_meta_New(); + if( p_dup ) + { + vlc_meta_Merge( p_dup, p_meta ); + return new (std::nothrow) EsOutMetaCommand( group, p_dup ); + } + return NULL; +} + /* * Commands Queue management */ diff --git a/modules/demux/adaptive/plumbing/CommandsQueue.hpp b/modules/demux/adaptive/plumbing/CommandsQueue.hpp index d459978..f1b7811 100644 --- a/modules/demux/adaptive/plumbing/CommandsQueue.hpp +++ b/modules/demux/adaptive/plumbing/CommandsQueue.hpp @@ -119,6 +119,19 @@ namespace adaptive EsOutControlResetPCRCommand(); }; + class EsOutMetaCommand : public AbstractCommand + { + friend class CommandsFactory; + public: + virtual void Execute( es_out_t *out ); + + protected: + EsOutMetaCommand( int, vlc_meta_t * ); + virtual ~EsOutMetaCommand(); + int group; + vlc_meta_t *p_meta; + }; + /* Factory so we can alter behaviour and filter on execution */ class CommandsFactory { @@ -130,6 +143,7 @@ namespace adaptive virtual EsOutControlPCRCommand * createEsOutControlPCRCommand( int, mtime_t ) const; virtual EsOutControlResetPCRCommand * creatEsOutControlResetPCRCommand() const; virtual EsOutDestroyCommand * createEsOutDestroyCommand() const; + virtual EsOutMetaCommand * createEsOutMetaCommand( int, const vlc_meta_t * ) const; }; /* Queuing for doing all the stuff in order */ _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits