diff -r 000000000000 -r 2014ca87e772 imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerconstants.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerconstants.h Tue Jan 26 15:18:05 2010 +0200 @@ -0,0 +1,526 @@ +/* +* Copyright (c) 2006-2007 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: Thumbnail manager constants + * +*/ + + +#ifndef THUMBNAILMANAGERCONSTANTS_H +#define THUMBNAILMANAGERCONSTANTS_H + +#include +#include +#include + +#include + +#include "thumbnailmanager.h" // TThumbnailFlags + +class CThumbnailServerSession; + +// P&S stuff +static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy); +static _LIT_SECURITY_POLICY_C1(KPowerMgmtPolicy,ECapabilityPowerMgmt); + +const TUid KTMPSNotification = { 0x102830AB }; +const TUid KTAGDPSNotification = { 0x2001FD51 }; +const TUid KMdSPSShutdown = { 0x20022E94 }; +const TUid KServerIdle = { 0x102830AB }; +const TUid KDaemonUid = { 0x2001FD51 }; + +const TInt KShutdown = 0x00000001; +const TInt KMdSShutdown = 0x00000002; +//used to signal from server side when it's idle +const TInt KIdle = 0x00000004; + +//insert to temp table first wo indexing and move data to main table as batch +const TUint KMaxBatchItems = 18; + +const TUint KMaxQueryItems = 1; + +// maximum number of active client queue requests +const TUint KMaxClientRequests = 2; + +// maximum number of active daemon requests +const TUint KMaxDaemonRequests = 3; + +const TUint KClientRequestTimeout = 60000000; //60 sec + +const TUint KThumbnailServerMajorVersionNumber = 0; +const TUint KThumbnailServerMinorVersionNumber = 1; +const TUint KThumbnailServerBuildVersionNumber = 1; + +const TInt KThumbnailErrThumbnailNotFound = -62000; + +//give MDS 1000 msec time to settle before starting generating TNs +const TInt KHarvestingCompleteTimeout = 10000000; //10 sec + +const TInt KPSKeyTimeout = 10000000; //10 sec +//Store's auto flush timeout +const TInt KAutoFlushTimeout = 30000000; //30 sec + +// video decoder timeout +const TInt KVideoDecoderTimeout = 5000000; // 5 seconds + +const TDisplayMode KThumbnailDefaultDisplayMode = EColor64K; + +//default displaymode (bpp - bits per pixel) for TNs in DB +//this makes possible to provide all colour depths up to 16M aka 24 -bit full colour +const TDisplayMode KStoreDisplayMode = EColor16M; + +//required amount of memory to keep bitmaps on RAM in bits +const TInt KMemoryNeed = 5000000; + +_LIT( KThumbnailServerName, "ThumbnailServer" ); +_LIT( KThumbnailServerProcess, "*ThumbnailServer*" ); +_LIT( KThumbnailServerExe, "thumbnailserver.exe" ); +_LIT( KThumbnailServerShutdown, "Thumbnailserver_Shutdown" ); + +_LIT( KTAGDaemonName, "ThumbAGDaemon" ); +_LIT( KTAGDaemonProcess, "*ThumbAGDaemon*" ); +_LIT( KTAGDaemonExe, "thumbagdaemon.exe" ); + +// server message slots, -1 doesn't reserve fixed amount from global but uses free available amount instead +const TInt KMessageSlots = -1; + +const TInt KMinPriority = KMinTInt; +const TInt KMinPlaceholderPriority = (KMinTInt +1000); +const TInt KLowPriority = -1000; +const TInt KNormalPriority = 0; +const TInt KHighPriority = 1000; +const TInt KMaxGeneratePriority = (KMaxTInt -1000); +const TInt KMaxPriority = KMaxTInt; // For scaling tasks +const TInt KImeiBufferSize = CTelephony::KPhoneSerialNumberSize; +const TInt KCheckValue = 123456; + +_LIT8( KJpegMime, "image/jpeg" ); _LIT( KJpegExt, ".jpeg" ); +_LIT8( KJpeg2000Mime, "image/jp2" ); _LIT( KJpeg2000Ext, ".jp2" ); +_LIT8( KJpgMime, "image/jpeg" ); _LIT( KJpgExt, ".jpg" ); +_LIT8( KGifMime, "image/gif" ); _LIT( KGifExt, ".gif" ); +_LIT8( KPngMime, "image/png" ); _LIT( KPngExt, ".png" ); +_LIT8( KSvgMime, "image/svg+xml" ); _LIT( KSvgExt, ".svg" ); +_LIT8( KMpgMime1, "video/mpeg"); _LIT( KMpgExt1, ".mpg" ); +_LIT8( KMpeg4Mime, "video/mpeg4" ); _LIT( KMpeg4Ext,".mpeg4" ); +_LIT8( KMp4Mime, "video/mp4" ); _LIT( KMp4Ext, ".mp4" ); +_LIT8( KAviMime, "video/x-msvideo" ); _LIT( KAviExt, ".avi" ); +_LIT8( KMp3Mime, "audio/mpeg" ); _LIT( KMp3Ext, ".mp3" ); +_LIT8( KNonEmbeddArtMime, "audio/mpeg" ); _LIT( KNonEmbeddArtExt, ".alb" ); +_LIT8( KM4aMime, "audio/mp4" ); _LIT( KM4aExt, ".m4a" ); +_LIT8( KAacMime, "audio/aac" ); _LIT( KAacExt, ".aac" ); +_LIT8( KWmaMime, "audio/x-ms-wma" ); _LIT( KWmaExt, ".wma" ); +_LIT8( KBmpMime, "image/bmp" ); _LIT( KBmpExt, ".bmp" ); +_LIT8( KAudio3gppMime, "audio/3gpp" ); +_LIT8( KVideo3gppMime, "video/3gpp" ); _LIT( K3gpExt, ".3gp" ); +_LIT8( KAudioAmrMime, "audio/AMR" ); _LIT( KAmrExt, ".amr" ); +_LIT8( KVideoWmvMime, "video/x-ms-wmv" ); _LIT( KWmvExt, ".wmv" ); +_LIT8( KRealAudioMime, "audio/vnd.rn-realaudio" ); _LIT( KRealAudioExt, ".ra" ); +_LIT8( KPmRealAudioPluginMime, "audio/x-pn-realaudio-plugin" ); _LIT( KPmRealAudioPluginExt, ".rpm" ); +_LIT8( KPmRealVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVideoPluginExt, ".rm" ); +_LIT8( KPmRealVbVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVbVideoPluginExt, ".rmvb" ); +_LIT8( KPmRealAudioMime, "audio/x-pn-realaudio" ); _LIT( KPmRealAudioExt, ".ra" ); +_LIT8( KRealVideoMime, "video/vnd.rn-realvideo" ); _LIT( KRealVideoExt, ".rv" ); +_LIT8( KFlashVideoMime, "video/x-flv" ); _LIT( KFlashVideoExt, ".flv" ); +_LIT8( KMatroskaVideoMime, "video/x-matroska" ); _LIT( KMatroskaVideoExt, ".mkv" ); +_LIT( KImageMime, "image/*" ); +_LIT( KVideoMime, "video/*" ); +_LIT( KAudioMime, "audio/*" ); +_LIT( KM4vExt, ".m4v" ); +_LIT( KNonEmbeddedArtExt, ".alb" ); + +/** + * Control flags set by the server for handling specific situations + * (for example for distinguishing between preview thumbnails and + * final thumbnails). + * + * @since S60 v5.0 + */ +enum TThumbnailControlFlags + { + /** + * Default value. No flags set. + */ + EThumbnailNoControlFlags = 0, + + /** + * Set by the server when the request is completed and it is only the + * first part of a two-phase request + */ + EThumbnailPreviewThumbnail = 1, + + /** + * Set by the client to inform server to create only missing persistent sizes thumbnails + */ + EThumbnailGeneratePersistentSizesOnly = 2 +}; + + +/** + * Thumbnail request parameters used for client-server communication. + * + * @since S60 v5.0 + */ +struct TThumbnailRequestParams + { +public: + /** + * Bitmap handle for completed requests + */ + TInt iBitmapHandle; + + /** + * Flags for new requests. + */ + CThumbnailManager::TThumbnailFlags iFlags; + + /** + * Quality-preference value for new requests. + */ + CThumbnailManager::TThumbnailQualityPreference iQualityPreference; + + /** + * Priority for new requests. + */ + TInt iPriority; + + /** + * Requested thumbnail size new requests. + */ + TSize iSize; + + /** + * Requested display mode new requests. + */ + TDisplayMode iDisplayMode; + + /** + * Full path to object file for new requests. Should be set even + * when file handles are used. + */ + TFileName iFileName; + + /** + * Full path to object to which the imported thumb is to be linked. + */ + TFileName iTargetUri; + + /** + * Thumbnail ID + */ + TThumbnailId iThumbnailId; + + /** + * Relative thumbnail size + */ + TThumbnailSize iThumbnailSize; + + /** + * MIME type + */ + TDataType iMimeType; + + /** + * Image buffer used to create & set the thumbnail + */ + TDesC8* iBuffer; + + /** + * Session specific request ID allocated by the client. + */ + TThumbnailRequestId iRequestId; + + /** + * Control flags set by the server for handling specific situations + * (for example for distinguishing between preview thumbnails and + * final thumbnails). + */ + TThumbnailControlFlags iControlFlags; + + /** + * Thumbnail's modify timestamp + */ + TInt64 iModified; + + /** + * Thumbnail's orientation + */ + TInt iOrientation; + }; + + +typedef TPckg < TThumbnailRequestParams > TThumbnailRequestParamsPckg; +typedef TPckgBuf < TThumbnailRequestParams > TThumbnailRequestParamsPckgBuf; + + +/** + * Request ID class used on the server side. Consists of a pointer to a + * session and a session specific ID. + * + * @since S60 v5.0 + */ +struct TThumbnailServerRequestId + { + /** + * Default C++ constructor + * + * @since S60 v5.0 + */ + inline TThumbnailServerRequestId(): iSession( NULL ), iRequestId( 0 ){} + + /** + * C++ constructor + * + * @since S60 v5.0 + * @param aSession Pointer to the server-side session object, which + * created the request. + * @param aRequestId Session specific request ID as allocated by the + * client. + */ + inline TThumbnailServerRequestId( CThumbnailServerSession* aSession, + TThumbnailRequestId aRequestId ): iSession( aSession ), iRequestId( + aRequestId ){} + + /** + * Compare request IDs. Both session and client-side request ID must + * match. + * + * @param aRequestId Another TThumbnailServerRequestId to compare to + * @since S60 v5.0 + */ + inline TBool operator == ( const TThumbnailServerRequestId& aRequestId ) + const + { + return aRequestId.iSession == iSession && aRequestId.iRequestId == + iRequestId; + } + +public: + /** + * Pointer to the server-side session object, which created the request. + * Not own. + */ + CThumbnailServerSession* iSession; + + /** + * Session specific request ID as allocated by the client. + */ + TThumbnailRequestId iRequestId; +}; + +/** + * Client-server message IDs + * + * @since S60 v5.0 + * Start from 0 so that TPolicy range matches to function count. + */ +enum TThumbnailServerRequest + { + /** + * Thumbnail request using file path. A TThumbnailRequestParams + * struct is passed as a parameter. + * @see TThumbnailRequestParams + */ + ERequestThumbByPathAsync = 0, + + /** + * Thumbnail request using file path. A TThumbnailRequestParams + * struct is passed as a parameter as well as the file handle using + * TransferToServer()/AdoptFromClient(). + * @see TThumbnailRequestParams + */ + ERequestThumbByFileHandleAsync, + + /** + * Release a bitmap after the client callback has returned. Bitmap + * handle is passed as a parameter. + */ + EReleaseBitmap, + + /** + * Cancel a thumbnail request. Session specific request ID is passed + * as a parameter. + */ + ECancelRequest, + + /** + * Change the priority of a thumbnail request. Session specific request + * ID and new priority value are passed as parameters. + */ + EChangePriority, + + /** + * Create thumbnails for a file. File path is passed as a + * parameter. + */ + ECreateThumbnails, + + /** + * Delete existing thumbnails for a file. File path is passed as a + * parameter. + */ + EDeleteThumbnails, + + /** + * Get the required size (in characters) for a buffer that contains the + * list of supported MIME types. Size in integers is returned in the + * first parameter. + */ + EGetMimeTypeBufferSize, + + /** + * Get the list of supported MIME types and store them as the first + * parameter. The first parameter should be allocated by the client + * to be large enough (using EGetMimeTypeBufferSize). + */ + EGetMimeTypeList, + + /** + * Thumbnail request using ID. + */ + ERequestThumbByIdAsync, + + ERequestThumbByBufferAsync, + + /** + * Request to set thumbnail created from buffered image + */ + ERequestSetThumbnailByBuffer, + + /** + * Delete existing thumbnails. Id as parameter. + */ + EDeleteThumbnailsById, + + EReserved1, + + /** + * Update thumbnails by given Id. + */ + EUpdateThumbnails, + + /** + * Request to set thumbnail created from given bitmap + */ + ERequestSetThumbnailByBitmap, + + /** + * Do not remove and keep as last item! Holds count of functions supported. + */ + EThumbnailServerRequestCount + }; + +/** + * Thumbnail format in storage + * + * @since S60 v5.0 + */ +enum TThumbnailFormat + { + /** + * Symbian internal bitmap format, usually as extranlized BLOB in the db. + */ + EThumbnailFormatFbsBitmap, + /** + * Stantard JPEG + */ + EThumbnailFormatJpeg + }; + +struct TThumbnailDatabaseData + { +public: + /** + * Full path to object to which the imported thumb is to be linked. + */ + TPath iPath; + /** + * Thumbnail ID + */ + TInt iTnId; + /** + * Requested thumbnail size new requests. + */ + TInt iSize; + /** + * type of data + */ + TInt iFormat; + /** + * Path for the thumbnails + */ + TPath iTnPath; + /** + * Data if bitmap + */ + CFbsBitmap* iBlob; + /** + * Data if jpeg + */ + TDesC8* iData; + /** + * Width of thumbnail + */ + TInt iWidth; + /** + * Height of thumbnail + */ + TInt iHeight; + /** + * Original width of thumbnail + */ + TInt iOrigWidth; + /** + * Original height of thumbnail + */ + TInt iOrigHeight; + /** + * flags + */ + TInt iFlags; + /** + * videoposition + */ + TInt iVideoPosition; + /** + * thumb oritentation + */ + TInt iOrientation; + /** + * Thumb created from associated path + */ + TInt iThumbFromPath; + /** + * last modified + */ + TInt64 iModified; + + }; + +/** + * MDS query modes used during thumbnail generation + * + * @since S60 v5.0 + */ +enum TMDSQueryType + { + /** + * Query Id by Path + */ + EId, + /** + * Query Path by Id + */ + EURI + }; + +#endif // THUMBNAILMANAGERCONSTANTS_H