diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/cameraapp/generic/src/cameracontroller/camimageencoder.cpp --- a/camerauis/cameraapp/generic/src/cameracontroller/camimageencoder.cpp Tue Feb 02 00:01:39 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,279 +0,0 @@ -/* -* Copyright (c) 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: Implementation of Camera image encoder -* -*/ - - - - -#include -#include -#include // MCameraBuffer - -#include - -#include "camlogging.h" -#include "camfilesaveutility.h" -#include "cambuffershare.h" - -#include "camimageencoder.h" - -// =========================================================================== -// Local constants - -// Encoding flags -static const CImageEncoder::TOptions KConversionOptions = - CImageEncoder::EOptionAlwaysThread; - -// Other constants -static const TInt KImageIndex = 0; -static const TInt KPriority = CActive::EPriorityHigh; - -_LIT8( KMimeTypeDesc8, "image/jpeg" ); - - -// =========================================================================== -// public constructor and destructor - -// --------------------------------------------------------------------------- -// 2-phase constructor -// --------------------------------------------------------------------------- -// -CCamImageEncoder* -CCamImageEncoder::NewL( MCamImageEncoderObserver& aObserver ) - { - CCamImageEncoder* self = - new (ELeave) CCamImageEncoder( aObserver ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CCamImageEncoder::~CCamImageEncoder() - { - PRINT( _L("Camera => ~CCamImageEncoder") ); - Cancel(); - - ReleaseEncoder(); - SetInputBuffer( NULL ); - - PRINT( _L("Camera <= ~CCamImageEncoder") ); - } - -// =========================================================================== -// public methods - -// --------------------------------------------------------------------------- -// StartConversionL -// --------------------------------------------------------------------------- -// -void -CCamImageEncoder::StartConversionL( CCamBufferShare* aBuffer ) - { - PRINT( _L("Camera => CCamImageEncoder::StartConversionL") ); - - // Cancel any previous action - Cancel(); - - ReleaseEncoder(); - - if( aBuffer - && aBuffer->SharedBuffer() ) - { - // Store the bitmap data. - // Need to release old buffer and reserve given one. - SetInputBuffer( aBuffer ); - - PRINT( _L("Camera <> CCamImageEncoder: Creating encoder..") ); - iEncoder = CImageEncoder::DataNewL( iEncodedData, - KMimeTypeDesc8(), - KConversionOptions ); - - PRINT( _L("Camera <> CCamImageEncoder: get source bitmap..") ); - MCameraBuffer* buffer( iSharedInput->SharedBuffer() ); - CFbsBitmap& bitmap( buffer->BitmapL( KImageIndex ) ); - - - PRINT( _L("Camera <> CCamImageEncoder: start conversion..") ); - iEncoder->Convert( &iStatus, bitmap ); - SetActive(); - } - else - { - PRINT( _L("Camera <> CCamImageEncoder: No bitmap provided, leave..") ); - User::Leave( KErrNotFound ); - } - - PRINT( _L("Camera <= CCamImageEncoder::StartConversionL") ); - } - - -// =========================================================================== -// from CActive - -// --------------------------------------------------------------------------- -// virtual DoCancel -// --------------------------------------------------------------------------- -// -void -CCamImageEncoder::DoCancel() - { - PRINT( _L("Camera => CCamImageEncoder::DoCancel") ); - - if( iEncoder ) - { - iEncoder->Cancel(); - } - - ReleaseEncoder(); - SetInputBuffer( NULL ); - - PRINT( _L("Camera <= CCamImageEncoder::DoCancel") ); - } - - -// --------------------------------------------------------------------------- -// virtual RunL -// --------------------------------------------------------------------------- -// -void -CCamImageEncoder::RunL() - { - PRINT1( _L("Camera => CCamImageEncoder::RunL, iStatus:%d"), iStatus.Int() ); - - switch( iStatus.Int() ) - { - case KErrNone : - { - SetInputBuffer( NULL ); - - // Notify observer - NotifyObserver( KErrNone ); - - // Source data and encoder not needed anymore - ReleaseEncoder(); - - break; - } - case KErrCancel : - default : - { - User::Leave( iStatus.Int() ); - break; - } - } - - PRINT( _L("Camera <= CCamImageEncoder::RunL") ); - } - - -// --------------------------------------------------------------------------- -// virtual RunError -// --------------------------------------------------------------------------- -// -TInt -CCamImageEncoder::RunError( TInt aError ) - { - PRINT1( _L("Camera <= CCamImageEncoder::RunError(%d)"), aError ); - - ReleaseEncoder(); - SetInputBuffer( NULL ); - - // Leave has occurred in RunL. - // Notify observer with error and NULL data. - NotifyObserver( aError ); - - PRINT( _L("Camera <= CCamImageEncoder::RunError") ); - return KErrNone; - } - - -// =========================================================================== -// Private methods - -// --------------------------------------------------------------------------- -// SetInputBuffer -// --------------------------------------------------------------------------- -// -void -CCamImageEncoder::SetInputBuffer( CCamBufferShare* aBuffer ) - { - if( iSharedInput ) - { - iSharedInput->Release(); - iSharedInput = NULL; - } - - iSharedInput = aBuffer; - - if( iSharedInput ) - { - iSharedInput->Reserve(); - } - } - -void -CCamImageEncoder::ReleaseEncoder() - { - delete iEncoder; - iEncoder = NULL; - - delete iEncodedData; - iEncodedData = NULL; - } - - -// --------------------------------------------------------------------------- -// NotifyObservers -// --------------------------------------------------------------------------- -// -void -CCamImageEncoder::NotifyObserver( TInt aStatus ) - { - iObserver.ImageEncoded( aStatus, iEncodedData ); - iEncodedData = NULL; // Ownership to observer - } - -// =========================================================================== -// private constructors - -// --------------------------------------------------------------------------- -// 2nd phase constructor -// --------------------------------------------------------------------------- -// -void -CCamImageEncoder::ConstructL() - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// 1st phase constructor -// --------------------------------------------------------------------------- -// -CCamImageEncoder::CCamImageEncoder( MCamImageEncoderObserver& aObserver ) - : CActive ( KPriority ), - iObserver( aObserver ) - { - } - -// end of file