diff --git a/headers/private/media/MediaStreamer.h b/headers/private/media/MediaStreamer.h new file mode 100644 index 0000000000..71de9f673d --- /dev/null +++ b/headers/private/media/MediaStreamer.h @@ -0,0 +1,36 @@ +/* + * Copyright 2017, Dario Casalinuovo. All rights reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _MEDIA_STREAMER_H +#define _MEDIA_STREAMER_H + + +#include + +#include "StreamerPlugin.h" + + +namespace BPrivate { +namespace media { + + +class MediaStreamer { +public: + MediaStreamer(BUrl url); + ~MediaStreamer(); + + status_t CreateAdapter(BDataIO** adapter); + +private: + BUrl fUrl; + Streamer* fStreamer; +}; + + +}; // namespace media +}; // namespace BPrivate + +using namespace BPrivate::media; + +#endif diff --git a/src/kits/media/MediaStreamer.cpp b/src/kits/media/MediaStreamer.cpp new file mode 100644 index 0000000000..440472f105 --- /dev/null +++ b/src/kits/media/MediaStreamer.cpp @@ -0,0 +1,47 @@ +/* + * Copyright 2017, Dario Casalinuovo + * All rights reserved. Distributed under the terms of the MIT license. + */ + + +#include "MediaStreamer.h" + +#include +#include + +#include "debug.h" + +#include "PluginManager.h" + + +MediaStreamer::MediaStreamer(BUrl url) + : + fStreamer(NULL) +{ + CALLED(); + + fUrl = url; +} + + +MediaStreamer::~MediaStreamer() +{ + CALLED(); + + if (fStreamer != NULL) + gPluginManager.DestroyStreamer(fStreamer); +} + + +status_t +MediaStreamer::CreateAdapter(BDataIO** adapter) +{ + CALLED(); + + // NOTE: Consider splitting the streamer creation and + // sniff in PluginManager. + if (fStreamer != NULL) + gPluginManager.DestroyStreamer(fStreamer); + + return gPluginManager.CreateStreamer(&fStreamer, fUrl, adapter); +}