diff -r 2e2a89493e2b -r 48dd0f169f0d imagehandlingutilities/thumbnailmanager/plugins/video/src/thumbnailvideoprovider.cpp --- a/imagehandlingutilities/thumbnailmanager/plugins/video/src/thumbnailvideoprovider.cpp Fri Sep 03 10:29:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* -* 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: Video thumbnail provider - * -*/ - - -#include -#include -#include -#include - -#include "thumbnailvideoprovider.h" -#include "thumbnailmanageruids.hrh" -#include "thumbnailmanagerconstants.h" -#include "thumbnaillog.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "thumbnailvideoproviderTraces.h" -#endif - - -#ifndef IMPLEMENTATION_PROXY_ENTRY -typedef TAny* TProxyNewLPtr; -#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr) \ -{ {aUid}, static_cast(aFuncPtr) } -#endif - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::NewL() -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CThumbnailVideoProvider* CThumbnailVideoProvider::NewL() - { - CThumbnailVideoProvider* self = new( ELeave )CThumbnailVideoProvider(); - return self; - } - - -// --------------------------------------------------------------------------- -// CThumbnailImageProvider::CThumbnailImageProvider() -// C++ default constructor can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -// -CThumbnailVideoProvider::CThumbnailVideoProvider():CActive( EPriorityStandard ) - { - CActiveScheduler::Add( this ); - - iTimer.CreateLocal(); - iTimeout = EFalse; - - TN_DEBUG1( "CThumbnailVideoProvider::CThumbnailVideoProvider()" ); - OstTrace0( TRACE_NORMAL, CTHUMBNAILVIDEOPROVIDER_CTHUMBNAILVIDEOPROVIDER, "CThumbnailVideoProvider::CThumbnailVideoProvider" ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::~CThumbnailVideoProvider() -// Destructor. -// --------------------------------------------------------------------------- -// -CThumbnailVideoProvider::~CThumbnailVideoProvider() - { - // run DoCancel even if not active - if ( IsActive() ) - { - Cancel(); - } - else - { - DoCancel(); - } - - iTimer.Close(); - - TN_DEBUG1( "CThumbnailVideoProvider::~CThumbnailVideoProvider()" ); - OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILVIDEOPROVIDER_CTHUMBNAILVIDEOPROVIDER, "CThumbnailVideoProvider::~CThumbnailVideoProvider" ); - REComSession::DestroyedImplementation( iDtor_ID_Key ); - } -// ----------------------------------------------------------------------------- -// CThumbnailVideoProvider::DoCancel() -// ----------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::DoCancel() - { - iTimer.Cancel(); - - if ( iVideoClipInfo ) - { - iVideoClipInfo->CancelThumb(); - - delete iVideoClipInfo; - iVideoClipInfo = NULL; - } - } - - -// ----------------------------------------------------------------------------- -// CThumbnailImageDecoder::RunL() -// ----------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::RunL() - { - DoCancel(); - - // video thumbnail engine doesn't respond - if (iTimeout) - { - iObserver->ThumbnailProviderReady( KErrCompletion, NULL, TSize(), EFalse, EFalse); - iTimeout = EFalse; - - TN_DEBUG1( "CThumbnailVideoProvider::RunL() - timeout" ); - OstTrace0( TRACE_NORMAL, CTHUMBNAILVIDEOPROVIDER_RUNL, "CThumbnailVideoProvider::RunL - timeout" ); - } - } - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::GetThumbnailL() -// Provides the thumbnail image of video clip -// --------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::GetThumbnailL( RFs& /*aFs*/, RFile64& aFile, const - TDataType& /*aMimeType*/, const CThumbnailManager::TThumbnailFlags aFlags, - const TDisplayMode /*aDisplayMode*/, const CThumbnailManager::TThumbnailQualityPreference /*aQualityPreference */) - { - TN_DEBUG1( "CThumbnailVideoProvider::GetThumbnailL() start" ); - OstTrace0( TRACE_NORMAL, CTHUMBNAILVIDEOPROVIDER_GETTHUMBNAILL, "CThumbnailVideoProvider::GetThumbnailL - start" ); - - iFlags = aFlags; - //set default mode displaymode from global constants - iDisplayMode = KStoreDisplayMode; - -//Symbian^4 specific -//TODO currently only ARM platforms supports MAP mode -#if !(defined(__CC_ARM) || defined(__ARMCC__)) - iDisplayMode = EColor16M; -#endif - - TFileName filename; - User::LeaveIfError( aFile.FullName( filename )); - - TRAPD( err, iVideoClipInfo = CTNEVideoClipInfo::NewL( filename, * this )); - - if ( err != KErrNone ) - { - User::Leave( KErrCorrupt ); - } - - TN_DEBUG1( "CThumbnailVideoProvider::GetThumbnailL() end" ); - OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILVIDEOPROVIDER_GETTHUMBNAILL, "CThumbnailVideoProvider::GetThumbnailL - end" ); - } - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::GetThumbnailL() -// --------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::GetThumbnailL( RFs& /*aFs*/, - TDesC8* /* aBuffer */, - const TDataType& /* aMimeType */, - const CThumbnailManager::TThumbnailFlags /*aFlags*/, - const TDisplayMode /* aDisplayMode */, - const CThumbnailManager::TThumbnailQualityPreference /*aQualityPreference */) - { - TN_DEBUG1( "CThumbnailVideoProvider::GetThumbnailL() - nothing to do" ); - OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILVIDEOPROVIDER_GETTHUMBNAILL, "CThumbnailVideoProvider::GetThumbnailL - nothing to do" ); - } - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::GetThumbnailL() -// --------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::GetThumbnailL( RFs& /*aFs*/, TDesC8& /*aBuffer*/) - { - TN_DEBUG1( "CThumbnailVideoProvider::GetThumbnailL() - nothing to do" ); - OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILVIDEOPROVIDER_GETTHUMBNAILL, "CThumbnailVideoProvider::GetThumbnailL - nothing to do" ); - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// Cancel thumbnail request -// --------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::CancelGetThumbnail() - { - // run DoCancel even if not active - if ( IsActive() ) - { - Cancel(); - } - else - { - DoCancel(); - } - } - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::NotifyVideoClipThumbCompleted() -// Used to notify when thumbnail image of video clip is ready -// --------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::NotifyVideoClipThumbCompleted( CTNEVideoClipInfo& - /*aInfo*/, TInt aError, CFbsBitmap* aThumb ) - { - TN_DEBUG2( "CThumbnailVideoProvider::NotifyVideoClipThumbCompleted(aError=%d)", aError ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILVIDEOPROVIDER_NOTIFYVIDEOCLIPTHUMBCOMPLETED, "CThumbnailVideoProvider::NotifyVideoClipThumbCompleted;aError=%d", aError ); - - iTimer.Cancel(); - iTimeout = EFalse; - - if (( aError == KErrNone ) && aThumb ) - { - iOriginalSize = aThumb->SizeInPixels(); - } - - iObserver->ThumbnailProviderReady( aError, aThumb, iOriginalSize, EFalse, EFalse); - } - - -// --------------------------------------------------------------------------- -// CThumbnailVideoProvider::NotifyVideoClipInfoReady() -// Used to notify when information of video clip is available -// --------------------------------------------------------------------------- -// -void CThumbnailVideoProvider::NotifyVideoClipInfoReady( CTNEVideoClipInfo& - aInfo, TInt aError ) - { - TN_DEBUG2( "CThumbnailVideoProvider::NotifyVideoClipInfoReady(aError=%d)", aError ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILVIDEOPROVIDER_NOTIFYVIDEOCLIPINFOREADY, "CThumbnailVideoProvider::NotifyVideoClipInfoReady;aError=%d", aError ); - - if ( aError == KErrNone ) - { - TInt err( KErrNone ); - - // cannot determine target size, aspect ratio scaling fails - TRAP( err, aInfo.GetThumbL( *this, KBestThumbIndex, NULL, iDisplayMode, ETrue )); - - if ( err != KErrNone ) - { - TN_DEBUG2( "CThumbnailVideoProvider::NotifyVideoClipInfoReady() -- GetThumbL() left with %d", err ); - OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILVIDEOPROVIDER_NOTIFYVIDEOCLIPINFOREADY, "CThumbnailVideoProvider::NotifyVideoClipInfoReady - GetThumbL() left with;err=%d", err ); - - iObserver->ThumbnailProviderReady( err, NULL, TSize(), EFalse, EFalse); - - SetActive(); - TRequestStatus* statusPtr = &iStatus; - User::RequestComplete( statusPtr, KErrNone ); - } - else - { - // request timeout - iTimeout = ETrue; - iTimer.After(iStatus, KVideoDecoderTimeout); - SetActive(); - } - } - else - { - iObserver->ThumbnailProviderReady( aError, NULL, TSize(), EFalse, EFalse); - - SetActive(); - TRequestStatus* statusPtr = &iStatus; - User::RequestComplete( statusPtr, KErrNone ); - } - } - - -// ======== GLOBAL FUNCTIONS ======== - -// ----------------------------------------------------------------------------- -// ImplementationTable -// Define the interface UIDs -// ----------------------------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( THUMBNAIL_VIDEO_PROVIDER_IMP_UID, - CThumbnailVideoProvider::NewL ) -}; - - -// ----------------------------------------------------------------------------- -// ImplementationGroupProxy -// The one and only exported function that is the ECom entry point -// ----------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& - aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - - return ImplementationTable; - } - -// End of file