diff -r 6dc066157ed4 -r d9b6a8729acd vtengines/videoteleng/Inc/Media/CVtEngDrawDP.h --- a/vtengines/videoteleng/Inc/Media/CVtEngDrawDP.h Tue Jan 26 12:01:21 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,509 +0,0 @@ -/* -* Copyright (c) 2004-2005 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: Remote video handling class. -* -*/ - - - -#ifndef CVTENGDRAWDP_H -#define CVTENGDRAWDP_H - -// INCLUDES - -#include "CVtEngRemoteVideo.h" -#include "TVtEngRenderConfigDP.h" - -#include - -// FORWARDS - -class TDisplaySinkParamsDP; -class CVtImageBitmap; -class CVtImageScaler; - -// CONSTANTS AND MACROS - -const TInt KVtEngMaxBuffers = 2; - -// CLASSES - -/** -* Buffer waiter observer API -* -* @lib videoteleng.lib -* @since Series 60 3.2 -*/ -NONSHARABLE_CLASS( MVtEngBufferWaiterObserver ) - { - public: // New methods - - /** - * Buffer fetched without errors. - * @param aBuffer Pointer to fetched buffer. - */ - virtual void BufferReady( - CPostingSurface::TPostingBuff* aBuffer ) = 0; - - /** - * Buffer fetch error. - * @param aError Error code. - */ - virtual void FetchError( TInt aError ) = 0; - }; - -/** -* Display Posting drawer -* -* @lib videoteleng.lib -* @since Series 60 3.2 -*/ -NONSHARABLE_CLASS( CVtEngDrawDP ) : public CVtEngRemoteVideo::CVtEngDraw, - public MVtEngBufferWaiterObserver, - public MVtImageScalerObserver - - { - public: // constructor and destructor - - /** - * Two-phased constructor. - * @param aObserver call back interface to Display Sink - * @return instance of CVtEngDrawDP - */ - static CVtEngDrawDP* NewL( MDisplaySinkObserver* aObserver ); - - // Destructor - ~CVtEngDrawDP(); - - private: - - /** - * C++ constructor as private. - * @param aObserver callback interface for Display Sink - */ - CVtEngDrawDP( MDisplaySinkObserver* aObserver ); - - private: // from MVtEngDraw - - /** - * @see CVtEngDraw::BaseConstructL - */ - void BaseConstructL(); - - /** - * @see CVtEngDraw::CreateSinkL - */ - MDisplaySink* CreateSinkL(); - - /** - * @see CVtEngDraw::BaseRefreshL - */ - void BaseRefreshL(); - - /** - * @see CVtEngDraw::BaseRefreshBitmapsL - */ - void BaseRefreshBitmapsL(); - - /** - * @see CVtEngDraw::BaseDoCancel - */ - void BaseDoCancel(); - - /** - * @see CVtEngDraw::BaseVerifyConfigL - */ - void BaseVerifyConfigL(); - - /** - * @see CVtEngDraw::BaseRestartL - */ - void BaseRestartL(); - - /** - * @see CVtEngDraw::BaseAbortNow - */ - void BaseAbortNow(); - - /** - * @see CVtEngDraw::BaseStartDrawL - */ - void BaseStartDrawL(); - - /** - * @see CVtEngDraw::BaseStopDraw - */ - void BaseStopDraw(); - - /** - * @see CVtEngDraw::BaseSetConfigL - */ - void BaseSetConfigL( const TVtEngRenderConfig& aConfig ); - - /** - * @see CVtEngDraw::BaseSetUIForegroundL - */ - void BaseSetUIForegroundL( TBool aForeground ); - - /** - * @see CVtEngDraw::BaseVideoFrameSizeChangedL - */ - void BaseVideoFrameSizeChangedL( const TSize& aTo ); - - /** - * @see CVtEngDraw::BaseRequestLastFrame - */ - void BaseRequestLastFrame(); - - /** - * @see CVtEngDraw::Config - */ - TVtEngRenderConfig& Config(); - - private: // new methods - - /** - * Handles all delayed calls. - */ - void HandleDelayedCallsL(); - - /** - * Base construct implementation - */ - void DoBaseConstructL(); - - /** - * Base start drawing implementation - */ - void DoBaseStartDrawL(); - - /** - * Initialize posting surface implementation - */ - void DoInitializePostingSurfaceL(); - - /** - * Update sink params implementation. - */ - void DoUpdateSinkParamsL(); - - /** - * Updates sink params. - */ - void UpdateSinkParamsL(); - - /** - * Checks if the alpha has been trashed on screen buffer (ETrue if it - * has been trashed, EFalse otherwise). - */ - TBool IsAlphaTrashed() const; - - /** - * Sets clipping region (read from DSA). - */ - void SetClipRegionL(); - - /** - * Initializes DP. - */ - void InitializePostingSurfaceL(); - - /** - * Fills posting source params structure. - */ - void GetPostingSourceParams( - CPostingSurface::TPostingSourceParams& aParams ) const; - - /** - * Fills posting params structure. - */ - void GetPostingParams( - CPostingSurface::TPostingParams& aParams ) const; - - /** - * Returns ETrue if given format is supported, EFalse otherwise. - */ - TBool SupportsFormat( - const CPostingSurface::TPostingFormat& aFormat ) const; - - /** - * Returns ETrue if given size is supported, EFalse otherwise. - */ - TBool SupportsSize( const TSize& aSize ) const; - - /** - * Returns ETrue if given rotation is supported, - * EFalse otherwise. - */ - TBool SupportsRotation( - CPostingSurface::TRotationType aRotation ) const; - - /** - * Returns ETrue if mirroring is supported, EFalse otherwise. - */ - TBool SupportsMirroring() const; - - /** - * Returns ETrue if scaling is supported, EFalse otherwise. - */ - TBool SupportsScaling() const; - - /** - * Returns ETrue if brightness controlling is supported, - * EFalse otherwise. - */ - TBool SupportsBrightness() const; - - /** - * Returns ETrue if contrast controlling is supported, - * EFalse otherwise. - */ - TBool SupportsContrast() const; - - /** - * Returns buffer size in bytes for given size and current posting - * format. - */ - TInt GetFrameBufferSize( const TSize& aTo ) const; - - /** - * Recreates clipregion. May leave with KErrNoMemory. - */ - void RecalculateClipRegionL(); - - /** - * Fixes rect for DP. - */ - void FixRectForDP( TRect& aRect ) const; - - /** - * Fills sink parameters. - */ - void GetSinkParams( TDisplaySinkParamsDP& aSinkParams ); - - /** - * Returns reference to sink. - */ - MDisplaySink& DisplaySink(); - - /** - * Stores given frame buffer. - */ - void StoreFrameBuffer( CPostingSurface::TPostingBuff* aPostingBuffer ); - - /** - * Creates frame buffer. - */ - void CreateFrameBufferL( const TSize& aSize ); - - /** - * Async draw callback. - */ - static TInt CallBack( TAny* aPtr ); - - /** - * Sets given buffer available to display sink. - */ - void SetAvailableToSink( CPostingSurface::TPostingBuff* aBuffer ); - - /** - * Creates instance of posting surface. - */ - CPostingSurface* CreatePostingSurfaceL(); - - /** - * Close the DP API library and free the allocated instance. - */ - void CloseDPLibrary(); - - /** - * Loads DP API library. - */ - void LoadDPLibraryL(); - - /** - * Converts YUV420 image to bitmap. - */ - void Convert420ToVtImg( HBufC8* aSource, CVtImageBitmap& aTarget ); - - /** - * Converts YUV422 image to bitmap. - */ - void Convert422ToVtImg( HBufC8* aSource, CVtImageBitmap& aTarget ); - - /** - * Updates Vt frame to frame observer. - */ - void UpdateVtFrame(); - - public: // From MVtImageScalerObserver. - - /** - * @ see MVtImageScalerObserver. - */ - virtual void ScalingFinished( TInt aError ); - - - private: // from CActive - - /** - * Handles prepared bitmap from display sink. - * @see CActive::RunL - */ - void RunL(); - - private: // from MVtEngBufferWaiterObserver - - /** - * @see MVtEngBufferWaiterObserver::BufferReady - */ - void BufferReady( CPostingSurface::TPostingBuff* aBuffer ); - - /** - * @see MVtEngBufferWaiterObserver::FetchError - */ - void FetchError( TInt aError ); - - private: // inner classes - - // Buffer class for storing buffer. - NONSHARABLE_CLASS( TVtEngBuffer ) - { - public: - - /** - * C++ constructor - */ - TVtEngBuffer(); - - /** - * Sets buffer - */ - void Set( CPostingSurface::TPostingBuff* aBuffer ); - - /** - * Unsets buffer - */ - void UnSet(); - - /** - * Returns ETrue if buffer is set - */ - TBool IsSet() const; - - /** - * Returns pointer reference to stored buffer. - */ - CPostingSurface::TPostingBuff*& Buffer(); - - private: - - // Pointer's pointer to buffer - CPostingSurface::TPostingBuff* iBuffer; - }; - - // Waiter class for asynchronous events. - NONSHARABLE_CLASS( CVtEngBufferWaiter ) : public CActive - { - public: - - /** - * C++ constructor. - */ - CVtEngBufferWaiter( CPostingSurface& aPostingSurface, - MVtEngBufferWaiterObserver& aObserver ); - - /** - * Destructor, frees all resources allocated by this instance. - */ - ~CVtEngBufferWaiter(); - - /** - * Fetch new buffer (also activates listening). - */ - TInt FetchBuffer(); - - private: // new methods - - /** - * Activate buffer listening (also calls CActive::SetActive()). - */ - void Activate(); - - private: // from CActive - - /** - * @see CActive::RunL() - */ - void RunL(); - - /** - * @see CActive::DoCancel() - */ - void DoCancel(); - - private: // data - - // Posting surface instance (not owned) - CPostingSurface* iPostingSurface; - - // BufferWaiter observer who gets informed about buffers - MVtEngBufferWaiterObserver* iObserver; - }; - - private: // data - - // Posting surface instance - CPostingSurface* iPostingSurface; - - // Posting capabilities - CPostingSurface::TPostingCapab iPostingCaps; - - // Posting buffers - TVtEngBuffer - iBuffers[ MDisplaySink::EFirstBitmap + KVtEngMaxBuffers ]; - - // Buffer waiter instance - CVtEngBufferWaiter* iBufferWaiter; - - // Rendering configuration - TVtEngRenderConfigDP iConfig; - - // Clipping region - RRegion iClipRegion; - - // Frame buffer - HBufC8* iFrameBuffer; - - // Selected posting format - CPostingSurface::TPostingFormat iPostingFormat; - - // DP API DLL - RLibrary* iDPLib; - - // Source image contains converted YUV frame - CVtImageBitmap* iSource; - - // Target image contains scaled bitmap - CVtImageBitmap* iTarget; - - // Image scaler instance - CVtImageScaler* iImageScaler; - - // Clip region updated - TBool iClipRegionUpdated; - - }; - -#endif // CVTENGDRAWDP_H \ No newline at end of file