diff -r 000000000000 -r ed9695c8bcbe vtprotocolplugins/DisplaySink/inc/mdisplaysink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtprotocolplugins/DisplaySink/inc/mdisplaysink.h Mon Nov 23 14:47:47 2009 +0200 @@ -0,0 +1,199 @@ +/* +* 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: DisplaySink subsystem. +* +*/ + + +#ifndef MDISPLAYSINK_H +#define MDISPLAYSINK_H + +// INCLUDE FILES + +#include + +// FORWARD DECLARATIONS + +class MVTVideoSink; + +/** +* MDisplaySinkObserver +* +* Sink observer API. Currently only frame size changes are reported using +* this IF. +* +* @lib DisplaySink.lib +*/ +class MDisplaySinkObserver + { +public: + /** + * When incoming video frame size changes, this callback will be called. + * @param "aFrom" Current frame size. + * @param "aTo" New frame size. + * @return KErrNone if successful, one of the system wide error codes + * @exception May leave with one of the system wide error codes. + * otherwise. + */ + virtual void VideoFrameSizeChangedL( + const TSize& aFrom, + const TSize& aTo ) = 0; + }; + +/** +* Input parameters for Display Sink +* +* @lib DisplaySink.lib +*/ +class TDisplaySinkParams + { +public: + + /** + * Enumeration for limiting frame rate. + */ + enum TFrameRateLimit + { + /** Don't limit frame rate (default) */ + EFrameRateLimitNone = 0, + /** Limit frame rate to 1.0 frames per second */ + EFrameRateLimit1_0 = 1000, + /** Limit frame rate to 2.5 frames per second */ + EFrameRateLimit2_5 = 400, + /** Limit frame rate to 5.0 frames per second */ + EFrameRateLimit5_0 = 200, + /** Limit frame rate to 7.5 frames per second */ + EFrameRateLimit7_5 = 133, + /** Limit frame rate to 10.0 frames per second */ + EFrameRateLimit10_0 = 100, + /** Limit frame rate to 12.5 frames per second */ + EFrameRateLimit12_5 = 80, + /** Limit frame rate to 15.0 frames per second */ + EFrameRateLimit15_0 = 67, + }; + + /** + * Flags for selecting correct type sink. + */ + enum TFlags + { + /** Create instance of DSA version of sink */ + EDisplaySinkDSA = ( 1 << 0 ), + /** Create instance of DP version of sink */ + EDisplaySinkDP = ( 1 << 1 ), + /** Create instance of NGA version of sink */ + EDisplaySinkNGA = ( 1 << 2 ) + }; + +public: // Data + + /** + * C++ constructor for initializing some of the variables. + */ + IMPORT_C TDisplaySinkParams(); + + // Thread id that gets notified by sink + TThreadId iThreadId; + + // Pointer to iStatus member of the Active Object to notify after video + // frame is converted + TRequestStatus* iRequestStatusPtr; + + // Pointer to Display Sink observer interface + MDisplaySinkObserver* iObserver; + + // Frame rate limitation + TFrameRateLimit iFrameRateLimit; + + // Sink flags + TUint32 iFlags; + }; + +/** +* MDisplaySink +* +* @lib DisplaySink.lib +*/ +class MDisplaySink + { +public: // data + + // Enumeration for the bitmaps. + enum TBitmapNo + { + EFirstBitmap = 0, + ESecondBitmap + }; + +public: // new methods + + /** + * Deletes instance and frees all memory. + */ + virtual void Destroy() = 0; + + /** + * Mark the bitmap available for use. + * @param "aBitmapNo" One of the enumerated TBitmapNo values. + */ + virtual void SetBitmapAvailable( TBitmapNo aBitmapNo ) = 0; + + /** + * Cancels sink so that it does not convert bitmaps even it receives data. + */ + virtual void Release() = 0; + + /** + * Updates display sink parameters, e.g. when display mode changes. + * @param "aParams" Structure that contains new bitmap handles. + * @param "aUpdated" Reference to boolean variable that will be set to + * ETrue when display sink parameter update has been completed. + * @exception May leave with one of the system wide error codes (e.g. in + * out of memory situaton). + */ + virtual void UpdateSinkParamsL( const TDisplaySinkParams& aParams, + TBool& aUpdated ) = 0; + + /** + * Pauses sending of remote video to VT engine. + */ + virtual void Pause() = 0; + + /** + * Resumes sending of remote video to VT engine. + */ + virtual void Resume() = 0; + + /** + * Operator returns this instance . + */ + virtual operator MVTVideoSink&() = 0; + + /** + * This method is called by the VT engine when engine has finished handling + * of previous frame and is ready to handle a new one. + */ + virtual void NextFrame() = 0; + + }; + +/** +* Creates instance of displaysink. +*/ +IMPORT_C MDisplaySink* CreateSinkL( TDisplaySinkParams& aParams, + const TDesC8& aInitData ); + +#endif // MDISPLAYSINK_H + +// End of file