152a38012Sejakowatz
252a38012Sejakowatz#include <BufferConsumer.h>
352a38012Sejakowatz#include <MediaEventLooper.h>
452a38012Sejakowatz
59ae0991aSAxel Dörfler
69ae0991aSAxel Dörflerclass ConsumerNode : public virtual BBufferConsumer, BMediaEventLooper {
752a38012Sejakowatzpublic:
89ae0991aSAxel Dörfler								ConsumerNode();
99ae0991aSAxel Dörfler	virtual						~ConsumerNode();
1052a38012Sejakowatz
1152a38012Sejakowatzprotected:
1252a38012Sejakowatz	/* functionality of BMediaNode */
139ae0991aSAxel Dörfler	virtual	void				NodeRegistered();
1452a38012Sejakowatz
159ae0991aSAxel Dörfler	/* BBufferConsumer */
169ae0991aSAxel Dörfler	virtual	status_t			AcceptFormat(const media_destination& dest,
179ae0991aSAxel Dörfler									media_format* format);
189ae0991aSAxel Dörfler	virtual	status_t			GetNextInput(int32* cookie,
199ae0991aSAxel Dörfler									media_input* _input);
209ae0991aSAxel Dörfler	virtual	void				DisposeInputCookie(int32 cookie);
219ae0991aSAxel Dörfler	virtual	void				BufferReceived(BBuffer* buffer);
229ae0991aSAxel Dörfler	virtual	void				ProducerDataStatus(
239ae0991aSAxel Dörfler									const media_destination& forWhom,
249ae0991aSAxel Dörfler									int32 status, bigtime_t atPerformanceTime);
259ae0991aSAxel Dörfler	virtual	status_t			GetLatencyFor(const media_destination& forWhom,
269ae0991aSAxel Dörfler									bigtime_t* _latency,
279ae0991aSAxel Dörfler									media_node_id* _timesource);
289ae0991aSAxel Dörfler	virtual	status_t			Connected(const media_source& producer,
299ae0991aSAxel Dörfler									const media_destination& where,
309ae0991aSAxel Dörfler									const media_format& withFormat,
319ae0991aSAxel Dörfler									media_input* _input);
329ae0991aSAxel Dörfler	virtual	void				Disconnected(const media_source& producer,
339ae0991aSAxel Dörfler									const media_destination& where);
349ae0991aSAxel Dörfler	virtual	status_t			FormatChanged(const media_source& producer,
359ae0991aSAxel Dörfler									const media_destination& consumer,
369ae0991aSAxel Dörfler									int32 changeTag,
379ae0991aSAxel Dörfler									const media_format& format);
389ae0991aSAxel Dörfler
399ae0991aSAxel Dörfler	virtual status_t			HandleMessage(int32 message,
409ae0991aSAxel Dörfler									const void* data, size_t size);
419ae0991aSAxel Dörfler
429ae0991aSAxel Dörfler	virtual status_t			SeekTagRequested(
439ae0991aSAxel Dörfler									const media_destination& destination,
449ae0991aSAxel Dörfler									bigtime_t targetTime, uint32 flags,
459ae0991aSAxel Dörfler									media_seek_tag* _seekTag,
469ae0991aSAxel Dörfler									bigtime_t* _taggedTime, uint32* _flags);
479ae0991aSAxel Dörfler
489ae0991aSAxel Dörfler	/* from BMediaNode */
499ae0991aSAxel Dörfler	virtual	BMediaAddOn*		AddOn(int32* internalID) const;
509ae0991aSAxel Dörfler
519ae0991aSAxel Dörfler	/* from BMediaEventLooper */
529ae0991aSAxel Dörfler	virtual void				HandleEvent(const media_timed_event* event,
539ae0991aSAxel Dörfler							 		bigtime_t lateness,
549ae0991aSAxel Dörfler							 		bool realTimeEvent = false);
559ae0991aSAxel Dörfler
569ae0991aSAxel Dörfler	/* our own functionality */
579ae0991aSAxel Dörfler	void InitializeInput();
589ae0991aSAxel Dörfler
599ae0991aSAxel Dörflerprivate:
609ae0991aSAxel Dörfler	media_input fInput;
6152a38012Sejakowatz};
62