xref: /haiku/src/apps/mediaplayer/supplier/ProxyVideoSupplier.h (revision 818577b203870d5b3625514a99c35726f42cbde3)
10fc56ed5SStephan Aßmus /*
2*818577b2SStephan Aßmus  * Copyright 2008 Stephan Aßmus <superstippi@gmx.de>
30fc56ed5SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT licensce.
40fc56ed5SStephan Aßmus  */
50fc56ed5SStephan Aßmus #ifndef PROXY_VIDEO_SUPPLIER_H
60fc56ed5SStephan Aßmus #define PROXY_VIDEO_SUPPLIER_H
70fc56ed5SStephan Aßmus 
84aa9ff58SStephan Aßmus #include <Locker.h>
90fc56ed5SStephan Aßmus 
100fc56ed5SStephan Aßmus #include "VideoSupplier.h"
110fc56ed5SStephan Aßmus 
120fc56ed5SStephan Aßmus 
130fc56ed5SStephan Aßmus class VideoTrackSupplier;
140fc56ed5SStephan Aßmus 
150fc56ed5SStephan Aßmus 
160fc56ed5SStephan Aßmus class ProxyVideoSupplier : public VideoSupplier {
170fc56ed5SStephan Aßmus public:
180fc56ed5SStephan Aßmus 								ProxyVideoSupplier();
190fc56ed5SStephan Aßmus 	virtual						~ProxyVideoSupplier();
200fc56ed5SStephan Aßmus 
210fc56ed5SStephan Aßmus 	virtual	status_t			FillBuffer(int64 startFrame, void* buffer,
22*818577b2SStephan Aßmus 									const media_raw_video_format& format,
230fc56ed5SStephan Aßmus 									bool& wasCached);
240fc56ed5SStephan Aßmus 
250fc56ed5SStephan Aßmus 	virtual	void				DeleteCaches();
260fc56ed5SStephan Aßmus 
270fc56ed5SStephan Aßmus 			void				SetSupplier(VideoTrackSupplier* supplier);
280fc56ed5SStephan Aßmus 
290fc56ed5SStephan Aßmus private:
304aa9ff58SStephan Aßmus 			BLocker				fSupplierLock;
314aa9ff58SStephan Aßmus 
320fc56ed5SStephan Aßmus 			VideoTrackSupplier*	fSupplier;
33*818577b2SStephan Aßmus 
34*818577b2SStephan Aßmus 			void*				fCachedFrame;
35*818577b2SStephan Aßmus 			size_t				fCachedFrameSize;
36*818577b2SStephan Aßmus 			bool				fCachedFrameValid;
37*818577b2SStephan Aßmus 			bool				fUseFrameCaching;
380fc56ed5SStephan Aßmus };
390fc56ed5SStephan Aßmus 
400fc56ed5SStephan Aßmus #endif	// PROXY_VIDEO_SUPPLIER_H
41