Introduce new experimental class MediaStreamer

This commit is contained in:
Dario Casalinuovo 2017-05-04 13:57:31 +02:00
parent e62e979e60
commit dfecb37aee
2 changed files with 83 additions and 0 deletions

View File

@ -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 <Url.h>
#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

View File

@ -0,0 +1,47 @@
/*
* Copyright 2017, Dario Casalinuovo
* All rights reserved. Distributed under the terms of the MIT license.
*/
#include "MediaStreamer.h"
#include <stdio.h>
#include <string.h>
#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);
}