vtprotocolplugins/VideoSource/inc/CVSMMFDataBuffer.h
changeset 0 ed9695c8bcbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtprotocolplugins/VideoSource/inc/CVSMMFDataBuffer.h	Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Video Source subsystem.
+*
+*/
+
+
+#ifndef CVSMMFDATABUFFER_H
+#define CVSMMFDATABUFFER_H
+
+//  INCLUDE FILES
+
+#include <mmfdatabuffer.h>
+
+// FORWARD DECLARATIONS
+
+class MFrameBuffer;
+class MCameraBuffer;
+
+/**
+*  API of data buffer that allows provider's buffer contents to
+*  be given to consumer without copying.
+*
+*  @lib videosource.lib
+*  @since 5.0
+*/
+class MVSMMFDataBuffer
+    {
+
+public:
+
+    /**
+    * Sets the ECAM frame buffer.
+    * @param "aFrameBuffer" MFrameBuffer pointer.
+    */
+    virtual void SetFrameBufferL( MFrameBuffer* aFrameBuffer ) = 0;
+
+	/**
+    * Sets the ECAM camera buffer.
+    * @param "aFrameBuffer" MFrameBuffer pointer.
+    */
+    virtual void SetFrameBufferL( MCameraBuffer* aCameraBuffer ) = 0;
+
+    /**
+    * Calls Release() for MFrameBuffer and sets aFrameBuffer to NULL.
+    */
+    virtual void ReleaseL() = 0;
+
+    /**
+    * Sets start offset and length of internal iPtr variable (when
+    * pointing to iData).
+    */
+    virtual void SetBufferOffset( TInt aOffset ) = 0;
+
+    /**
+    * Reallocates the max size in bytes.
+    * @param "aMaxBufferSize" New size in bytes.
+    * @exception Can leave with one of the system wide error codes.
+    */
+    virtual void ReAllocBufferL( TInt aMaxBufferSize ) = 0;
+
+    /**
+    * Checks whether buffer needs reset or not.
+    * @return ETrue if buffer needs reset, EFalse otherwise.
+    */
+    virtual TBool NeedsReset() const = 0;
+
+    /**
+    * Sets needs reset state.
+    * @param aNeedsReset New reset state.
+    */
+    virtual void SetNeedsReset( TBool aNeedsReset ) = 0;
+
+    /**
+    * Resets buffer (i.e. clears data).
+    */
+    virtual void Reset() = 0;
+
+    };
+
+/**
+*  Implementation of data buffer that allows provider's buffer contents to
+*  be given to consumer without copying.
+*
+*  @lib videosource.lib
+*/
+class CVSMMFDataBuffer : public CMMFDataBuffer, public MVSMMFDataBuffer
+    {
+    public: // new methods
+
+        /**
+        * Static factory function to create instance of this class.
+        * @exception Can leave with one of the system wide error codes.
+        * @return Pointer to new instance.
+        */
+        IMPORT_C static CVSMMFDataBuffer* NewL();
+
+        /**
+        * Static factory function to create instance of this class.
+        * @param "aMaxBufferSize" Buffer size
+        * @exception Can leave with one of the system wide error codes.
+        * @return Pointer to new instance.
+        */
+        IMPORT_C static CVSMMFDataBuffer* NewL( TInt aMaxBufferSize );
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CVSMMFDataBuffer();
+
+    public: // from CMMFDataBuffer
+
+        /**
+        * @see CMMFDataBuffer::Data
+        */
+        virtual TDes8& Data();
+
+        /**
+        * @see CMMFDataBuffer::Data
+        */
+        virtual const TDesC8& Data() const;
+
+        /**
+        * @see CMMFDataBuffer::SetStatus
+        */
+        virtual void SetStatus( TBufferStatus aStatus );
+
+        /**
+        * @see CMMFDataBuffer::SetRequestSizeL
+        */
+        virtual void SetRequestSizeL( TInt aSize );
+
+        /**
+        * @see CMMFDataBuffer::BufferSize
+        */
+        virtual TUint BufferSize() const;
+
+        /**
+        * @see CMMFDataBuffer::SetPosition
+        */
+        virtual void SetPosition( TUint aPosition );
+
+    public: // from MVSMMFDataBuffer
+
+        /**
+        * @see MVSMMFDataBuffer::SetFrameBufferL
+        */
+        void SetFrameBufferL( MFrameBuffer* aFrameBuffer );
+
+        /**
+        * @see MVSMMFDataBuffer::SetFrameBufferL
+        */
+        void SetFrameBufferL( MCameraBuffer* aCameraBuffer );
+
+        /**
+        * @see MVSMMFDataBuffer::ReleaseL
+        */
+        void ReleaseL();
+
+        /**
+        * @see MVSMMFDataBuffer::SetBufferOffset
+        */
+        void SetBufferOffset( TInt aOffset );
+
+        /**
+        * @see MVSMMFDataBuffer::ReAllocBufferL
+        */
+        void ReAllocBufferL( TInt aMaxBufferSize );
+
+        /**
+        * @see MVSMMFDataBuffer::NeedsReset
+        */
+        TBool NeedsReset() const;
+
+        /**
+        * @see MVSMMFDataBuffer::SetNeedsReset
+        */
+        void SetNeedsReset( TBool aNeedsReset );
+
+        /**
+        * @see MVSMMFDataBuffer::Reset
+        */
+        void Reset();
+
+
+    private:    // Constructors and destructor
+
+        /**
+        * Constructor.
+        */
+        CVSMMFDataBuffer();
+
+        /**
+        * 2nd phase constructor.
+        * @param "aMaxBufferSize" Buffer size in bytes.
+        */
+        void ConstructL( TInt aMaxBufferSize );
+
+    public: // Data
+
+    protected:  // Data
+
+    private:    // Data
+
+        // Pointer to ECAM buffer
+        MFrameBuffer* iFrameBuffer;
+
+        // Pointer to ECAM buffer
+        MCameraBuffer* iCameraBuffer;
+
+        // Pointer to data buffer ( n/a for ECAM )
+        TUint8* iData;
+
+        // TPtr8 pointing to iData or ECAM buffer data content
+        TPtr8 iPtr;
+
+        // Max buffer size ( n/a for ECAM )
+        TInt iMaxBufferSize;
+
+        // ETrue if buffers needs reset, EFalse otherwise
+        TBool iNeedsReset;
+
+        // ETrue if buffer is set, EFalse otherwise
+        TBool iIsBufferSet;
+
+    };
+
+#endif // CVSMMFDATABUFFER_H