1
2#include <BufferConsumer.h>
3#include <MediaEventLooper.h>
4
5
6class ConsumerNode : public virtual BBufferConsumer, BMediaEventLooper {
7public:
8								ConsumerNode();
9	virtual						~ConsumerNode();
10
11protected:
12	/* functionality of BMediaNode */
13	virtual	void				NodeRegistered();
14
15	/* BBufferConsumer */
16	virtual	status_t			AcceptFormat(const media_destination& dest,
17									media_format* format);
18	virtual	status_t			GetNextInput(int32* cookie,
19									media_input* _input);
20	virtual	void				DisposeInputCookie(int32 cookie);
21	virtual	void				BufferReceived(BBuffer* buffer);
22	virtual	void				ProducerDataStatus(
23									const media_destination& forWhom,
24									int32 status, bigtime_t atPerformanceTime);
25	virtual	status_t			GetLatencyFor(const media_destination& forWhom,
26									bigtime_t* _latency,
27									media_node_id* _timesource);
28	virtual	status_t			Connected(const media_source& producer,
29									const media_destination& where,
30									const media_format& withFormat,
31									media_input* _input);
32	virtual	void				Disconnected(const media_source& producer,
33									const media_destination& where);
34	virtual	status_t			FormatChanged(const media_source& producer,
35									const media_destination& consumer,
36									int32 changeTag,
37									const media_format& format);
38
39	virtual status_t			HandleMessage(int32 message,
40									const void* data, size_t size);
41
42	virtual status_t			SeekTagRequested(
43									const media_destination& destination,
44									bigtime_t targetTime, uint32 flags,
45									media_seek_tag* _seekTag,
46									bigtime_t* _taggedTime, uint32* _flags);
47
48	/* from BMediaNode */
49	virtual	BMediaAddOn*		AddOn(int32* internalID) const;
50
51	/* from BMediaEventLooper */
52	virtual void				HandleEvent(const media_timed_event* event,
53							 		bigtime_t lateness,
54							 		bool realTimeEvent = false);
55
56	/* our own functionality */
57	void InitializeInput();
58
59private:
60	media_input fInput;
61};
62