sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include "ecamextendedfunctest.h" sl@0: #include "ECamUnitTestPluginUids.hrh" sl@0: #include "ECamUnitTestPlugin.h" sl@0: #include sl@0: #include sl@0: #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: #include sl@0: #include "ecamdef.h" sl@0: #include sl@0: #endif sl@0: /*------------------------------------------------------ sl@0: Client ViewFinder : RECamClientViewFinderTest sl@0: *------------------------------------------------------*/ sl@0: RECamClientViewFinderTest* RECamClientViewFinderTest::NewL(const TDesC& aTestStep) sl@0: { sl@0: RECamClientViewFinderTest* self = new (ELeave) RECamClientViewFinderTest(aTestStep); sl@0: return self; sl@0: } sl@0: sl@0: RECamClientViewFinderTest::RECamClientViewFinderTest(const TDesC& aTestStep) sl@0: { sl@0: iTestStepName.Copy(aTestStep); sl@0: } sl@0: sl@0: TVerdict RECamClientViewFinderTest::DoTestStepL() sl@0: { sl@0: if(!iTestStepName.Compare(_L("MM-ECM-ADV-U-050-HP"))) sl@0: { sl@0: return DoTestStep_50L(); sl@0: } sl@0: return EInconclusive; sl@0: } sl@0: sl@0: TVerdict RECamClientViewFinderTest::DoTestStep_50L() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: TInt i; sl@0: TInt err; sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoClientVFTestStepL()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory ) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamClientViewFinderTest::DoClientVFTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: MClientViewFinderObserver *clientVFObserver = NULL; sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraClientViewFinder* clientVF = NULL; sl@0: sl@0: MCameraObserver* observer = NULL; sl@0: sl@0: // using observer sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver")); sl@0: TRAP(error, camera = CCamera::NewL(*observer, 0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create client viewfinder from CCamera object")); sl@0: sl@0: TRAP(error, clientVF = CCamera::CCameraClientViewFinder::NewL(*camera, *clientVFObserver)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using old Observer failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using old Observer gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // using observer2 with NewL sl@0: MCameraObserver2* observer2 = NULL; sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::NewL(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create client viewfinder from CCamera object")); sl@0: sl@0: TRAP(error, clientVF = CCamera::CCameraClientViewFinder::NewL(*camera, *clientVFObserver)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using Observer2 with NewL failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using Observer2 with NewL gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // create client viewfinder object using New2L sl@0: __MM_HEAP_MARK; sl@0: sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, clientVF = CCamera::CCameraClientViewFinder::NewL(*camera, *clientVFObserver)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(clientVF); sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object was created using NewL")); sl@0: sl@0: INFO_PRINTF1(_L("Create Histogram for Client ViewFinder")); sl@0: CCamera::CCameraV2Histogram* histogram_CVF = clientVF->CreateHistogramHandleL(); sl@0: if(!histogram_CVF) sl@0: { sl@0: INFO_PRINTF1(_L("Histogram creation for Client ViewFinder unsuccessful")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: sl@0: CleanupStack::PushL(histogram_CVF); sl@0: INFO_PRINTF1(_L("Histogram object was created for Client ViewFinder")); sl@0: CleanupStack::PopAndDestroy(histogram_CVF); sl@0: sl@0: CleanupStack::PopAndDestroy(clientVF); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object was not created using NewL")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: /*------------------------------------------------------ sl@0: Client ViewFinder : RECamClientVFNotificationTest sl@0: *------------------------------------------------------*/ sl@0: RECamClientVFNotificationTest* RECamClientVFNotificationTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamClientVFNotificationTest* self = new (ELeave) RECamClientVFNotificationTest(aAllocTest); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: void RECamClientVFNotificationTest::ConstructL() sl@0: { sl@0: } sl@0: sl@0: RECamClientVFNotificationTest::RECamClientVFNotificationTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-051-HP"); sl@0: } sl@0: sl@0: void RECamClientVFNotificationTest::ViewFinderBufferReady(CCamera::CCameraClientViewFinder& aClientViewFinderHandle, TInt aErrorCode) sl@0: { sl@0: aClientViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamClientVFNotificationTest::DirectHistogramDisplayed(CCamera::CCameraClientViewFinder& aClientViewFinderHandle, CCamera::CCameraV2Histogram& /*aDirectHistogramDisplayed*/, TInt aErrorCode) sl@0: { sl@0: aClientViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamClientVFNotificationTest::ClientHistogramReady(CCamera::CCameraClientViewFinder& aClientViewFinderHandle, MHistogramV2Buffer* /*aClientHistogramBuffer*/, TInt aErrorCode) sl@0: { sl@0: aClientViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamClientVFNotificationTest::ImageProcessingFailed(CCamera::CCameraClientViewFinder& aClientViewFinderHandle, TInt aErrorCode) sl@0: { sl@0: aClientViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: TInt RECamClientVFNotificationTest::CustomInterface(TUid /*aInterface*/, TAny*& /*aPtrInterface*/) sl@0: { sl@0: return KErrNone; sl@0: } sl@0: sl@0: void RECamClientVFNotificationTest::CheckViewFinderNegNotification(TInt aVFHandle, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF4(_L("Expected ClientViewFinder Id %d, received event %x. Error %d."), aVFHandle, iVFHandle, iError); sl@0: if (aVFHandle != iVFHandle || iError != KErrNotSupported) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: TVerdict RECamClientVFNotificationTest::DoTestStepL() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: TInt i; sl@0: TInt err; sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoTestStepL_51L()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory && verdict == EPass ) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamClientVFNotificationTest::DoTestStepL_51L() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraClientViewFinder* clientVF = NULL; sl@0: sl@0: /**************************************************************/ sl@0: MCameraObserver2* observer2 = NULL; sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::NewL(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create client viewfinder from CCamera object")); sl@0: sl@0: TRAP(error, clientVF = CCamera::CCameraClientViewFinder::NewL(*camera, *this)); sl@0: sl@0: if (error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using Observer2 with NewL is successful.")); sl@0: } sl@0: else if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using Observer2 with NewL failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object creation using Observer2 with NewL gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: /**************************************************************/ sl@0: sl@0: // create client viewfinder object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*this, 0, 0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, clientVF = CCamera::CCameraClientViewFinder::NewL(*camera, *this)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(clientVF); sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object was created using NewL")); sl@0: //Test Client ViewFinder APIs sl@0: INFO_PRINTF1(_L("Create Histogram for Client ViewFinder")); sl@0: CCamera::CCameraV2Histogram* histogram_CVF = clientVF->CreateHistogramHandleL(); sl@0: if(!histogram_CVF) sl@0: { sl@0: INFO_PRINTF1(_L("Histogram creation for Client ViewFinder unsuccessful")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PushL(histogram_CVF); sl@0: sl@0: INFO_PRINTF1(_L("Create ImageProcessing for Client ViewFinder")); sl@0: sl@0: TRAPD(err, clientVF->GetTransformationHandleL()); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("ImageProcessing creation for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //set properties for client VF (base class) sl@0: INFO_PRINTF1(_L("GetViewFinderFadingCapabilitiesL for Client ViewFinder")); sl@0: CCameraViewFinder::TViewFinderFadingCapabilities fadingCapabilities; sl@0: TRAP(err,clientVF->GetViewFinderFadingCapabilitiesL(fadingCapabilities)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetViewFinderFadingCapabilitiesL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetViewFinderFadingEffectL for Client ViewFinder")); sl@0: CCameraViewFinder::TViewFinderFadingEffect fadingEffect; sl@0: TRAP(err,clientVF->GetViewFinderFadingEffectL(fadingEffect)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetViewFinderFadingEffectL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetViewFinderFadingEffectL for Client ViewFinder")); sl@0: iInputEventUid = KUidECamEvent2ViewFinderFadingEffect; sl@0: clientVF->SetViewFinderFadingEffectL(fadingEffect); sl@0: CheckNotificationNeg(iInputEventUid, result); sl@0: sl@0: TInt vfHandle=-1; sl@0: clientVF->GetViewFinderHandleL(vfHandle); sl@0: sl@0: //set properties for histogram (for viewfinder) sl@0: TUint supportedHistogramType=0; sl@0: histogram_CVF->GetSupportedHistogramsL(supportedHistogramType); sl@0: if(supportedHistogramType!=0) sl@0: { sl@0: INFO_PRINTF1(_L("unexpected GetSupportedHistogramsL")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectHistogramSupportInfoL for Histogram for Client ViewFinder")); sl@0: TBool directHistogramSupported = EFalse; sl@0: TRAP(err,histogram_CVF->GetDirectHistogramSupportInfoL(directHistogramSupported)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectHistogramSupportInfoL for Histogram for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Client ViewFinder")); sl@0: CCamera::CCameraV2Histogram::THistogramType histogramType = CCamera::CCameraV2Histogram::EHistNone; sl@0: TRAP(err,histogram_CVF->PrepareClientHistogramL(histogramType)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareDirectHistogramL for Histogram for Client ViewFinder")); sl@0: CCamera::CCameraV2Histogram::TDirectHistogramParameters histogramParameters; sl@0: TRAP(err,histogram_CVF->PrepareDirectHistogramL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareDirectHistogramL for Histogram for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("UpdateDirectHistogramPropertiesL for Histogram for Client ViewFinder")); sl@0: TRAP(err,histogram_CVF->UpdateDirectHistogramPropertiesL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("UpdateDirectHistogramPropertiesL for Histogram for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectHistogramPropertiesL for Histogram for Client ViewFinder")); sl@0: TRAP(err,histogram_CVF->GetDirectHistogramPropertiesL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectHistogramPropertiesL for Histogram for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetHistogramStateL for Histogram for Client ViewFinder")); sl@0: TBool histogramActive = EFalse; sl@0: TRAP(err,histogram_CVF->GetHistogramStateL(histogramActive)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetHistogramStateL for Histogram for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //viewfinder starting... sl@0: INFO_PRINTF1(_L("StartClientViewFinderL for Client ViewFinder")); sl@0: TSize size(320,240); sl@0: TRAP(err,clientVF->StartClientViewFinderL(0, CCamera::EFormatFbsBitmapColor64K, size)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("StartClientViewFinderL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: INFO_PRINTF1(_L("GetViewFinderBufferL for Client ViewFinder")); sl@0: CFbsBitmap* bitmap = new(ELeave) CFbsBitmap; sl@0: CleanupStack::PushL(bitmap); sl@0: RCamBuffer2 cameraVFBuffer(bitmap); sl@0: TRAP(err,clientVF->GetViewFinderBufferL(cameraVFBuffer)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetViewFinderBufferL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(bitmap); sl@0: sl@0: TRect clipRect(TPoint(0,0),size); sl@0: TRAP(err,clientVF->StartClientViewFinderL(0, CCamera::EFormatFbsBitmapColor64K, size, clipRect)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("StartClientViewFinderL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: INFO_PRINTF1(_L("GetClientViewFinderStateL for Client ViewFinder")); sl@0: TBool activeVF = EFalse;; sl@0: TRAP(err,clientVF->GetClientViewFinderStateL(activeVF)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetClientViewFinderStateL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("StartHistogram for Client ViewFinder")); sl@0: histogram_CVF->StartHistogram(); sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: INFO_PRINTF1(_L("StopHistogram for Client ViewFinder")); sl@0: histogram_CVF->StopHistogram(); sl@0: sl@0: INFO_PRINTF1(_L("GetClientViewFinderPropertiesL for Client ViewFinder")); sl@0: TInt screenNumber=0; sl@0: CCamera::TFormat imageFormat=CCamera::EFormatFbsBitmapColor64K; sl@0: TRAP(err,clientVF->GetClientViewFinderPropertiesL(screenNumber, imageFormat, size, clipRect)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetClientViewFinderPropertiesL for Client ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("StopClientViewFinder for Client ViewFinder")); sl@0: clientVF->StopClientViewFinder(); sl@0: sl@0: CleanupStack::PopAndDestroy(histogram_CVF); sl@0: CleanupStack::PopAndDestroy(clientVF); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraClientViewFinder object not created")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: /*------------------------------------------------------ sl@0: Direct ViewFinder : RECamV2DirectViewFinderTest sl@0: *------------------------------------------------------*/ sl@0: RECamV2DirectViewFinderTest* RECamV2DirectViewFinderTest::NewL(const TDesC& aTestStep) sl@0: { sl@0: RECamV2DirectViewFinderTest* self = new (ELeave) RECamV2DirectViewFinderTest(aTestStep); sl@0: return self; sl@0: } sl@0: sl@0: RECamV2DirectViewFinderTest::RECamV2DirectViewFinderTest(const TDesC& aTestStep) sl@0: { sl@0: iTestStepName.Copy(aTestStep); sl@0: } sl@0: sl@0: TVerdict RECamV2DirectViewFinderTest::DoTestStepL() sl@0: { sl@0: if(!iTestStepName.Compare(_L("MM-ECM-ADV-U-052-HP"))) sl@0: { sl@0: return DoTestStep_52L(); sl@0: } sl@0: return EInconclusive; sl@0: } sl@0: sl@0: TVerdict RECamV2DirectViewFinderTest::DoTestStep_52L() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: TInt i; sl@0: TInt err; sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoV2DirectVFTestStepL()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory ) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamV2DirectViewFinderTest::DoV2DirectVFTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: MCameraObserver* observer = NULL; sl@0: MDirectViewFinderObserver* directVFObserver = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraV2DirectViewFinder* directVF = NULL; sl@0: sl@0: // using observer sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver")); sl@0: TRAP(error, camera = CCamera::NewL(*observer, 0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create v2 direct viewfinder from CCamera object")); sl@0: sl@0: TRAP(error, directVF = CCamera::CCameraV2DirectViewFinder::NewL(*camera, *directVFObserver)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object creation using old Observer failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object creation using old Observer gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // using observer2 with NewL sl@0: MCameraObserver2* observer2 = NULL; sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::NewL(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create v2 direct viewfinder from CCamera object")); sl@0: sl@0: TRAP(error, directVF = CCamera::CCameraV2DirectViewFinder::NewL(*camera, *directVFObserver)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object creation using Observer2 with NewL failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object creation using Observer2 with NewL gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // create v2 direct viewfinder object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, directVF = CCamera::CCameraV2DirectViewFinder::NewL(*camera, *directVFObserver)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(directVF); sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object was created using NewL")); sl@0: CleanupStack::PopAndDestroy(directVF); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object was not created using NewL")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: /*------------------------------------------------------ sl@0: Direct ViewFinder : RECamV2DirectVFNotificationTest sl@0: *------------------------------------------------------*/ sl@0: RECamV2DirectVFNotificationTest* RECamV2DirectVFNotificationTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamV2DirectVFNotificationTest* self = new (ELeave) RECamV2DirectVFNotificationTest(aAllocTest); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::ConstructL() sl@0: { sl@0: } sl@0: sl@0: RECamV2DirectVFNotificationTest::RECamV2DirectVFNotificationTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-053-HP"); sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::DirectViewFinderFirstFrameDisplayed(CCamera::CCameraV2DirectViewFinder& aDirectViewFinderHandle, TInt aErrorCode) sl@0: { sl@0: aDirectViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::DirectHistogramDisplayed(CCamera::CCameraV2DirectViewFinder& aDirectViewFinderHandle, CCamera::CCameraV2Histogram& /*aDirectHistogramDisplayed*/, TInt aErrorCode) sl@0: { sl@0: aDirectViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::ClientHistogramReady(CCamera::CCameraV2DirectViewFinder& aDirectViewFinderHandle, MHistogramV2Buffer* /*aClientHistogramBuffer*/, TInt aErrorCode) sl@0: { sl@0: aDirectViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::DirectViewFinderFailed(CCamera::CCameraV2DirectViewFinder& aDirectViewFinderHandle, TInt aErrorCode) sl@0: { sl@0: aDirectViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::DirectSnapshotForImageDisplayed(CCamera::CCameraV2DirectViewFinder& aDirectViewFinderHandle, CCamera::CCameraImageCapture& /*aCaptureImageHandle*/, TPostCaptureControlId /*aPostCaptureControlId*/, TInt aErrorCode) sl@0: { sl@0: aDirectViewFinderHandle.GetViewFinderHandleL(iVFHandle); sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: TInt RECamV2DirectVFNotificationTest::CustomInterface(TUid /*aInterface*/, TAny*& /*aPtrInterface*/) sl@0: { sl@0: return KErrNone; sl@0: } sl@0: sl@0: void RECamV2DirectVFNotificationTest::CheckViewFinderNegNotification(TInt aVFHandle, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF4(_L("Expected DirectViewFinder Id %d, received event %x. Error %d."), aVFHandle, iVFHandle, iError); sl@0: if (aVFHandle != iVFHandle || iError != KErrNotSupported) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: TVerdict RECamV2DirectVFNotificationTest::DoTestStepL() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: sl@0: TInt i, err; sl@0: sl@0: for (i =1; ;i++) sl@0: { sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext,i); sl@0: __MM_HEAP_MARK; sl@0: sl@0: TRAP(err,verdict = DoTestStep_53L()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = ((testAlloc == NULL ) && (err == KErrNone)); sl@0: User::Free(testAlloc); sl@0: sl@0: if ((err != KErrNoMemory && verdict == EPass) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: sl@0: __MM_HEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamV2DirectVFNotificationTest::DoTestStep_53L() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraV2DirectViewFinder* directVF = NULL; sl@0: sl@0: // create client viewfinder object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*this, 0, 0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, directVF = CCamera::CCameraV2DirectViewFinder::NewL(*camera, *this)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(directVF); sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object was created using NewL")); sl@0: //Test Direct ViewFinder APIs sl@0: INFO_PRINTF1(_L("Create Histogram for Direct ViewFinder")); sl@0: CCamera::CCameraV2Histogram* histogram_DVF = directVF->CreateHistogramHandleL(); sl@0: if(!histogram_DVF) sl@0: { sl@0: INFO_PRINTF1(_L("Histogram creation for Direct ViewFinder unsuccessful")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PushL(histogram_DVF); sl@0: sl@0: INFO_PRINTF1(_L("Create ImageProcessing for Direct ViewFinder")); sl@0: sl@0: TRAPD(err, directVF->GetTransformationHandleL()); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("ImageProcessing creation for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //set properties for direct VF (base class) sl@0: INFO_PRINTF1(_L("GetViewFinderFadingCapabilitiesL for Direct ViewFinder")); sl@0: CCameraViewFinder::TViewFinderFadingCapabilities fadingCapabilities; sl@0: TRAP(err,directVF->GetViewFinderFadingCapabilitiesL(fadingCapabilities)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetViewFinderFadingCapabilitiesL for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetViewFinderFadingEffectL for Direct ViewFinder")); sl@0: CCameraViewFinder::TViewFinderFadingEffect fadingEffect; sl@0: TRAP(err,directVF->GetViewFinderFadingEffectL(fadingEffect)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetViewFinderFadingEffectL for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetViewFinderFadingEffectL for Direct ViewFinder")); sl@0: iInputEventUid = KUidECamEvent2ViewFinderFadingEffect; sl@0: directVF->SetViewFinderFadingEffectL(fadingEffect); sl@0: CheckNotificationNeg(iInputEventUid, result); sl@0: sl@0: TInt vfHandle=-1; sl@0: directVF->GetViewFinderHandleL(vfHandle); sl@0: sl@0: //set properties for histogram (for viewfinder) sl@0: TUint supportedHistogramType=0; sl@0: histogram_DVF->GetSupportedHistogramsL(supportedHistogramType); sl@0: if(supportedHistogramType!=0) sl@0: { sl@0: INFO_PRINTF1(_L("unexpected GetSupportedHistogramsL")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectHistogramSupportInfoL for Histogram for Direct ViewFinder")); sl@0: TBool directHistogramSupported = EFalse; sl@0: TRAP(err,histogram_DVF->GetDirectHistogramSupportInfoL(directHistogramSupported)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectHistogramSupportInfoL for Histogram for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Direct ViewFinder")); sl@0: CCamera::CCameraV2Histogram::THistogramType histogramType = CCamera::CCameraV2Histogram::EHistNone; sl@0: TRAP(err,histogram_DVF->PrepareClientHistogramL(histogramType)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareDirectHistogramL for Histogram for Direct ViewFinder")); sl@0: CCamera::CCameraV2Histogram::TDirectHistogramParameters histogramParameters; sl@0: TRAP(err,histogram_DVF->PrepareDirectHistogramL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareDirectHistogramL for Histogram for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("UpdateDirectHistogramPropertiesL for Histogram for Direct ViewFinder")); sl@0: TRAP(err,histogram_DVF->UpdateDirectHistogramPropertiesL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("UpdateDirectHistogramPropertiesL for Histogram for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectHistogramPropertiesL for Histogram for Direct ViewFinder")); sl@0: TRAP(err,histogram_DVF->GetDirectHistogramPropertiesL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectHistogramPropertiesL for Histogram for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetHistogramStateL for Histogram for Direct ViewFinder")); sl@0: TBool histogramActive = EFalse; sl@0: TRAP(err,histogram_DVF->GetHistogramStateL(histogramActive)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetHistogramStateL for Histogram for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //viewfinder starting... sl@0: INFO_PRINTF1(_L("StartViewFinderDirectL for Direct ViewFinder")); sl@0: TSize size(320,240); sl@0: TRect rect(TPoint(0,0),size); sl@0: TRect cliprect(rect); sl@0: RWsSession ws; sl@0: CWsScreenDevice* screenDevice = NULL; sl@0: RWindow window; sl@0: TRAP(err,directVF->StartViewFinderDirectL(ws, *screenDevice, window, rect)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("StartViewFinderDirectL for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: TRAP(err,directVF->StartViewFinderDirectL(ws, *screenDevice, window, rect, cliprect)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("StartViewFinderDirectL (with cliprect) for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: INFO_PRINTF1(_L("GetDirectViewFinderPropertiesL for Direct ViewFinder")); sl@0: TInt screenNumber=0; sl@0: TRAP(err,directVF->GetDirectViewFinderPropertiesL(screenNumber, rect, cliprect)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectViewFinderPropertiesL for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PauseViewFinderDirect for Direct ViewFinder")); sl@0: directVF->PauseViewFinderDirect(); sl@0: sl@0: INFO_PRINTF1(_L("ResumeViewFinderDirect for Direct ViewFinder")); sl@0: directVF->ResumeViewFinderDirect(); sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: INFO_PRINTF1(_L("StartHistogram for Direct ViewFinder")); sl@0: histogram_DVF->StartHistogram(); sl@0: CheckViewFinderNegNotification(vfHandle, result); sl@0: sl@0: INFO_PRINTF1(_L("StopHistogram for Direct ViewFinder")); sl@0: histogram_DVF->StopHistogram(); sl@0: sl@0: INFO_PRINTF1(_L("GetViewFinderStateL for Direct ViewFinder")); sl@0: CCamera::CCameraV2DirectViewFinder::TViewFinderState vfState = CCamera::CCameraV2DirectViewFinder::EViewFinderInActive; sl@0: TRAP(err,directVF->GetViewFinderStateL(vfState)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetViewFinderStateL for Direct ViewFinder: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //access direct snapshot functionality sl@0: INFO_PRINTF1(_L("Access direct snapshot functionality")); sl@0: CCamera::CCameraDirectSnapshot* directSnapshot = directVF->GetDirectSnapshotHandleL(); sl@0: if(directSnapshot == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("Direct Snapshot creation for Direct ViewFinder unsuccessful")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PushL(directSnapshot); sl@0: sl@0: INFO_PRINTF1(_L("Get parent viewfinder for direct snapshot")); sl@0: CCamera::CCameraV2DirectViewFinder* directViewFinder = NULL; sl@0: TRAP(err, directSnapshot->GetDirectViewFinderL(directViewFinder)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectViewFinderL for Direct ViewFinder Snapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt viewfinderHandle = -1; sl@0: directViewFinder->GetViewFinderHandleL(viewfinderHandle); sl@0: if(vfHandle != viewfinderHandle) sl@0: { sl@0: INFO_PRINTF1(_L("Parent Viewfinder for Direct ViewFinder Snapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CCamera::CCameraDirectSnapshot::TDirectSnapshotParameters directSnapshotParameters; sl@0: sl@0: if(directSnapshotParameters.Size() != sizeof(CCamera::CCameraDirectSnapshot::TDirectSnapshotParameters) || sl@0: directSnapshotParameters.Version() != KECamDirectSnapshotParametersCurrentVersion) sl@0: { sl@0: INFO_PRINTF1(_L("TDirectSnapshotParameters has different version for Direct Snapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetAspectRatioState for Direct Snapshot")); sl@0: directSnapshotParameters.SetAspectRatioState(ETrue); sl@0: TBool aspectRatioState = directSnapshotParameters.IsAspectRatioMaintained(); sl@0: if(!aspectRatioState) sl@0: { sl@0: INFO_PRINTF1(_L("AspectRatioState for Direct Snapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: directSnapshotParameters.SetAspectRatioState(EFalse); sl@0: aspectRatioState = directSnapshotParameters.IsAspectRatioMaintained(); sl@0: if(aspectRatioState != EFalse) sl@0: { sl@0: INFO_PRINTF1(_L("AspectRatioState for Direct Snapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("EnableDirectSnapshotL for Direct Snapshot")); sl@0: TRAP(err, directSnapshot->EnableDirectSnapshotL(directSnapshotParameters)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("EnableDirectSnapshotL for DirectSnapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectSnapshotStateL for Direct Snapshot")); sl@0: CCamera::CCameraDirectSnapshot::TDirectSnapshotState directSnapshotState; sl@0: TRAP(err, directSnapshot->GetDirectSnapshotStateL(directSnapshotState)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectSnapshotStateL for DirectSnapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(CCamera::CCameraDirectSnapshot::EDirectSnapshotEnabled != directSnapshotState) sl@0: { sl@0: INFO_PRINTF1(_L("DirectSnapshotState not set properly: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectSnapshotParametersL for Direct Snapshot")); sl@0: CCamera::CCameraDirectSnapshot::TDirectSnapshotParameters directSnapshotParam; sl@0: TRAP(err, directSnapshot->GetDirectSnapshotParametersL(directSnapshotParam)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectSnapshotParametersL for DirectSnapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(directSnapshotParam.IsAspectRatioMaintained() != directSnapshotParameters.IsAspectRatioMaintained()) sl@0: { sl@0: INFO_PRINTF1(_L("DirectSnapshotParameters for DirectSnapshot wrongly set: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetDirectSnapshotParametersL for Direct Snapshot")); sl@0: directSnapshotParameters.SetAspectRatioState(ETrue); sl@0: TRAP(err, directSnapshot->SetDirectSnapshotParametersL(directSnapshotParameters)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("SetDirectSnapshotParametersL for DirectSnapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("DisableDirectSnapshot for Direct Snapshot")); sl@0: directSnapshot->DisableDirectSnapshot(); sl@0: TRAP(err, directSnapshot->GetDirectSnapshotStateL(directSnapshotState)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectSnapshotStateL for DirectSnapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(CCamera::CCameraDirectSnapshot::EDirectSnapshotDisabled != directSnapshotState) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectSnapshotStateL for DirectSnapshot: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("StopDirectViewFinder for Direct ViewFinder")); sl@0: directVF->StopDirectViewFinder(); sl@0: sl@0: CleanupStack::PopAndDestroy(directSnapshot); sl@0: CleanupStack::PopAndDestroy(histogram_DVF); sl@0: CleanupStack::PopAndDestroy(directVF); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraV2DirectViewFinder object not created")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: /*------------------------------------------------------------------ sl@0: Pre Image Capture Control : RECamPreImgCaptureNotificationTest sl@0: *-----------------------------------------------------------------*/ sl@0: RECamPreImgCaptureNotificationTest* RECamPreImgCaptureNotificationTest::NewL(TBool aAllocTest) sl@0: { sl@0: return new (ELeave)RECamPreImgCaptureNotificationTest(aAllocTest); sl@0: } sl@0: sl@0: RECamPreImgCaptureNotificationTest::RECamPreImgCaptureNotificationTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-054-HP"); sl@0: iCaptureImageHandle = NULL; sl@0: } sl@0: sl@0: void RECamPreImgCaptureNotificationTest::PrepareImageComplete(CCamera::CCameraImageCapture* aCaptureImageHandle, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = aCaptureImageHandle; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: TInt RECamPreImgCaptureNotificationTest::CustomInterface(TUid /*aInterface*/, TAny*& /*aPtrInterface*/) sl@0: { sl@0: return KErrNone; sl@0: } sl@0: sl@0: void RECamPreImgCaptureNotificationTest::CheckCaptureNotification(CCamera::CCameraImageCapture*& aImageCapture, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF2(_L("Pre Image Capture Control Error %d, "), iError); sl@0: if (iError != KErrNone) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: else sl@0: { sl@0: aImageCapture = iCaptureImageHandle; sl@0: } sl@0: } sl@0: sl@0: TVerdict RECamPreImgCaptureNotificationTest::DoTestStepL() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: sl@0: TInt i, err; sl@0: sl@0: for (i =1; ;i++) sl@0: { sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext,i); sl@0: __MM_HEAP_MARK; sl@0: sl@0: TRAP(err,verdict = DoPreImgCaptureTestStepL()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = ((testAlloc == NULL ) && (err == KErrNone)); sl@0: User::Free(testAlloc); sl@0: sl@0: if ((err != KErrNoMemory && verdict == EPass) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: sl@0: __MM_HEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamPreImgCaptureNotificationTest::DoPreImgCaptureTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraPreImageCaptureControl* preImgCapture = NULL; sl@0: sl@0: // using observer sl@0: __MM_HEAP_MARK; sl@0: MCameraObserver* observer=NULL; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver")); sl@0: TRAP(error, camera = CCamera::NewL(*observer, 0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create PreImageCaptureControl from CCamera object")); sl@0: sl@0: TRAP(error, preImgCapture = CCamera::CCameraPreImageCaptureControl::NewL(*camera, *this)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object creation using old Observer failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object creation using old Observer gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // using observer2 with NewL sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::NewL(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create PreImageCaptureControl from CCamera object")); sl@0: sl@0: TRAP(error, preImgCapture = CCamera::CCameraPreImageCaptureControl::NewL(*camera, *this)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object creation using Observer2 with NewL failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object creation using Observer2 with NewL gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // create pre image control object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, preImgCapture = CCamera::CCameraPreImageCaptureControl::NewL(*camera, *this)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(preImgCapture); sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object was created using NewL")); sl@0: sl@0: INFO_PRINTF1(_L("GetDirectSnapshotSupportInfoL for PreImageCaptureControl")); sl@0: TUint directSnapshotSupportInfo = 0; sl@0: TRAPD(err, preImgCapture->GetDirectSnapshotSupportInfoL(directSnapshotSupportInfo)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectSnapshotSupportInfoL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetSupportedEmbeddedStillCaptureSettingsL for PreImageCaptureControl")); sl@0: RArray supportedEmbeddedStillCaptureSettings; sl@0: TRAP(err, preImgCapture->GetSupportedEmbeddedStillCaptureSettingsL(supportedEmbeddedStillCaptureSettings)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetSupportedEmbeddedStillCaptureSettingsL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(supportedEmbeddedStillCaptureSettings.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("Number of SupportedEmbeddedStillCaptureSettings for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetSupportedDirectSavingTypeL for PreImageCaptureControl")); sl@0: CCamera::CCameraPreImageCaptureControl::TDirectSavingType supportedDirectSavingType sl@0: = CCamera::CCameraPreImageCaptureControl::EDirectSavingNotUsed; sl@0: TRAP(err, preImgCapture->GetSupportedDirectSavingTypeL(supportedDirectSavingType)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetSupportedDirectSavingTypeL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetSequentialImageFilenameL for PreImageCaptureControl")); sl@0: _LIT8(KDirectSavingFileName, "C:\\ECam.jpg"); sl@0: TInt seqNum = 0; sl@0: TRAP(err, preImgCapture->SetSequentialImageFilenameL(KDirectSavingFileName, seqNum)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SetSequentialImageFilenameL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetLowerResolutionSequentialImageFilenameL for PreImageCaptureControl")); sl@0: _LIT8(KLowResDirectSavingFileName, "C:\\ECamLowRes.jpg"); sl@0: TRAP(err, preImgCapture->SetLowerResolutionSequentialImageFilenameL(KLowResDirectSavingFileName, seqNum)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SetLowerResolutionSequentialImageFilenameL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectSavingTypeL for PreImageCaptureControl")); sl@0: CCamera::CCameraPreImageCaptureControl::TDirectSavingType directSavingType sl@0: = CCamera::CCameraPreImageCaptureControl::EDirectSavingNotUsed; sl@0: TRAP(err, preImgCapture->GetDirectSavingTypeL(directSavingType)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectSavingTypeL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetDirectSavingTypeL for PreImageCaptureControl")); sl@0: TRAP(err, preImgCapture->SetDirectSavingTypeL(CCamera::CCameraPreImageCaptureControl::EDirectSavingHighResolutionFileOnly)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SetDirectSavingTypeL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetCaptureEventSupportInfoL for PreImageCaptureControl")); sl@0: TUint supportedDriveModes = 0; sl@0: TRAP(err, preImgCapture->GetCaptureEventSupportInfoL(supportedDriveModes)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetCaptureEventSupportInfoL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImageFormatsSupportedL for PreImageCaptureControl")); sl@0: TSize size(640,480); sl@0: TUint imageFormatsSupported = 0; sl@0: TRAP(err, preImgCapture->GetImageFormatsSupportedL(imageFormatsSupported, size)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetImageFormatsSupportedL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetPixelAspectsSupportedL for PreImageCaptureControl")); sl@0: TUint pixelAspectsSupported = 0; sl@0: TRAP(err, preImgCapture->GetPixelAspectsSupportedL(pixelAspectsSupported, CCamera::EFormatFbsBitmapColor16M, size)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetPixelAspectsSupportedL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImageMaxMemorySizeSettingSupportInfoL for PreImageCaptureControl")); sl@0: TBool maxMemorySizeSettingSupported = EFalse; sl@0: TRAP(err, preImgCapture->GetImageMaxMemorySizeSettingSupportInfoL(maxMemorySizeSettingSupported)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetImageMaxMemorySizeSettingSupportInfoL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImageMaxMemorySizeL for PreImageCaptureControl")); sl@0: TUint memorySize = 0; sl@0: TRAP(err, preImgCapture->GetImageMaxMemorySizeL(memorySize)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetImageMaxMemorySizeL for PreImageCaptureControl : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetSupportedProcessingOptionsL for PreImageCaptureControl")); sl@0: TUint processingOptions = 0; sl@0: TRAP(err, preImgCapture->GetSupportedProcessingOptionsL(processingOptions)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetSupportedProcessingOptionsL for PreImageCaptureControl : unexpected result!")); sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareImageCapture for PreImageCaptureControl")); sl@0: CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters prepareImageParameters; sl@0: sl@0: INFO_PRINTF1(_L("Setting processing options member variable")); sl@0: TUint options = 0; sl@0: options |= CCamera::CCameraPreImageCaptureControl::EEcamNormalProcessing; sl@0: prepareImageParameters.SetImageProcessingOptions(options); sl@0: INFO_PRINTF1(_L("Getting processing options member variable")); sl@0: TUint retrievedOptions = 0; sl@0: prepareImageParameters.GetImageProcessingOptions(retrievedOptions); sl@0: if(retrievedOptions != options) sl@0: { sl@0: INFO_PRINTF1(_L("Set image processing option does not match retrieved image processing option")); sl@0: result = EFail; sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("Set image processing option matches retrieved image processing option")); sl@0: } sl@0: sl@0: MCaptureImageObserver* captureImageObserver = NULL; sl@0: preImgCapture->PrepareImageCapture(prepareImageParameters, *captureImageObserver); sl@0: CCamera::CCameraImageCapture* imageCapture = NULL; sl@0: CheckCaptureNotification(imageCapture, result); sl@0: sl@0: if(imageCapture == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraImageCapture object not created!")); sl@0: result = EFail; sl@0: } sl@0: else sl@0: { sl@0: delete imageCapture; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object was not created using NewL")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: /*------------------------------------------------------------------ sl@0: Image Capture Control : RECamImgCaptureNotificationTest sl@0: *-----------------------------------------------------------------*/ sl@0: RECamImgCaptureNotificationTest* RECamImgCaptureNotificationTest::NewL(TBool aAllocTest) sl@0: { sl@0: return new (ELeave)RECamImgCaptureNotificationTest(aAllocTest); sl@0: } sl@0: sl@0: RECamImgCaptureNotificationTest::RECamImgCaptureNotificationTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-055-HP"); sl@0: iCaptureImageHandle = NULL; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::PrepareImageComplete(CCamera::CCameraImageCapture* aCaptureImageHandle, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = aCaptureImageHandle; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: TInt RECamImgCaptureNotificationTest::CustomInterface(TUid /*aInterface*/, TAny*& /*aPtrInterface*/) sl@0: { sl@0: return KErrNone; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::CheckPreCaptureNotification(CCamera::CCameraImageCapture*& aImageCapture, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF2(_L("Pre Image Capture Control Error %d, "), iError); sl@0: if (iError != KErrNone) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: else sl@0: { sl@0: aImageCapture = iCaptureImageHandle; sl@0: } sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::IndividualImageControlHandle(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ImageBufferReady(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ClientSnapshotForImageReady(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, MCameraBuffer2* /*aSnapshotBuffer*/, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::DirectSnapshotForImageDisplayed(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::CutDownImageDirectSavingCompleted(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ImageDirectSavingCompleted(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ImageCaptureComplete(CCamera::CCameraImageCapture& aCaptureImageHandle, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ClientHistogramForImageReady(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, MHistogramV2Buffer* /*aClientHistogramBuffer*/, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ClientHistogramForSnapshotReady(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, MHistogramV2Buffer* /*aClientHistogramBuffer*/, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::DirectHistogramForSnapshotDisplayed(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, CCamera::CCameraV2Histogram& /*aDirectHistogramDisplayed*/, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::ProcessingFailed(CCamera::CCameraImageCapture& aCaptureImageHandle, TPostCaptureControlId aPostCaptureControlId, TUint aProcessingTypes, TInt aErrorCode) sl@0: { sl@0: iCaptureImageHandle = &aCaptureImageHandle; sl@0: iPostCaptureControlId = aPostCaptureControlId; sl@0: iProcessingTypes = aProcessingTypes; sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::CheckCaptureNotification(CCamera::CCameraImageCapture*& aImageCapture, TPostCaptureControlId& aPostCaptureControlId, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF2(_L("Image Capture Control Error %d, "), iError); sl@0: if (iError != KErrNotSupported) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: else sl@0: { sl@0: aImageCapture = iCaptureImageHandle; sl@0: aPostCaptureControlId = iPostCaptureControlId; sl@0: } sl@0: } sl@0: sl@0: void RECamImgCaptureNotificationTest::CheckCaptureCompletion(CCamera::CCameraImageCapture*& aImageCapture, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF2(_L("Image Capture Control Error %d, "), iError); sl@0: if (iError != KErrNotSupported) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: else sl@0: { sl@0: aImageCapture = iCaptureImageHandle; sl@0: } sl@0: } sl@0: sl@0: TVerdict RECamImgCaptureNotificationTest::DoTestStepL() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: sl@0: TInt i,err; sl@0: sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoImgCaptureAdvFuncConstruction()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory && verdict == EPass) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamImgCaptureNotificationTest::DoImgCaptureAdvFuncConstruction() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraPreImageCaptureControl* preImgCapture = NULL; sl@0: sl@0: // create pre image control object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, preImgCapture = CCamera::CCameraPreImageCaptureControl::NewL(*camera, *this)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(preImgCapture); sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object was created using NewL")); sl@0: sl@0: INFO_PRINTF1(_L("PrepareImageCapture for PreImageCaptureControl")); sl@0: CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters prepareImageParameters; sl@0: preImgCapture->PrepareImageCapture(prepareImageParameters, *this); sl@0: CCamera::CCameraImageCapture* imageCapture = NULL; sl@0: CheckPreCaptureNotification(imageCapture, result); sl@0: sl@0: if(imageCapture == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraImageCapture object not created!")); sl@0: result = EFail; sl@0: } sl@0: else sl@0: { sl@0: CleanupStack::PushL(imageCapture); sl@0: // image capture opertions. sl@0: sl@0: INFO_PRINTF1(_L("Create Histogram for Image Capture")); sl@0: CCamera::CCameraV2Histogram* histogram_IC = NULL; sl@0: TRAP(error, histogram_IC = imageCapture->CreateHistogramHandleL()); sl@0: sl@0: if(error != KErrNone /*|| !histogram_IC*/) sl@0: { sl@0: INFO_PRINTF1(_L("Histogram creation for Image Capture unsuccessful")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(error); sl@0: } sl@0: sl@0: CleanupStack::PushL(histogram_IC); sl@0: sl@0: INFO_PRINTF1(_L("Create ImageProcessing for Image Capture ")); sl@0: sl@0: CCamera::CCameraImageProcessing* impProc = NULL; sl@0: TRAP(error, impProc = imageCapture->GetTransformationHandleL()); sl@0: sl@0: if(error != KErrNone /*|| !impProc*/) sl@0: { sl@0: INFO_PRINTF1(_L("ImageProcessing creation for Image Capture unsuccessful")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(error); sl@0: } sl@0: sl@0: CleanupStack::PushL(impProc); sl@0: sl@0: INFO_PRINTF1(_L("Create snapshot for Image Capture")); sl@0: TInt viewfinderID = 0; sl@0: CCamera::CCameraSnapshot* snapshot_IC = NULL; sl@0: TRAP(error,snapshot_IC = imageCapture->GetSnapshotHandleL(viewfinderID)); sl@0: sl@0: if(error != KErrNone /*||!snapshot_IC*/) sl@0: { sl@0: INFO_PRINTF1(_L("snapshot creation for Image Capture : unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(error); sl@0: } sl@0: CleanupStack::PushL(snapshot_IC); sl@0: sl@0: INFO_PRINTF1(_L("Create histogram for snapshot for Image Capture")); sl@0: CCamera::CCameraV2Histogram* histogram_snapshot_IC = NULL; sl@0: sl@0: TRAP(error, histogram_snapshot_IC = snapshot_IC->CreateHistogramHandleL()); sl@0: sl@0: if(error != KErrNone /*|| !histogram_snapshot_IC*/) sl@0: { sl@0: INFO_PRINTF1(_L("Histogram creation for snapshot for Image Capture unsuccessful")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(error); sl@0: } sl@0: CleanupStack::PushL(histogram_snapshot_IC); sl@0: sl@0: //check img proc for image capture sl@0: INFO_PRINTF1(_L("GetSupportedTransformationsL for imgProc for Image Capture")); sl@0: RArray transformations; sl@0: TRAPD(err, impProc->GetSupportedTransformationsL(transformations)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetSupportedTransformationsL for imgProc for Image Capture : unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: if(transformations.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("Number of SupportedTransformations for imgProc for Image Capture : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: transformations.Close(); sl@0: sl@0: INFO_PRINTF1(_L("Check New Img Proc methods for Image Capture")); sl@0: CCamera::CCameraImageProcessing::TOrientationReference orientationRef sl@0: = CCamera::CCameraImageProcessing::EOrientationReferenceTiltOrientation; sl@0: TUint suppRelativeRotation=0; sl@0: TUint supportedRelMirroring=0; sl@0: TUint supportedRelFlipping=0; sl@0: TRAP(err, impProc->GetSupportedRelativeOrientationOptionsL(orientationRef, suppRelativeRotation, supportedRelMirroring, supportedRelFlipping)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetSupportedRelativeOrientationOptionsL for imgProc for Image Capture : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CCamera::CCameraImageProcessing::TRelativeRotation relRotation = sl@0: CCamera::CCameraImageProcessing::ERelativeRotation0Degrees; sl@0: sl@0: CCamera::CCameraImageProcessing::TRelativeMirror relMirror = sl@0: CCamera::CCameraImageProcessing::ERelativeMirrorNone; sl@0: sl@0: CCamera::CCameraImageProcessing::TRelativeFlipping relFlipping = sl@0: CCamera::CCameraImageProcessing::ERelativeFlippingNone; sl@0: sl@0: TRAP(err, impProc->GetCurrentRelativeOrientationOptionsL(orientationRef, relRotation, relMirror, relFlipping)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetCurrentRelativeOrientationOptionsL for imgProc for Image Capture : unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: TRAP(err, impProc->SetRelativeOrientationOptionsL(orientationRef, relRotation, relMirror, relFlipping)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SetRelativeOrientationOptionsL for imgProc for Image Capture : unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: //prepare histogram for image capture sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Image Capture")); sl@0: CCamera::CCameraV2Histogram::THistogramType histogramType = CCamera::CCameraV2Histogram::EHistNone; sl@0: TRAP(err,histogram_IC->PrepareClientHistogramL(histogramType)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: //prepare snapshot for image capture sl@0: INFO_PRINTF1(_L("PrepareSnapshotL for Snapshot for Image Capture")); sl@0: CCamera::CCameraSnapshot::TSnapshotParameters snapshotParam; sl@0: TRAP(err,snapshot_IC->PrepareSnapshotL(snapshotParam)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareSnapshotL for Snapshot for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: //prepare histogram for snapshot for image capture sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for snapshot for Image Capture")); sl@0: TRAP(err,histogram_snapshot_IC->PrepareClientHistogramL(histogramType)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Snapshot for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: //image capture operations sl@0: INFO_PRINTF1(_L("GetPrepareImageParametersL for Image Capture")); sl@0: CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters prepareImageParameters; sl@0: TRAP(err,imageCapture->GetPrepareImageParametersL(prepareImageParameters)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetPrepareImageParametersL for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("CaptureImage for Image Capture")); sl@0: imageCapture->CaptureImage(); sl@0: sl@0: CCamera::CCameraImageCapture* captImg = NULL; sl@0: CCamera::CCameraPostImageCaptureControl* postImgCapt = NULL; sl@0: TPostCaptureControlId postCaptureControlId = 0; sl@0: sl@0: TRAP(err, iCaptureImageHandle->GetPostCaptureControlHandleL(postImgCapt, iPostCaptureControlId)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetPostCaptureControlHandleL for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: if(postImgCapt == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("PostCaptureControl object was not provided for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: else sl@0: { sl@0: CleanupStack::PushL(postImgCapt); sl@0: //perform operations on post image capture control sl@0: INFO_PRINTF1(_L("GetPostCaptureControlId for post imgCapt object for Image Capture")); sl@0: TPostCaptureControlId postCaptCtrlId = 0; sl@0: postImgCapt->GetPostCaptureControlId(postCaptCtrlId); sl@0: if(postCaptCtrlId != iPostCaptureControlId) sl@0: { sl@0: INFO_PRINTF1(_L("PostCaptureControlId unexpected!")); sl@0: result = EFail; sl@0: } sl@0: postCaptureControlId = postCaptCtrlId; sl@0: sl@0: INFO_PRINTF1(_L("ImageCaptureHandle for post imgCapt object for Image Capture")); sl@0: TRAP(err, CCamera::CCameraImageCapture* captImg1 = postImgCapt->ImageCaptureHandle()); sl@0: if(err != KErrNone /*|| captImg1 == NULL*/) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraImageCapture object from post image capture object is NULL and unexpected!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(postImgCapt); sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: CleanupStack::PopAndDestroy(camera); sl@0: User::Leave(err); sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImageSequenceNumberL for post imgCapt object for Image Capture")); sl@0: TUint seqNum = 0; sl@0: TRAP(err, postImgCapt->GetImageSequenceNumberL(seqNum)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetImageSequenceNumberL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetImagePriorityL for post imgCapt object for Image Capture")); sl@0: TECamImagePriority imagePriority = EECamImagePriorityLow; sl@0: TRAP(err, postImgCapt->SetImagePriorityL(imagePriority)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SetImagePriorityL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImagePriorityL for post imgCapt object for Image Capture")); sl@0: TRAP(err, postImgCapt->GetImagePriorityL(imagePriority)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetImagePriorityL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PauseProcessing for post imgCapt object for Image Capture")); sl@0: postImgCapt->PauseProcessing(0); sl@0: sl@0: INFO_PRINTF1(_L("ResumeProcessingL for post imgCapt object for Image Capture")); sl@0: TRAP(err, postImgCapt->ResumeProcessingL(0)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("ResumeProcessingL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImageStateL for post imgCapt object for Image Capture")); sl@0: CCamera::CCameraPostImageCaptureControl::TImageState imgState = sl@0: CCamera::CCameraPostImageCaptureControl::EProcessingPending; sl@0: TRAP(err, postImgCapt->GetImageStateL(imgState)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetImageStateL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetBufferStateL for post imgCapt object for Image Capture")); sl@0: CCamera::CCameraPostImageCaptureControl::TBufferState bufferState = sl@0: CCamera::CCameraPostImageCaptureControl::EBufferNotPresent; sl@0: TRAP(err, postImgCapt->GetBufferStateL(bufferState)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetBufferStateL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetImageBufferL for post imgCapt object for Image Capture")); sl@0: MCameraImageBuffer* cameraImageBuffer = NULL; sl@0: TRAP(err, postImgCapt->GetImageBufferL(*cameraImageBuffer)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetImageBufferL for post image capture object unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("CancelImage for post imgCapt object for Image Capture")); sl@0: postImgCapt->CancelImage(); sl@0: } sl@0: sl@0: CheckCaptureCompletion(captImg, result); sl@0: sl@0: //perform operations on image capture sl@0: INFO_PRINTF1(_L("GetNumImagesExposedL for Image Capture")); sl@0: TUint numImagesExposed = 0; sl@0: TRAP(err, imageCapture->GetNumImagesExposedL(numImagesExposed)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetNumImagesExposedL for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetNumTotalImagesL for Image Capture")); sl@0: TRAP(err, imageCapture->GetNumTotalImagesL(numImagesExposed)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetNumTotalImagesL for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetCaptureImagePriorityL for Image Capture")); sl@0: TECamImagePriority imagePriority = EECamImagePriorityLow; sl@0: TRAP(err, imageCapture->SetCaptureImagePriorityL(imagePriority)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SetCaptureImagePriorityL for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetCaptureImagePriorityL for Image Capture")); sl@0: TRAP(err, imageCapture->GetCaptureImagePriorityL(imagePriority)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetCaptureImagePriorityL for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PauseProcessing for Image Capture")); sl@0: imageCapture->PauseProcessing(0); sl@0: sl@0: INFO_PRINTF1(_L("ResumeProcessingL for Image Capture")); sl@0: TRAP(err, imageCapture->ResumeProcessingL(0)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("ResumeProcessingL for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("CancelCaptureImage for Image Capture")); sl@0: imageCapture->CancelCaptureImage(); sl@0: sl@0: //start histogram for image capture sl@0: INFO_PRINTF1(_L("StartHistogram for Image Capture")); sl@0: histogram_IC->StartHistogram(); sl@0: CCamera::CCameraImageCapture* camImgCapture=NULL; sl@0: TPostCaptureControlId postCaptCtrlId = 0; sl@0: CheckCaptureNotification(camImgCapture, postCaptCtrlId, result); sl@0: if(camImgCapture == NULL || postCaptCtrlId != postCaptureControlId) sl@0: { sl@0: INFO_PRINTF1(_L("StartHistogram for Histogram for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("StopHistogram for histogram for Image Capture")); sl@0: histogram_IC->StopHistogram(); sl@0: sl@0: //start snapshot for image capture sl@0: INFO_PRINTF1(_L("EnableSnapshotL for snapshot for Image Capture")); sl@0: TRAP(err,snapshot_IC->EnableSnapshotL()); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("EnableSnapshotL for snapshot for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: camImgCapture = NULL; sl@0: camImgCapture = 0; sl@0: CheckCaptureNotification(camImgCapture, postCaptCtrlId, result); sl@0: if(camImgCapture == NULL || postCaptCtrlId != postCaptureControlId) sl@0: { sl@0: INFO_PRINTF1(_L("EnableSnapshotL for snapshot for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //start histogram for snapshot for image capture sl@0: INFO_PRINTF1(_L("StartHistogram for snapshot for Image Capture")); sl@0: histogram_snapshot_IC->StartHistogram(); sl@0: camImgCapture=NULL; sl@0: postCaptCtrlId = 0; sl@0: CheckCaptureNotification(camImgCapture, postCaptCtrlId, result); sl@0: if(camImgCapture == NULL || postCaptCtrlId != postCaptureControlId) sl@0: { sl@0: INFO_PRINTF1(_L("StartHistogram for Histogram for snapshot for Image Capture unexpected!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("StopHistogram for histogram for snapshot for Image Capture")); sl@0: histogram_snapshot_IC->StopHistogram(); sl@0: // sl@0: sl@0: INFO_PRINTF1(_L("DisableSnapshotL for snapshot for Image Capture")); sl@0: TRAP(err,snapshot_IC->DisableSnapshotL()); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("DisableSnapshotL for snapshot for Image Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(postImgCapt); sl@0: CleanupStack::PopAndDestroy(histogram_snapshot_IC); sl@0: CleanupStack::PopAndDestroy(snapshot_IC); sl@0: CleanupStack::PopAndDestroy(impProc); sl@0: CleanupStack::PopAndDestroy(histogram_IC); sl@0: CleanupStack::PopAndDestroy(imageCapture); sl@0: } sl@0: CleanupStack::PopAndDestroy(preImgCapture); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraPreImageCaptureControl object was not created using NewL")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: /*------------------------------------------------------ sl@0: Video Capture Control : RECamVideoCaptureControlTest sl@0: *------------------------------------------------------*/ sl@0: RECamVideoCaptureControlTest* RECamVideoCaptureControlTest::NewL(const TDesC& aTestStep) sl@0: { sl@0: RECamVideoCaptureControlTest* self = new (ELeave) RECamVideoCaptureControlTest(aTestStep); sl@0: return self; sl@0: } sl@0: sl@0: RECamVideoCaptureControlTest::RECamVideoCaptureControlTest(const TDesC& aTestStep) sl@0: { sl@0: iTestStepName.Copy(aTestStep); sl@0: } sl@0: sl@0: TVerdict RECamVideoCaptureControlTest::DoTestStepL() sl@0: { sl@0: if(!iTestStepName.Compare(_L("MM-ECM-ADV-U-056-HP"))) sl@0: { sl@0: return DoTestStep_56L(); sl@0: } sl@0: return EInconclusive; sl@0: } sl@0: sl@0: TVerdict RECamVideoCaptureControlTest::DoTestStep_56L() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: TInt i; sl@0: TInt err; sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoVideoCaptureTestStepL()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory ) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamVideoCaptureControlTest::DoVideoCaptureTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: MCaptureVideoObserver* videoCaptureObserver = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraVideoCaptureControl* videoCapture = NULL; sl@0: sl@0: // using observer sl@0: __MM_HEAP_MARK; sl@0: MCameraObserver* observer=NULL; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver")); sl@0: TRAP(error, camera = CCamera::NewL(*observer, 0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create VideoCaptureControl from CCamera object")); sl@0: sl@0: TRAP(error, videoCapture = CCamera::CCameraVideoCaptureControl::NewL(*camera, *videoCaptureObserver)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object creation using old Observer failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object creation using old Observer gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // using observer2 with NewL sl@0: MCameraObserver2* observer2 = NULL; sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::NewL(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create VideoCaptureControl from CCamera object")); sl@0: sl@0: TRAP(error, videoCapture = CCamera::CCameraVideoCaptureControl::NewL(*camera, *videoCaptureObserver)); sl@0: if (error==KErrExtensionNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object creation using Observer2 with NewL failed with correct error")); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object creation using Observer2 with NewL gave unexpected result")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: sl@0: // create video capture control object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, videoCapture = CCamera::CCameraVideoCaptureControl::NewL(*camera, *videoCaptureObserver)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(videoCapture); sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object was created using NewL")); sl@0: CleanupStack::PopAndDestroy(videoCapture); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object was not created using NewL")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: /*-------------------------------------------------------------- sl@0: Video Capture Control : RECamVideoCaptureNotificationTest sl@0: *--------------------------------------------------------------*/ sl@0: RECamVideoCaptureNotificationTest* RECamVideoCaptureNotificationTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamVideoCaptureNotificationTest* self = new (ELeave) RECamVideoCaptureNotificationTest(aAllocTest); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::ConstructL() sl@0: { sl@0: } sl@0: sl@0: RECamVideoCaptureNotificationTest::RECamVideoCaptureNotificationTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-057-HP"); sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::VideoBufferReady(MCameraBuffer2* /*aVideoBuffer*/, TInt aErrorCode) sl@0: { sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::ClientSnapshotReady(MCameraBuffer2* /*aSnapshotBuffer*/, TInt aErrorCode) sl@0: { sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::ClientHistogramReady(MHistogramV2Buffer* /*aClientHistogramBuffer*/, TInt aErrorCode) sl@0: { sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::ImageProcessingFailed(TInt aErrorCode) sl@0: { sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::DirectVideoCaptureFailed(TInt aErrorCode) sl@0: { sl@0: iError = aErrorCode; sl@0: } sl@0: sl@0: TInt RECamVideoCaptureNotificationTest::CustomInterface(TUid /*aInterface*/, TAny*& /*aPtrInterface*/) sl@0: { sl@0: return KErrNone; sl@0: } sl@0: sl@0: void RECamVideoCaptureNotificationTest::CheckVideoCaptureNegNotification(TInt aErrorCode, TVerdict& aResult) sl@0: { sl@0: INFO_PRINTF3(_L("Expected Video Capture Control Error %d, received Error %d."), aErrorCode, iError); sl@0: if (iError != aErrorCode) sl@0: { sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: TVerdict RECamVideoCaptureNotificationTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraVideoCaptureControl* videocapture = NULL; sl@0: sl@0: // create video capture control object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*this, 0, 0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, videocapture = CCamera::CCameraVideoCaptureControl::NewL(*camera, *this)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(videocapture); sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object was created using NewL")); sl@0: //Test Video Capture APIs sl@0: INFO_PRINTF1(_L("Create Histogram for Direct ViewFinder")); sl@0: CCamera::CCameraV2Histogram* histogram_VC = videocapture->CreateHistogramHandleL(); sl@0: if(!histogram_VC) sl@0: { sl@0: INFO_PRINTF1(_L("Histogram creation for Video Capture Control unsuccessful")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PushL(histogram_VC); sl@0: sl@0: INFO_PRINTF1(_L("Create ImageProcessing for Video Capture Control ")); sl@0: sl@0: TRAPD(err, videocapture->GetTransformationHandleL()); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("ImageProcessing creation for Video Capture Control : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("Create snapshot for Video Capture Control ")); sl@0: TInt viewfinderID=0; sl@0: CCamera::CCameraSnapshot* snapshot_VC = videocapture->GetSnapshotHandleL(viewfinderID); sl@0: if(!snapshot_VC) sl@0: { sl@0: INFO_PRINTF1(_L("snapshot creation for Video Capture Control : unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PushL(snapshot_VC); sl@0: sl@0: //set properties for video capture sl@0: INFO_PRINTF1(_L("GetVideoFormatsSupportedL for Video Capture Control")); sl@0: TUint videoFormatsSupported=0; sl@0: TSize size(320,240); sl@0: TRAP(err,videocapture->GetVideoFormatsSupportedL(videoFormatsSupported, size)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetVideoFormatsSupportedL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(videoFormatsSupported == 0) sl@0: { sl@0: INFO_PRINTF1(_L(" Number of VideoFormats Supported for Video Capture Control: unexpected result!")); sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetPixelAspectsSupportedL for Video Capture Control")); sl@0: TUint pixelAspectsSupported=0; sl@0: CCamera::TFormat format = CCamera::EFormatFbsBitmapColor16M; sl@0: TRAP(err,videocapture->GetPixelAspectsSupportedL(pixelAspectsSupported, format, size)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetPixelAspectsSupportedL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(pixelAspectsSupported == 0) sl@0: { sl@0: INFO_PRINTF1(_L(" Number of PixelAspects Supported for Video Capture Control: unexpected result!")); sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetEmbeddedStillCaptureSupportInfoL for Video Capture Control")); sl@0: TInt supportedEmbeddedStillCaptureTypes=0; sl@0: TRAP(err,videocapture->GetEmbeddedStillCaptureSupportInfoL(supportedEmbeddedStillCaptureTypes)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetEmbeddedStillCaptureSupportInfoL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(supportedEmbeddedStillCaptureTypes != 0) sl@0: { sl@0: INFO_PRINTF1(_L(" Supported Types of Embedded Still Capture for Video Capture Control: unexpected result!")); sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareVideoCapture for Video Capture Control")); sl@0: iInputEventUid = KUidECamEventVideoCaptureControlPrepareComplete; sl@0: CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters prepareVideoParameters; sl@0: sl@0: prepareVideoParameters.SetEmbeddedStillCaptureState(ETrue); sl@0: sl@0: if(!prepareVideoParameters.IsEmbeddedStillCaptureEnabled()) sl@0: { sl@0: INFO_PRINTF1(_L("IsEmbeddedStillCaptureEnabled for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: prepareVideoParameters.SetEmbeddedStillCaptureState(EFalse); sl@0: sl@0: if(prepareVideoParameters.IsEmbeddedStillCaptureEnabled() != EFalse) sl@0: { sl@0: INFO_PRINTF1(_L("IsEmbeddedStillCaptureEnabled for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: videocapture->PrepareVideoCapture(prepareVideoParameters); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: INFO_PRINTF1(_L("GetRangeAffectedSettingsL for Video Capture Control")); sl@0: RArray affectedSettings; sl@0: sl@0: TRAP(err,videocapture->GetRangeAffectedSettingsL(affectedSettings)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetRangeAffectedSettingsL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(affectedSettings.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("Number of RangeAffectedSettingsL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetValueAffectedSettingsL for Video Capture Control")); sl@0: TRAP(err,videocapture->GetValueAffectedSettingsL(affectedSettings)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetValueAffectedSettingsL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(affectedSettings.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("Number of ValueAffectedSettingsL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDisabledSettingsL for Video Capture Control")); sl@0: TRAP(err,videocapture->GetDisabledSettingsL(affectedSettings)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetDisabledSettingsL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(affectedSettings.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("Number of DisabledSettingsL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("ReleaseVideoResource for Video Capture Control")); sl@0: videocapture->ReleaseVideoResource(); sl@0: sl@0: INFO_PRINTF1(_L("GetFadingEffectStateL for Video Capture Control")); sl@0: CCamera::CCameraVideoCaptureControl::TFadingEffectState fadingEffectState = sl@0: CCamera::CCameraVideoCaptureControl::EFadingEffectDisabled; sl@0: TRAP(err,videocapture->GetFadingEffectStateL(fadingEffectState)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetFadingEffectStateL for Video Capture Control: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetFadingEffectState for Video Capture Control")); sl@0: iInputEventUid = KUidECamEventVideoCaptureControlFadingEffect; sl@0: videocapture->SetFadingEffectState(CCamera::CCameraVideoCaptureControl::EFadingEffectEnabled); sl@0: CheckNotificationNeg(iInputEventUid, result); sl@0: sl@0: //set properties for histogram (for video capture) sl@0: TUint supportedHistogramType=0; sl@0: histogram_VC->GetSupportedHistogramsL(supportedHistogramType); sl@0: if(supportedHistogramType!=0) sl@0: { sl@0: INFO_PRINTF1(_L("unexpected GetSupportedHistogramsL")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectHistogramSupportInfoL for Histogram for Video Capture")); sl@0: TBool directHistogramSupported = EFalse; sl@0: TRAP(err,histogram_VC->GetDirectHistogramSupportInfoL(directHistogramSupported)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectHistogramSupportInfoL for Histogram for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Video Capture")); sl@0: CCamera::CCameraV2Histogram::THistogramType histogramType = CCamera::CCameraV2Histogram::EHistNone; sl@0: TRAP(err,histogram_VC->PrepareClientHistogramL(histogramType)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareClientHistogramL for Histogram for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareDirectHistogramL for Histogram for Video Capture")); sl@0: CCamera::CCameraV2Histogram::TDirectHistogramParameters histogramParameters; sl@0: TRAP(err,histogram_VC->PrepareDirectHistogramL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareDirectHistogramL for Histogram for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("UpdateDirectHistogramPropertiesL for Histogram for Video Capture")); sl@0: TRAP(err,histogram_VC->UpdateDirectHistogramPropertiesL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("UpdateDirectHistogramPropertiesL for Histogram for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetDirectHistogramPropertiesL for Histogram for Video Capture")); sl@0: TRAP(err,histogram_VC->GetDirectHistogramPropertiesL(histogramParameters)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetDirectHistogramPropertiesL for Histogram for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetHistogramStateL for Histogram for Video Capture")); sl@0: TBool histogramActive = EFalse; sl@0: TRAP(err,histogram_VC->GetHistogramStateL(histogramActive)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetHistogramStateL for Histogram for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //set properties for snapshot (for video capture) sl@0: CCamera::CCameraSnapshot::TSnapshotParameters snapshotParam; sl@0: sl@0: INFO_PRINTF1(_L("SetAspectRatioState for Snapshot for Video Capture")); sl@0: snapshotParam.SetAspectRatioState(ETrue); sl@0: TBool aspectRatioState = snapshotParam.IsAspectRatioMaintained(); sl@0: if(!aspectRatioState) sl@0: { sl@0: INFO_PRINTF1(_L("AspectRatioState for Snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: snapshotParam.SetAspectRatioState(EFalse); sl@0: aspectRatioState = snapshotParam.IsAspectRatioMaintained(); sl@0: if(aspectRatioState != EFalse) sl@0: { sl@0: INFO_PRINTF1(_L("AspectRatioState for Snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PrepareSnapshotL for Snapshot for Video Capture")); sl@0: TRAP(err,snapshot_VC->PrepareSnapshotL(snapshotParam)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("PrepareSnapshotL for Snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetSnapshotParametersL for Snapshot for Video Capture")); sl@0: TRAP(err,snapshot_VC->GetSnapshotParametersL(snapshotParam)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetSnapshotParametersL for Snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SetSnapshotParametersL for Snapshot for Video Capture")); sl@0: TRAP(err,snapshot_VC->SetSnapshotParametersL(snapshotParam)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("SetSnapshotParametersL for Snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("SelectSnapshotVideoFramesL for Snapshot for Video Capture")); sl@0: CCamera::CCameraSnapshot::TSnapshotVideoFrames snapshotVideoFrames = CCamera::CCameraSnapshot::ESnapshotVideoFirstFrame; sl@0: TRAP(err,snapshot_VC->SelectSnapshotVideoFramesL(snapshotVideoFrames)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("SelectSnapshotVideoFramesL for Snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: //Start video capture and other child objects sl@0: INFO_PRINTF1(_L("StartVideoCaptureL for Video Capture")); sl@0: TRAP(err,videocapture->StartVideoCaptureL()); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("StartVideoCaptureL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CheckVideoCaptureNegNotification(KErrNotSupported, result); sl@0: sl@0: INFO_PRINTF1(_L("StartHistogram for Video Capture")); sl@0: histogram_VC->StartHistogram(); sl@0: CheckVideoCaptureNegNotification(KErrNotSupported, result); sl@0: sl@0: INFO_PRINTF1(_L("StopHistogram for Video Capture")); sl@0: histogram_VC->StopHistogram(); sl@0: sl@0: INFO_PRINTF1(_L("EnableSnapshotL for snapshot for Video Capture")); sl@0: TRAP(err,snapshot_VC->EnableSnapshotL()); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("EnableSnapshotL for snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: CheckVideoCaptureNegNotification(KErrNotSupported, result); sl@0: sl@0: INFO_PRINTF1(_L("GetSnapshotStatusL for snapshot for Video Capture")); sl@0: CCamera::CCameraSnapshot::TSnapshotState snapshotState = CCamera::CCameraSnapshot::ESnapshotInactive; sl@0: TRAP(err,snapshot_VC->GetSnapshotStatusL(snapshotState)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetSnapshotStatusL for snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("DisableSnapshotL for snapshot for Video Capture")); sl@0: TRAP(err,snapshot_VC->DisableSnapshotL()); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("DisableSnapshotL for snapshot for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("PauseVideoCapture for Video Capture")); sl@0: videocapture->PauseVideoCapture(); sl@0: sl@0: INFO_PRINTF1(_L("ResumeVideoCaptureL for Video Capture")); sl@0: TRAP(err,videocapture->ResumeVideoCaptureL()); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("ResumeVideoCaptureL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetVideoCaptureStateL for Video Capture")); sl@0: CCamera::CCameraVideoCaptureControl::TVideoCaptureState videoCaptureState = sl@0: CCamera::CCameraVideoCaptureControl::EVideoCaptureInActive; sl@0: TRAP(err,videocapture->GetVideoCaptureStateL(videoCaptureState)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetVideoCaptureStateL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("StopVideoCapture for Video Capture")); sl@0: videocapture->StopVideoCapture(); sl@0: sl@0: //Start Direct video capture and other child objects sl@0: TInt supportedDVCType = -1; sl@0: INFO_PRINTF1(_L("Check Direct Video Capture Support Info")); sl@0: TRAP(err,videocapture->GetVideoCaptureSupportInfoL(supportedDVCType)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetVideoCaptureSupportInfoL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(supportedDVCType != KSupportedDirectVCType) sl@0: { sl@0: INFO_PRINTF1(_L("GetVideoCaptureSupportInfoL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("Test Set Client Video Capture in PrepareVideoParameters")); sl@0: sl@0: prepareVideoParameters.SetVideoCaptureType(CCamera::CCameraVideoCaptureControl::EClientVideoCapture); sl@0: sl@0: if(CCamera::CCameraVideoCaptureControl::EClientVideoCapture != prepareVideoParameters.VideoCaptureType()) sl@0: { sl@0: INFO_PRINTF1(_L("iVideoCaptureType for TPrepareVideoParameters: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: sl@0: INFO_PRINTF1(_L("Set Video Capture in PrepareVideoParameters")); sl@0: sl@0: prepareVideoParameters.SetVideoCaptureType(CCamera::CCameraVideoCaptureControl::EDirectVideoCapture); sl@0: sl@0: if(CCamera::CCameraVideoCaptureControl::EDirectVideoCapture != prepareVideoParameters.VideoCaptureType()) sl@0: { sl@0: INFO_PRINTF1(_L("iVideoCaptureType for TPrepareVideoParameters: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: prepareVideoParameters.iFormat = CCamera::EFormatEncodedH264; sl@0: prepareVideoParameters.iPixelAspectRatio = CCamera::CCameraAdvancedSettings::EEPixelAspect40To33; sl@0: sl@0: iInputEventUid = KUidECamEventVideoCaptureControlPrepareComplete; sl@0: videocapture->PrepareVideoCapture(prepareVideoParameters); sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: INFO_PRINTF1(_L("StartVideoCaptureL for Direct Video Capture")); sl@0: TRAP(err,videocapture->StartVideoCaptureL()); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("StartVideoCaptureL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CheckVideoCaptureNegNotification(KErrNotSupported, result); sl@0: sl@0: INFO_PRINTF1(_L("StopVideoCapture for Direct Video Capture")); sl@0: videocapture->StopVideoCapture(); sl@0: sl@0: INFO_PRINTF1(_L("GetPrepareVideoParameters for Direct Video Capture")); sl@0: CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters retrievedVideoParam; sl@0: TRAP(err,videocapture->GetPrepareVideoParametersL(retrievedVideoParam)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetPrepareVideoParametersL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(CCamera::EFormatEncodedH264 != retrievedVideoParam.iFormat) sl@0: { sl@0: INFO_PRINTF1(_L("GetPrepareVideoParametersL for Video Capture: unexpected result!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF2(_L("retrievedVideoParam.iFormat: %d"),retrievedVideoParam.iFormat); sl@0: INFO_PRINTF2(_L("retrievedVideoParam.iPixelAspectRatio: %d"),retrievedVideoParam.iPixelAspectRatio); sl@0: sl@0: sl@0: CleanupStack::PopAndDestroy(snapshot_VC); sl@0: CleanupStack::PopAndDestroy(histogram_VC); sl@0: CleanupStack::PopAndDestroy(videocapture); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraVideoCaptureControl object not created")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: }