xref: /haiku/headers/private/media/StreamerPlugin.h (revision 3c08adef21129761f27ae654a1c5d1705786691a)
1 #ifndef _STREAMER_PLUGIN_H
2 #define _STREAMER_PLUGIN_H
3 
4 
5 #include <MediaIO.h>
6 #include <MediaTrack.h>
7 #include <Referenceable.h>
8 #include <Url.h>
9 
10 #include "MediaPlugin.h"
11 
12 
13 namespace BPrivate { namespace media {
14 
15 class PluginManager;
16 
17 class Streamer {
18 public:
19 								Streamer();
20 	virtual						~Streamer();
21 
22 	virtual status_t			Sniff(const BUrl& url, BDataIO** source) = 0;
23 private:
24 	virtual void				_ReservedStreamer1();
25 	virtual void				_ReservedStreamer2();
26 	virtual void				_ReservedStreamer3();
27 	virtual void				_ReservedStreamer4();
28 	virtual void				_ReservedStreamer5();
29 
30 			MediaPlugin*		fMediaPlugin;
31 			BReferenceable		fReference;
32 			uint32				fReserved[5];
33 
34 	// needed for plug-in reference count management
35 	friend class PluginManager;
36 };
37 
38 
39 class StreamerPlugin : public virtual MediaPlugin {
40 public:
41 	virtual	Streamer*			NewStreamer() = 0;
42 };
43 
44 } } // namespace BPrivate::media
45 
46 using namespace BPrivate::media;
47 
48 
49 #endif // _STREAMER_PLUGIN_H
50