--- a/vtprotocolplugins/DisplaySink/inc/CVtImageConverter.h Tue Jan 26 12:01:21 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,638 +0,0 @@
-/*
-* Copyright (c) 2004 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: Image conversion library for VideoTelephony.
-*
-*/
-
-
-
-
-
-#ifndef CVTIMAGECONVERTER_H
-#define CVTIMAGECONVERTER_H
-
-// INCLUDE FILES
-
-#include <e32base.h>
-#include <gdi.h>
-
-// CLASS FORWARDS
-
-class CFbsBitmap;
-class CVTYUVFbsBitmapConverter;
-class CVSFbsBitmapIYUVConverter;
-
-// DATA TYPES
-
-typedef TRgb ( *TVSColorReadFunc ) ( TAny*& );
-
-// CLASS DECLARATIONS
-
-/**
-* Base class for all YUV to CFbsBitmap converters.
-*
-* @lib VTImageConverter.lib
-*/
-class CVTYUVFbsBitmapConverter : public CBase
- {
- public: // Constructors and destructor
-
- /**
- * C++ destructor.
- */
- IMPORT_C ~CVTYUVFbsBitmapConverter();
-
- public: // New functions
-
- /**
- * Starts image conversion from YUV to CFbsBitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C virtual void ProcessL();
-
- /**
- * Sets size of the source YUV image in pixels. This must be implemented
- * in derived classes.
- * @param "aSize" Size of source YUV image in pixels.
- * @exception Can leave with one of the system wide error codes.
- */
- virtual void SetSourceSizeL( const TSize& aSize ) = 0;
-
- /**
- * Sets source YUV image data. This method must be implemented in derived
- * classes.
- * @param "aSourceData" 8-bit descriptor containing the YUV data. As
- * data is referenced and not copied, given reference must be still
- * valid when ProcessL() is called.
- * @exception Can leave with one of the system wide error codes.
- */
- virtual void SetSourceL( const TDesC8& aSourceData ) = 0;
-
- /**
- * Sets size of the source YUV image in pixels and image data.
- * This method must be implemented in derived classes.
- * @param "aSize" Size of source YUV image in pixels.
- * @param "aSourceData" 8-bit descriptor containing the YUV data.
- * As data is referenced and not copied, given reference must be still
- * valid when ProcessL() is called.
- * @exception Can leave with one of the system wide error codes.
- */
- virtual void SetSourceL(
- const TSize& aSize,
- const TDesC8& aSourceData ) = 0;
-
- /**
- * Sets destination bitmap into which conversion will be made.
- * @param "aDestinationBitmap" Reference to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C virtual void SetDestinationL(
- const CFbsBitmap& aDestinationBitmap );
-
- /**
- * Sets destination bitmap into which conversion will be made.
- * Bitmap is given as handle to existing bitmap.
- * @param "aHandle" Handle to existing bitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C virtual void SetDestinationL( TInt aHandle );
-
- public: // Functions from base classes
-
- protected: // New functions
-
- /**
- * Updates iY, iU and iV member variables. Must be implemented in
- * derived classes.
- * @param "aSourceData" 8-bit descriptor to source YUV data.
- */
- virtual void SetYUVPtrs( const TDesC8& aSourceData ) = 0;
-
- /**
- * Second phase constructor.
- * @param "aBitmapHandle" Handle to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- virtual void ConstructL( TInt aBitmapHandle );
-
- /**
- * Second phase constructor that will be called when destination is
- * changed.
- * @param "aBitmapHandle" Handle to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- virtual void ReConstructL( TInt aBitmapHandle );
-
- /**
- * Updates internal variables.
- * @exception Can leave with one of the system wide error codes.
- */
- virtual void SizeUpdateL();
-
- /**
- * C++ constructor.
- * @param "aSourceSize" Source size in pixels.
- */
- CVTYUVFbsBitmapConverter( const TSize& aSourceSize );
-
- /**
- * Returns source size in pixels.
- * @return Source size in pixels, as constant reference.
- */
- inline const TSize& SourceSize() const;
-
- /**
- * Returns source size in pixels.
- * @return Source size in pixels, as reference.
- */
- inline TSize& SourceSize();
-
- /**
- * Returns destination size in pixels.
- * @return Destination size in pixels, as constant reference.
- */
- inline const TSize& DestinationSize() const;
-
- /**
- * Returns destination size in pixels.
- * @return Destination size in pixels, as reference.
- */
- inline TSize& DestinationSize();
-
- /**
- * Main process loop for Color4K mode. This must be implemented in
- * derived classes.
- * @param "aWriteFunction" Pointer to function that writes one pixel to
- * destination.
- */
- virtual void DoProcess4K() = 0;
-
- /**
- * Main process loop for Color64K mode. This must be implemented in
- * derived classes.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- virtual void DoProcess64K() = 0;
-
- /**
- * Main process loop for Color16M mode. This must be implemented in
- * derived classes.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- virtual void DoProcess16M() = 0;
-
- /**
- * Main process loop for Color16MU mode. This must be implemented in
- * derived classes.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- virtual void DoProcess16MU16MA() = 0;
-
- protected: // Functions from base classes
-
- private: // New functions
-
- /**
- * C++ default constructor.
- */
- CVTYUVFbsBitmapConverter();
-
- private: // Functions from base classes
-
- public: // Data
-
- protected: // Data
-
- // Table of coefficients for EColor4K
- static const TUint8 COFF_TBL_4K[ 80 ];
-
- // Table of coefficients for EColor64K
- static const TUint8 COFF_TBL_64K[ 220 ];
-
- // Table of coefficients for EColor16M
- static const TUint8 COFF_TBL_16M[ 528 ];
-
- // Source size in pixels.
- TSize iSourceSize;
-
- // Target size in pixels.
- TSize iDestinationSize;
-
- // Pointer to destination bitmap.
- CFbsBitmap* iDestination; // owned, duplicate
-
- // Pointer descriptor that points to Y data of the YUV image.
- const TUint8* iY;
-
- // Pointer descriptor that points to Cr (U) data of the YUV image.
- const TUint8* iU;
-
- // Pointer descriptor that points to Cb (V) data of the YUV image.
- const TUint8* iV;
-
- // Horizontal skip real value. After every pixel this valus is added
- // to X index in conversion loop.
- TReal32 iVSkipReal;
-
- // Vertical skip real value. After every pixel this valus is added
- // to Y index in conversion loop.
- TReal32 iHSkipReal;
-
- private: // Data
- };
-
-/**
-* Base class for YUV 4:2:0 planar image to CFbsBitmap converters.
-*
-* @lib VTImageConverter.lib
-*/
-class CVTYUVPlanarFbsBitmapConverter : public CVTYUVFbsBitmapConverter
- {
- public: // New functions
-
- public: // Functions from base classes
-
- /**
- * Sets size of the source YUV image in pixels.
- * @param "aSize" Size of source YUV image in pixels.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C void SetSourceSizeL( const TSize& aSize );
-
- /**
- * Sets source YUV image data.
- * @param "aSourceData" 8-bit descriptor containing the YUV data. As
- * data is referenced and
- * not copied, given reference must be still valid when ProcessL() is
- * called.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C void SetSourceL( const TDesC8& aSourceData );
-
- /**
- * Sets size of the source YUV image in pixels and image data. This
- * method must be
- * implemented in derived classes.
- * @param "aSize" Size of source YUV image in pixels.
- * @param "aSourceData" 8-bit descriptor containing the YUV data. As
- * data is referenced and
- * not copied, given reference must be still valid when ProcessL() is
- * called.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C void SetSourceL(
- const TSize& aSize,
- const TDesC8& aSourceData );
-
- protected: // Constructors and destructor
-
- /**
- * C++ constructor.
- * @param "aSourceSize" Source size in pixels.
- */
- CVTYUVPlanarFbsBitmapConverter( const TSize& aSourceSize );
-
- protected: // New functions
-
- protected: // Functions from base classes
-
- /**
- * Main process loop for Color4K mode.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess4K();
-
- /**
- * Main process loop for Color4K mode when scaling is not required.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess4KNoScale();
-
- /**
- * Main process loop for Color64K mode.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess64K();
-
- /**
- * Main process loop for Color64K mode when scaling is not required.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess64KNoScale();
-
- /**
- * Main process loop for Color16M mode.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess16M();
-
- /**
- * Main process loop for Color16M mode when scaling is not required.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess16MNoScale();
-
- /**
- * Main process loop for Color16MU and Color16MA modes.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess16MU16MA();
-
- /**
- * Main process loop for Color16MU and Color16MA modes when scaling is
- * not required.
- * @param "aWriteFunction" Pointer to function that writes one pixel
- * to destination.
- */
- void DoProcess16MU16MANoScale();
-
- private: // New functions
-
- /**
- * C++ default constructor.
- */
- CVTYUVPlanarFbsBitmapConverter();
-
- private: // Functions from base classes
- };
-
-/**
-* FourCC IYUV image to CFbsBitmap converter (see IYUV description below).
-*
-* All Y samples are found first in memory as an array of unsigned char
-* (possibly with a larger stride for memory alignment), followed immediately
-* by all Cr (U) samples (with half the stride of the Y lines, and half the
-* number of lines), then followed immediately by all Cb (V) samples in a
-* similar fashion.
-*
-* @lib VTImageConverter.lib
-*/
-class CVTIYUVFbsBitmapConverter : public CVTYUVPlanarFbsBitmapConverter
- {
- public: // Constructors and destructor
-
- /**
- * Static factory function to create instance of this class.
- * @param "aSourceSize" Size of source image in pixels.
- * @param "aDestination" Reference to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- * @return Pointer to newly created instance.
- */
- IMPORT_C static CVTIYUVFbsBitmapConverter* NewL(
- const TSize& aSourceSize,
- const CFbsBitmap& aDestination );
-
- /**
- * Static factory function to create instance of this class.
- * @param "aSourceSize" Size of source image in pixels.
- * @param "aBitmapHandle" Handle to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- * @return Pointer to newly created instance.
- */
- IMPORT_C static CVTIYUVFbsBitmapConverter* NewL(
- const TSize& aSourceSize,
- TInt aBitmapHandle );
-
- public: // New functions
-
- public: // Functions from base classes
-
- protected: // New functions
-
- protected: // Functions from base classes
-
- private: // New functions
-
- private: // Functions from base classes
-
- /**
- * Updates iY, iU and iV member variables.
- * @param "aSourceData" 8-bit descriptor to source YUV data.
- */
- void SetYUVPtrs( const TDesC8& aSourceData );
-
- private: // Constructors and destructor
-
- /**
- * C++ destructor.
- * @param "aSourceSize" Source size in pixels.
- */
- CVTIYUVFbsBitmapConverter( const TSize& aSourceSize );
-
- /**
- * C++ default constructor.
- */
- CVTIYUVFbsBitmapConverter();
- };
-
-/**
-* FourCC YV12 image to CFbsBitmap converter (see YV12 description below).
-*
-* All Y samples are found first in memory as an array of unsigned char
-* (possibly with a larger stride for memory alignment), followed immediately
-* by all Cb (V) samples (with half the stride of the Y lines, and half the
-* number of lines), then followed immediately by all Cr (U) samples in a
-* similar fashion.
-*
-* @lib VTImageConverter.lib
-*/
-class CVTYV12FbsBitmapConverter : public CVTYUVPlanarFbsBitmapConverter
- {
- public: // Constructors and destructor
- /**
- * Static factory function to create instance of this class.
- * @param "aSourceSize" Size of source image in pixels.
- * @param "aDestination" Reference to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- * @return Pointer to newly created instance.
- */
- IMPORT_C static CVTYV12FbsBitmapConverter* NewL(
- const TSize& aSourceSize,
- const CFbsBitmap& aDestination );
-
- /**
- * Static factory function to create instance of this class.
- * @param "aSourceSize" Size of source image in pixels.
- * @param "aBitmapHandle" Handle to destination bitmap.
- * @exception Can leave with one of the system wide error codes.
- * @return Pointer to newly created instance.
- */
- IMPORT_C static CVTYV12FbsBitmapConverter* NewL(
- const TSize& aSourceSize,
- TInt aBitmapHandle );
-
- public: // New functions
-
- public: // Functions from base classes
-
- protected: // New functions
-
- protected: // Functions from base classes
-
- private: // New functions
-
- private: // Functions from base classes
-
- /**
- * Updates iY, iU and iV member variables.
- * @param "aSourceData" 8-bit descriptor to source YUV data.
- */
- void SetYUVPtrs( const TDesC8& aSourceData );
-
- private: // Constructors and destructor
-
- /**
- * C++ destructor.
- * @param "aSourceSize" Source size in pixels.
- */
- CVTYV12FbsBitmapConverter( const TSize& aSourceSize );
-
- /**
- * C++ default constructor.
- */
- CVTYV12FbsBitmapConverter();
- };
-
-/**
-* CFbsBitmap to FourCC IYUV image converter (see IYUV description below).
-*
-* All Y samples are found first in memory as an array of unsigned char
-* (possibly with a larger stride for memory alignment), followed immediately
-* by all Cr (U) samples (with half the stride of the Y lines, and half the
-* number of lines), then followed immediately by all Cb (V) samples in a
-* similar fashion.
-*
-* @lib VTImageConverter.lib
-*/
-class CVSFbsBitmapIYUVConverter : public CBase
- {
- public: // Constructors and destructor
-
- /**
- * Static factory function to create instance of this class.
- * @param "aBitmap" Reference to source bitmap.
- * @exception Can leave with one of the system wide error codes.
- * @return Pointer to newly created instance.
- */
- IMPORT_C static CVSFbsBitmapIYUVConverter* NewL(
- const CFbsBitmap& aBitmap );
-
- /**
- * C++ destructor.
- */
- IMPORT_C ~CVSFbsBitmapIYUVConverter();
-
- public: // New functions
-
- /**
- * Sets new source bitmap.
- * @param "aBitmap" Reference to new source bitmap.
- */
- IMPORT_C void SetSourceL( const CFbsBitmap& aBitmap );
-
- /**
- * Starts image conversion from CFbsBitmap to YUV.
- * @exception Can leave with one of the system wide error codes.
- */
- IMPORT_C void ProcessL();
-
- /**
- * After successfull ProcessL() call converted YUV image data can be
- * fetched using this method.
- * @return 8-bit pointer descriptor (constant) to YUV image data.
- */
- IMPORT_C TPtrC8 YUVData() const;
-
- public: // Functions from base classes
-
- protected: // New functions
-
- protected: // Functions from base classes
-
- private: // Constructors and destructor
-
- /**
- * C++ default constructor.
- */
- CVSFbsBitmapIYUVConverter();
-
- /**
- * Second phase constructor.
- * @param "aBitmap" Reference to source bitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- void ConstructL( const CFbsBitmap& aBitmap );
-
- private: // New functions
-
- /**
- * Second phase constructor that is called when source is changed.
- * @param "aBitmap" Reference to source bitmap.
- * @exception Can leave with one of the system wide error codes.
- */
- void ReConstructL( const CFbsBitmap& aBitmap );
-
- /**
- * Main process loop.
- * @param "aReadFunction" Pointer to function that reads one pixel from
- * source.
- */
- void DoProcess( TVSColorReadFunc aReadFunction );
-
- private: // Functions from base classes
-
- public: // Data
-
- protected: // Data
-
- private: // Data
-
- // Destination size in pixels.
- TSize iSize;
-
- // Pointer to source bitmap.
- CFbsBitmap* iSource; // owned, duplicate
-
- // Heap descriptor that contains converted YUV data.
- HBufC8* iYUVData; // owned
-
- // Pointer descriptor that points to Y data of the YUV image.
- TPtrC8 iY;
-
- // Pointer descriptor that points to Cr (U) data of the YUV image.
- TPtrC8 iU;
-
- // Pointer descriptor that points to Cb (V) data of the YUV image.
- TPtrC8 iV;
- };
-
-// INLINE METHODS
-#include "cvtimageconverter.inl"
-
-
-#endif // CVTIMAGECONVERTER_H
-
-// End of File
-
-