From b1ccc0586460a8fa2d0738cba2aedb787ba6099d Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Fri, 11 Mar 2016 17:49:40 +0100 Subject: [PATCH] AddOnManager: Initial support for streamer addons --- src/kits/media/AddOnManager.cpp | 23 +++++++++++++++++++++++ src/kits/media/AddOnManager.h | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/src/kits/media/AddOnManager.cpp b/src/kits/media/AddOnManager.cpp index caeb5e2e7c..7b412eeab3 100644 --- a/src/kits/media/AddOnManager.cpp +++ b/src/kits/media/AddOnManager.cpp @@ -354,6 +354,10 @@ AddOnManager::_RegisterAddOn(const entry_ref& ref) if (encoder != NULL) _RegisterEncoder(encoder, ref); + StreamerPlugin* streamer = dynamic_cast(plugin); + if (streamer != NULL) + _RegisterStreamer(streamer, ref); + delete plugin; return B_OK; @@ -549,6 +553,25 @@ AddOnManager::_RegisterEncoder(EncoderPlugin* plugin, const entry_ref& ref) } +void +AddOnManager::_RegisterStreamer(StreamerPlugin* streamer, const entry_ref& ref) +{ + BAutolock locker(fLock); + + streamer_info* pInfo; + for (fStreamerList.Rewind(); fStreamerList.GetNext(&pInfo);) { + if (!strcmp(pInfo->ref.name, ref.name)) { + // We already know this streamer + return; + } + } + + streamer_info info; + info.ref = ref; + fStreamerList.Insert(info); +} + + bool AddOnManager::_FindDecoder(const media_format& format, const BPath& path, entry_ref* _decoderRef) diff --git a/src/kits/media/AddOnManager.h b/src/kits/media/AddOnManager.h index 1b4180a128..1fa428c0bf 100644 --- a/src/kits/media/AddOnManager.h +++ b/src/kits/media/AddOnManager.h @@ -22,6 +22,7 @@ #include "DecoderPlugin.h" #include "EncoderPlugin.h" #include "ReaderPlugin.h" +#include "StreamerPlugin.h" #include "WriterPlugin.h" @@ -73,6 +74,9 @@ private: void _RegisterEncoder(EncoderPlugin* encoder, const entry_ref& ref); + void _RegisterStreamer(StreamerPlugin* streamer, + const entry_ref& ref); + bool _FindDecoder(const media_format& format, const BPath& path, entry_ref* _decoderRef); @@ -105,12 +109,16 @@ private: media_format intputFormat; media_format outputFormat; }; + struct streamer_info { + entry_ref ref; + }; BLocker fLock; List fReaderList; List fWriterList; List fDecoderList; List fEncoderList; + List fStreamerList; List fWriterFileFormats;