diff -r 6dc066157ed4 -r d9b6a8729acd vtprotocolplugins/VideoSource/inc/cmultiframeprovider.h --- a/vtprotocolplugins/VideoSource/inc/cmultiframeprovider.h Tue Jan 26 12:01:21 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,395 +0,0 @@ -/* -* Copyright (c) 2008 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 C_MULTIFRAMEPROVIDER_H -#define C_MULTIFRAMEPROVIDER_H - -// INCLUDE FILES -#include -#include -#include "cactivewait.h" -#include "cvtimagescaler.h" -#include "mmultiframeprovider.h" - -// FORWARD DECLARATIONS - -class CVtImageBitmap; -class CImageDecoder; -class CMultiframeloopAO; -class TScalingMediator; -class CMultiframeProvider; -class CMultiframeDataAO; - -const TInt KFirstFrameIndx = 0; - -// CLASS DECLARATION -// ============================ TScalingMediator =============================== -/** -* Internal implementation of still scaling mediator -* @lib videosource.lib -*/ - -NONSHARABLE_CLASS( TScalingMediator) : public MVtImageScalerObserver - { - public : - TScalingMediator(); - public : - /** - * @see MVtImageScalerObserver::ScalingFinished( TInt aError ) - */ - void ScalingFinished( TInt aError ); - - /** - * Sets waiter observer - */ - void SetWaiter( CVSActiveWait< CMultiframeProvider >* aWait ); - private : - CVSActiveWait< CMultiframeProvider >* iWait; - }; - - -// ============================ CMultiframeProvider =============================== -/** -* Internal implementation of multiframe provider -* @lib videosource.lib -*/ -NONSHARABLE_CLASS( CMultiframeProvider ) : public CBase - { - - public : // Constructors and destructor - - /** - * Static factory function create instance of this class. - * @param "aObserver" Pointer to data provider observer. - * @param aDisplayMode current display mode - * @exception Can leave with one of the system wide error codes. - * @return Pointer to new instance. - */ - static CMultiframeProvider* NewL( MMultiframeprovider* aObserver, TDisplayMode aDisplayMode ); - - /** - * Destructor. - */ - ~CMultiframeProvider(); - - - public : // Functions from base classes - - /** - * Initializes this instance from image or multiframe file. - * @param aFileName Name of the file from which this intance will be - * initialized. - * @exception Can leave with one of the system wide error codes. - */ - void InitializeL( const TFileName* aFileName ); - - /** - * Cancel initialization of multiframe provider. - * @return ETrue if don't need to wait a error message. - */ - TBool CancelInitializing(); - - /** - * Initializes this instance for blank image bitmap. - */ - void IniatializeBlankL(); - - /** - * Initializes this instance for Generalsettings image bitmap. - */ - void IniatializeGSL( const TGeneralSettingsImageType aType ); - /** - * Sets ViewFinder size - * @param aSize size of target bitmap (view finder) - */ - void SetVFScalingTargetSize( TSize aSize ); - - /** - * Decodes and scales initialized image or multiframe file - * @param aFrameindex index of frame to be decoded and scaled - */ - void ConvertAndScaleL( TInt aFrameIndex ); - - /** - * Scales and copies decoded frame for view finder display - * @param aSize size of target bitmap ( view fiender ) - */ - void ScaleCopy( TSize& aSize, TBool aVFUpdate = EFalse ); - - /** - * Signals looping AO to proceed to next frame - */ - void NextFrame(); - - /** - * Clears ViewFinder size - */ - void ClearVFScalingTargetSize(); - - /** - * Increases number of data consumers by one - */ - void IncreaseDataConsumer(); - - /** - * Decreases number of data consumers by one - * and if number is less than one it cancels data looping - * mechanism - */ - void DecreaseDataConsumer(); - - /** - * Adds used bitmap to free queue - */ - void AddBitmapToFreeQueue(); - - /** - * Indicates that second VF buffer needs to be used - */ - void UseSecondVfBuffer(); - - /** - * Indicates that VF has been stopped - */ - TBool IsVFStopped(); - - /** - * Set ViewFinder of Multiframe provider to stop - */ - void SetVFStop(); - - /** - * Wait for converting function exit - */ - void WaitForConverting(); - - /** - * Release converting flag - */ - void ReleaseForConverting(); - - private : // Constructors and destructor - - /** - * Constructor. - * @param "aObserver" Pointer to data provider observer. - * @param aDisplayMode current display mode - */ - CMultiframeProvider( MMultiframeprovider* aObserver, TDisplayMode aDisplayMode ); - - /** - * 2nd phase constructor. - * @exception Can leave with one of the system wide error codes. - */ - void ConstructL(); - - /** - * Image conversion finished callback. This method is called when image - * conversion is done. - * @param "aError" Error code. KErrNone if no error happened, one of the - * system wide error codes. - * otherwise. - */ - void ConversionFinished( TInt aError ); - - /** - * Image scaling finished callback. This method is called when image - * scaling is done. - * @param "aError" Error code. KErrNone if no error happened, one of - * the system wide error codes. - */ - void BMSScalingFinished( TInt aError ); - - /** - * Scales VF to new size. - * @param "aSize" New VF size. - * the system wide error codes. - */ - void ScaleVF( const TSize& aSize ); - - /** - * When view finder frame must be rescaled (wanted view finder size is - * neither QCIF nor QQQCIF) this callback will be called when the - * rescaling has finished. - * @param "aError" Error code. KErrNone if no error happened, one of - * the system wide error codes. - */ - void VFRescalingFinished( TInt aError ); - - /** - * When view finder frames are rescaled this callback method will be - * called. - * @param "aError" Error code. KErrNone if no error happened, one of - * the system wide error codes. - */ - void VFScalingReady(); - - /** - * Creates blank bitmap with given size, color mode and color. - * @param "aBitmap" Bitmap pointer reference into which pointer to new - * isntance will be copied. - * @param "aSize" Size of the blank bitmap to be created. - * @param "aMode" Color mode for created bitmap. - * @param "aColor" Color of created bitmap. - * @exception Can leave with one of the system wide error codes. - */ - void CreateBlankBitmapL( CFbsBitmap*& aBitmap, const TSize& aSize, const TDisplayMode& aMode, const TRgb& aColor ); - - public : // Data - - TBool iAnimation; - - TBool iConvertAndScale; - - protected: // Data - - RCriticalSection iFreezeCS; - - private : //Data - - - // Source image for CVtImageScaler - CVtImageBitmap* iConverted; - - // Target image for CVtImageScaler - CVtImageBitmap* iScaled; - CVtImageBitmap* iBuffer1; - CVtImageBitmap* iBuffer2; - - // Pointer to remote image - CVtImageBitmap* iYUVBitMap; - - // Pointer to QCIF sized view finder image - CVtImageBitmap* iVFbitmap; - CVtImageBitmap* iFirstVfBuf; - CVtImageBitmap* iSecondVfBuf; - - // Boolean values of VF buffer validation - TBool iSecondVFBuffer; - TBool iFirstVFBuffer; - - // Pointer to bitmap loaded from GS - CVtImageBitmap* iGSBitmap; - - // Pointer to selected view finder image - CVtImageBitmap* iVFCurrent; - - // Viewer AO instance - CMultiframeloopAO* iLoopAo;// owned - - // Initalisation scaling mediator - TScalingMediator iInitMediator; - - // ViewFinder scaling scaling mediator - TScalingMediator iScalingMediator; - - // Waiter instance for initialisation - CVSActiveWait< CMultiframeProvider >* iActiveWaitInit;// owned - - // Waiter instance for scaling - CVSActiveWait< CMultiframeProvider >* iActiveWaitScale;// owned - - // Waiter instance for scaling - CVSActiveWait< CMultiframeProvider >* iActiveWaitInitScale; // owned - - // VT image scaler instance for initialisation - CVtImageScaler* iVtImageScalerInit; // owned - - // VT image scaler instance for scaling - CVtImageScaler* iVtImageScalerScale; // owned - - // Image decoder instance - CImageDecoder* iImageDecoder; // owned - - // Wanted view finder size - TSize iWantedVFSize; - - // FireServer session instance - RFs iFs; - - // Current display mode - TDisplayMode iDisplayMode; - - // Rescaling recuirement flag - TBool iVFRescalingRequired; - - // Multiframe observer instance - MMultiframeprovider* iObserver; - - // VF bitmap size - TSize iTargetSize; - - // Is blank image share - TBool iBlank; - - // Is GS image share - TBool iGSImage; - - // Is second bitmap in use - TBool iOldBM; - - // Pointer to old bitmap - CVtImageBitmap* iOldBitmap; - - // Frame count - TInt iCount; - - // Is initialization ongoing flag - TBool iInitialization; - - // Frame delay - TTimeIntervalMicroSeconds iDelay; - - // Start time for image conversion - TTime iStartTime; - - // Data timer expiration / Frame update time - TTimeIntervalMicroSeconds iFrameUpdateTime; - - // Pointer to data timer AO - CMultiframeDataAO* iDataTimer; - - // Number of data consumers - TInt iNumOfConsumers; - - // Queue for bitmaps that are free for use - RPointerArray iFreeQueue; - - // Pointer to bitmap mask - CFbsBitmap* iMask; - - // Pointer to temporary bitmap - CVtImageBitmap* iTempBM; - - TSize iVFSize; - - // Boolean value of VF buffer update - TBool iVFUpdate; - - // file handle to default VT image - RFile iDefaultImageFile; - // Boolean value of VF buffer stopping - TBool iIsVfStopped; - - // Boolean value of VF buffer stopping - TBool iWaitForConverting; - }; - -#endif // C_MULTIFRAMEPROVIDER_H - -// End of File