1/* 2 * Copyright 2004-2008, François Revol, <revol@free.fr>. 3 * Distributed under the terms of the MIT License. 4 */ 5 6#include "CamBufferedFilterInterface.h" 7#include "CamDevice.h" 8#include "CamDebug.h" 9 10 11CamBufferedFilterInterface::CamBufferedFilterInterface(CamDevice *device, bool allowWrite) 12 : CamFilterInterface(device), 13 fAllowWrite(allowWrite) 14{ 15} 16 17 18CamBufferedFilterInterface::~CamBufferedFilterInterface() 19{ 20} 21 22 23ssize_t 24CamBufferedFilterInterface::Read(void *buffer, size_t size) 25{ 26 return fInternalBuffer.Read(buffer, size); 27} 28 29 30ssize_t 31CamBufferedFilterInterface::ReadAt(off_t pos, void *buffer, size_t size) 32{ 33 return fInternalBuffer.ReadAt(pos, buffer, size); 34} 35 36 37ssize_t 38CamBufferedFilterInterface::Write(const void *buffer, size_t size) 39{ 40 if (!fAllowWrite) 41 return B_READ_ONLY_DEVICE; 42 return fInternalBuffer.Write(buffer, size); 43} 44 45 46ssize_t 47CamBufferedFilterInterface::WriteAt(off_t pos, const void *buffer, size_t size) 48{ 49 if (!fAllowWrite) 50 return B_READ_ONLY_DEVICE; 51 return fInternalBuffer.WriteAt(pos, buffer, size); 52} 53 54 55off_t 56CamBufferedFilterInterface::Seek(off_t position, uint32 seek_mode) 57{ 58 return fInternalBuffer.Seek(position, seek_mode); 59} 60 61 62off_t 63CamBufferedFilterInterface::Position() const 64{ 65 return fInternalBuffer.Position(); 66} 67 68 69status_t 70CamBufferedFilterInterface::SetSize(off_t size) 71{ 72 if (!fAllowWrite) 73 return B_READ_ONLY_DEVICE; 74 return fInternalBuffer.SetSize(size); 75} 76 77 78size_t 79CamBufferedFilterInterface::FrameSize() 80{ 81 return fInternalBuffer.BufferLength(); // XXX: really ?? 82 return 0; 83} 84 85 86status_t 87CamBufferedFilterInterface::DropFrame() 88{ 89 fInternalBuffer.SetSize(0LL); 90 if (fNextOfKin) 91 return fNextOfKin->DropFrame(); 92 return B_OK; 93} 94 95 96status_t 97CamBufferedFilterInterface::SetVideoFrame(BRect frame) 98{ 99 fVideoFrame = frame; 100 fInternalBuffer.SetSize(FrameSize()); // XXX: really ?? 101 if (fNextOfKin) 102 return fNextOfKin->SetVideoFrame(frame); 103 return B_OK; 104} 105