diff -r e5618cc85d74 -r 6c158198356e javauis/mmapi_akn/baseline/src/cmmacameraplayerfactory.cpp --- a/javauis/mmapi_akn/baseline/src/cmmacameraplayerfactory.cpp Thu Jul 15 18:31:06 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This class is used for creating camera players. -* -*/ - - -// INCLUDE FILES -#include -#include - -#include "cmmacameraplayerfactory.h" -#include "cmmacameraplayer.h" -#include "cmmavideocontrol.h" -#include "cmmavideorecordcontrol.h" -#include "cmmastoptimecontrol.h" -#include "cmmaplayerproperties.h" -#include "cmmammfresolver.h" - -_LIT(KDefaultVideo, "video"); -//is the main camera -_LIT(KDevcamZero, "devcam0"); -// the secondary camera -_LIT(KDevcamOne, "devcam1"); - -_LIT(KEncodingProperty, "encoding"); - -_LIT(KVideoMp4MimeType, "video/mp4"); -_LIT(KVideoH264MimeType, "video/H264"); - -CMMACameraPlayerFactory* CMMACameraPlayerFactory::NewLC() -{ - CMMACameraPlayerFactory* pFactory = - new(ELeave) CMMACameraPlayerFactory(); - CleanupStack::PushL(pFactory); - return pFactory; -} - - -CMMACameraPlayerFactory::CMMACameraPlayerFactory() -{ -} - - -CMMACameraPlayerFactory::~CMMACameraPlayerFactory() -{ - delete iAudioSettings; -} - -CMMAPlayer* CMMACameraPlayerFactory::CreatePlayerL( - CMMAMMFResolver* aResolver) -{ - DEBUG("MMA::CMMACameraPlayerFactory::CreatePlayerL( aResolver )+"); - CMMACameraPlayer* player = CMMACameraPlayer::NewLC(iCameraIndex); - - /* Add VideoControl */ - CMMAVideoControl* videoControl = new(ELeave)CMMAVideoControl(player); - - CleanupStack::PushL(videoControl); - player->AddControlL(videoControl); - CleanupStack::Pop(videoControl); - - /* Add RecordControl */ - CMMAVideoRecordControl* videoRecordControl = - CMMAVideoRecordControl::NewL(player, - aResolver, - iVideoSettings, - iAudioSettings, - player->CameraHandle()); - CleanupStack::PushL(videoRecordControl); - player->AddControlL(videoRecordControl); - // ownership transfered to player - CleanupStack::Pop(videoRecordControl); - - // With record control view finder can't be stopped, - // because it can not be restarted. - player->SetViewFinderMode(EFalse); - - CleanupStack::Pop(player); - return player; -} - - -void CMMACameraPlayerFactory::MediaIdsL(RArray& aMediaIds) -{ - CleanupClosePushL(aMediaIds); - User::LeaveIfError(aMediaIds.Append(KUidMediaTypeVideo)); - CleanupStack::Pop(); -} - -void CMMACameraPlayerFactory::PreparePluginSelectionParametersL( - CMMAMMFResolver* aResolver, - CMMFFormatSelectionParameters* aFormatSelection) -{ - // We are creating record type player - aResolver->SetRequiredRecordFormatSupportL(*aFormatSelection); -} - -CMMAPlayer* CMMACameraPlayerFactory::CreatePlayerL(const TDesC&) -{ - // record player cannot be created from conten-type, since this is used only - // when we have also data - return NULL; -} - - -CMMAPlayer* CMMACameraPlayerFactory::CreatePlayerL(const TDesC8&) -{ - // record player cannot be created with header data - return NULL; -} - -CMMAPlayer* CMMACameraPlayerFactory::CreatePlayerL( - const TDesC& aProtocol, - const TDesC& aMiddlePart, - const TDesC& aParameters) -{ - DEBUG_STR("MMA::CMMACameraPlayerFactory::CreatePlayerL aParameters = %S", aParameters); - // check that locator is capture:://audio - if (aProtocol != KMMACaptureProtocol) - { - return NULL; - } - - iCameraIndex = KErrNotFound; - - // If the device supports multiple cameras then "capture://devcam0" is the - // main camera pointing outwards from the user. "capture://devcam1" is the - // secondary camera pointing e.g. towards the user. "capture://video" is - // the default camera locator pointing to the same camera as "devcam0" - if ((aMiddlePart == KDefaultVideo) || - (aMiddlePart == KDevcamZero)) - { - // First camera - iCameraIndex = 0; - } - else if (aMiddlePart == KDevcamOne) - { - // Second camera. - iCameraIndex = 1; - } - else - { - // not supported type - return NULL; - } - - CMMAAudioSettings* audioSettings = new(ELeave) CMMAAudioSettings; - audioSettings->iDataType = KMMFFourCCCodeNULL; - delete iAudioSettings; - iAudioSettings = audioSettings; - - if (aParameters.Length() == 0) - { - // getting defaults from validator - iVideoSettings = TMMAParameterValidator::ValidateVideoPropertiesL(aParameters); - } - else - { - // we accept either video or mixed parameters, so properties must contain encoding 2 times for mixed and - // 1 time for video. - // making tmp des without first "encoding" - TInt lengthWithoutEncoding = aParameters.Length() - KEncodingProperty().Length(); - if (lengthWithoutEncoding < 0) - { - User::Leave(KErrArgument); - } - TPtrC tmp = aParameters.Right(lengthWithoutEncoding); - // finding second "encoding" - TInt videoPropertiesStartPos = tmp.Find(KEncodingProperty); - if (videoPropertiesStartPos == KErrNotFound) - { - // there is not another encoding, so assuming that there is only video parameters - iVideoSettings = TMMAParameterValidator::ValidateVideoPropertiesL(aParameters); - } - else - { - // there is mixed parameters - videoPropertiesStartPos += KEncodingProperty().Length(); - - // skipping '&' char - TPtrC audioProperties = aParameters.Left(videoPropertiesStartPos - 1); - TPtrC videoProperties = aParameters.Mid(videoPropertiesStartPos); - iVideoSettings = TMMAParameterValidator::ValidateVideoPropertiesL(videoProperties); - - CMMAAudioSettings* audioSettings = TMMAParameterValidator::ValidateAudioPropertiesL(audioProperties); - delete iAudioSettings; - iAudioSettings = audioSettings; - } - } - - // if wanted video capture encoding is H264, we must create player with video/mp4 - // because mmf doesn't have controller for H264 - if (iVideoSettings.iEncoding.Compare(KVideoH264MimeType) == 0) - { - return CMMAMMFPlayerFactory::CreatePlayerL(KVideoMp4MimeType); - } - - // Find controller with content-type - return CMMAMMFPlayerFactory::CreatePlayerL(iVideoSettings.iEncoding); -} - -void CMMACameraPlayerFactory::GetSupportedProtocolsL( - const TDesC& aContentType, - CDesC16Array& aProtocolArray) -{ - if (IsSupportedContentTypeL(aContentType)) - { - aProtocolArray.AppendL(KMMACaptureProtocol); - } -} - -// END OF FILE