1/*
2 * Copyright 2004-2008, François Revol, <revol@free.fr>.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _CAM_BUFFERED_FILTER_INTERFACE_H
6#define _CAM_BUFFERED_FILTER_INTERFACE_H
7
8#include <kernel/OS.h>
9#include <support/DataIO.h>
10#include <interface/Rect.h>
11#include "CamFilterInterface.h"
12
13class CamBufferedFilterInterface : public CamFilterInterface {
14public:
15			CamBufferedFilterInterface(CamDevice *device, bool allowWrite);
16virtual 	~CamBufferedFilterInterface();
17
18	// BPositionIO interface
19virtual ssize_t		Read(void *buffer, size_t size);
20virtual ssize_t		ReadAt(off_t pos, void *buffer, size_t size);
21
22virtual ssize_t		Write(const void *buffer, size_t size);
23virtual ssize_t		WriteAt(off_t pos, const void *buffer, size_t size);
24
25virtual off_t		Seek(off_t position, uint32 seek_mode);
26virtual off_t		Position() const;
27virtual status_t	SetSize(off_t size);
28	// size of the buffer required for reading a whole frame
29virtual size_t		FrameSize();
30
31	// frame handling
32virtual status_t	DropFrame();
33	// video settings propagation
34virtual status_t	SetVideoFrame(BRect frame);
35
36
37protected:
38bool			fAllowWrite;
39BMallocIO		fInternalBuffer;
40};
41
42
43#endif /* _CAM_BUFFERED_FILTER_INTERFACE_H */
44