1/* 2 * Copyright 2004-2008, Fran��ois Revol, <revol@free.fr>. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _CAM_FILTER_INTERFACE_H 6#define _CAM_FILTER_INTERFACE_H 7 8#include <kernel/OS.h> 9#include <support/DataIO.h> 10#include <interface/Rect.h> 11class CamDevice; 12 13class CamFilterInterface : public BPositionIO { 14public: 15 CamFilterInterface(CamDevice *device); 16virtual ~CamFilterInterface(); 17 18 // filter chain handling, should be accessed with device locked 19 // stack up this filter on top of 'to' 20status_t ChainFilter(CamFilterInterface *to); 21 // break the chain 22status_t DetachFilter(CamFilterInterface *from); 23 // accessor (next is actually processing data before self) 24CamFilterInterface *ChainFilter(); 25 26 27 // BPositionIO interface 28virtual ssize_t Read(void *buffer, size_t size); 29virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size); 30 31virtual ssize_t Write(const void *buffer, size_t size); 32virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size); 33 34virtual off_t Seek(off_t position, uint32 seek_mode); 35virtual off_t Position() const; 36virtual status_t SetSize(off_t size); 37 // size of the buffer required for reading a whole frame 38virtual size_t FrameSize(); 39 40 // frame handling 41virtual status_t WaitFrame(bigtime_t timeout); 42virtual status_t DropFrame(); 43 // video settings propagation 44virtual status_t SetVideoFrame(BRect frame); 45 46 47protected: 48 49CamDevice *fDevice; 50CamFilterInterface *fNextOfKin; 51BRect fVideoFrame; 52}; 53 54 55#endif /* _CAM_FILTER_INTERFACE_H */ 56