Symbian3/SDK/Source/GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 0 89d6a7a84779
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"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: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept xml:lang="en" id="GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E"><title>Advanced Camera Settings</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial gives you information about Advanced Camera Settings. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to provide detailed descriptions of various advanced settings of Camera. </p> <p><b>Introduction</b> </p> <p>Every individual camera setting is identified by a UID to facilitate integration in the camera messaging mechanism. Each change of a parameter value causes an event notification containing the UID of the setting to be sent to all <codeph>MCameraObserver2</codeph> clients of the camera. If additional information is required, clients would use the related getter function to identify the new value of the setting. Some settings may have a dependency on others. In this respect a particular setting value may disable a related supported setting. </p> </section> <section><title>Using Advanced Camera Settings </title> <p>The Following tasks will be covered in this tutorial: </p> <ul><li id="GUID-B729949E-B77E-5905-B72D-FF56B1E58495"><p>Creating the <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object </p> </li> <li id="GUID-A6EEAB43-E51E-546E-8BFF-BFBCDF318677"><p>Setting Camera Details </p> </li> <li id="GUID-8D716D56-9143-5695-A25B-E493C6D8B850"><p>Operating in stabilization mode </p> </li> <li id="GUID-0283EFB5-6B41-55DA-AE6A-7475DDD03AB6"><p>Operating in Flash Mode </p> </li> <li id="GUID-00389D42-E64A-50A4-92D9-1A9E25A9C385"><p>Operating in Focus Mode. </p> </li> </ul> <p><b>Basic Procedure for Creating the Advance Settings Object</b> </p> <p>The high level steps to perform specific advance settings are shown here: </p> <ul><li id="GUID-AD1B9FE6-5BD8-52D4-8D56-BE622B34B216"><p>Create the <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object. </p> </li> <li id="GUID-FE4DDF73-35E5-5B1E-896B-FC22D6E5E277"><p>Provide a reference to a <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> object. This returns a pointer to a fully constructed <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object. </p> <p> <codeph>CCamera::CCameraAdvancedSettings*
                  CCamera::CCameraAdvancedSettings::NewL</codeph>. </p> <p> <b>Note</b>: Creation of <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> also involves creation of the corresponding M classes; <xref href="GUID-8B30B504-513B-387D-9389-4C26DCEE8372.dita"><apiname>MCameraAdvancedSettings</apiname></xref>, <xref href="GUID-6CC4140E-1061-31E9-B477-089B1342A8A5.dita"><apiname>MCameraAdvancedSettings2</apiname></xref>, <xref href="GUID-73E02E93-8618-37F9-AA4E-13D53BF60609.dita"><apiname>MCameraAdvancedSettings3</apiname></xref> and <xref href="GUID-1E82B9DC-C853-335C-BE03-B2FD4D917CB9.dita"><apiname>MCameraAdvancedSettings4</apiname></xref> derived classes. Licensee provide concrete implementation for these M classes. <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> is a facade which forwards the setting calls to respective M classes methods. </p> </li> </ul> <p> </p> <p> <b>Note</b>: Clients using <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita"><apiname>MCameraObserver</apiname></xref> are not recommended to use this extension class, since they cannot handle events. </p> <p><b>Basic Procedure for Setting Camera Details</b> </p> <p>The high level steps to set Camera details are shown here: </p> <ul><li id="GUID-DB312A12-D840-5032-8A0F-4DD74A67EA41"><p>Get the information about the type of the Camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-6C99156B-A23F-32C8-AA84-F7005EDEBD3E"><apiname>CCamera::CCameraAdvancedSettings::TCameraType</apiname></xref>. </p> </li> <li id="GUID-32F54779-C4EC-56A2-A168-3083F1207078"><p>Check whether the current camera is present using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-9FDAFDB4-1F00-3F6E-8285-C7DF3BCF9A0D"><apiname>CCamera::CCameraAdvancedSettings::IsCameraPresent()</apiname></xref>. </p> </li> <li id="GUID-62959E45-6CF1-551D-B5DC-4C831B6CE6AC"><p>Get the unique index of the current camera that identifies the camera on the device using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-709070F9-C1C0-3A1B-933F-E06C98264CD8"><apiname>CCamera::CCameraAdvancedSettings::CameraIndex().</apiname></xref>. </p> </li> </ul> <p><b>Basic Procedure for operating in Stabilization Mode</b> </p> <p>The high level steps to set Camera in stabilization mode are shown here: </p> <ul><li id="GUID-654F95E4-3CB0-5217-B567-5CDA68545BD0"><p>Get all the supported stabilization modes on the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-374DE9A9-8523-3CE7-B276-903C09905CE5"><apiname>CCamera::CCameraAdvancedSettings::SupportedStabilizationModes()</apiname></xref>. </p> </li> <li id="GUID-DAD7736E-7C86-57C2-8A2A-4718CE41E4D2"><p>Get current stabilization mode on the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-7F60B6AD-F188-3437-B6C5-38F5AAE0465D"><apiname>CCamera::CCameraAdvancedSettings::StabilizationMode()</apiname></xref>. </p> </li> <li id="GUID-70DF64DC-FCC9-5EEE-A9CD-71F3B808B231"><p>Set a specific stabilization mode on the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-4E16E533-067E-3090-A407-59FCE1BD7E38"><apiname>CCamera::CCameraAdvancedSettings::SetStabilizationMode()</apiname></xref>. </p> <p>The client receives the notifications of the settings asynchronously through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref> with UID <xref href="GUID-CD67A688-8E6C-3774-AE34-6F2CAFD30733.dita"><apiname>KUidECamEventCameraSettingStabilizationMode</apiname></xref>. </p> <p> <b>Note</b>: <xref href="GUID-8B30B504-513B-387D-9389-4C26DCEE8372.dita#GUID-8B30B504-513B-387D-9389-4C26DCEE8372/GUID-62E8BCC8-76CB-3FF4-A1BF-B322F35F9002"><apiname>MCameraAdvancedSettings::SetStabilizationMode()</apiname></xref> concrete implementation implements the actual setting of stabilization mode. </p> </li> </ul> <p><b>Basic Procedure for operating in Flash Mode</b> </p> <p>The high level steps to set Camera in flash mode are shown here: </p> <ul><li id="GUID-89535F4F-162C-5CBA-873F-BF6C8768CC71"><p>Get the list of supported flash mode using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-34EC67ED-9810-30F6-B6A9-4F106DE4C2AD"><apiname>CCamera::CCameraAdvancedSettings::SupportedFlashModes()</apiname></xref> method and get the current flash mode using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-C6CF3333-C7D8-3A8F-B6B0-097E99E387BC"><apiname>CCamera::CCameraAdvancedSettings::FlashMode()</apiname></xref> method. </p> </li> <li id="GUID-FACB7B1D-D328-5FEA-A8E3-FCB538B93E7F"><p>Set the flash mode using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-13227745-5E7B-33F3-A785-16676B37D52E"><apiname>CCamera::CCameraAdvancedSettings::SetFlashMode()</apiname></xref>. This triggers a <xref href="GUID-F5771285-A08F-3CBE-8F3F-83CFD2E13ED1.dita"><apiname>KUidECamEventCameraSettingFlashMode</apiname></xref> event to all camera <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2</apiname></xref> clients. </p> </li> <li id="GUID-9983601E-5A55-5CDB-98E1-8A2198DB0A81"><p>Check if the flash red eye reduction is switched on using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-CFCBE1CC-97ED-31D2-965C-BDCB2F5CAB9F"><apiname>CCamera::CCameraAdvancedSettings::RedEyeReduceOn()</apiname></xref>. It returns <i>ETrue</i> for switched ON and <i>EFalse</i> for switched OFF at current state. </p> <p>Red Eye Reduce is a special mode of flash that can be set in two ways: </p> <ul><li id="GUID-C37A7F7F-6473-5920-82F0-A771E71BD5D0"><p> <codeph>CCamera::CCameraAdvancedSettings::SetFlashMode(CCamera::EFlashRedEyeReduce)</codeph> </p> </li> <li id="GUID-4696BEB7-A5F3-571D-9592-0778FC06316F"><p> <codeph>CCamera::CCameraAdvancedSettings::SetRedEyeReduceOn(ETrue)</codeph> </p> </li> </ul> <p>This allows the client to set two flashes simultaneously. In such scenario, if <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-C6CF3333-C7D8-3A8F-B6B0-097E99E387BC"><apiname>CCamera::CCameraAdvancedSettings::FlashMode()</apiname></xref> is used, the flash mode set using <xref href="GUID-0926A429-8151-36D2-83D3-C63245A50006.dita"><apiname>SetFlashMode()</apiname></xref> is retrieved. </p> </li> <li id="GUID-E6B7C1E1-B269-5150-A482-D7DF3BBCD80F"><p>Set the flash type as listed under <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-36ED3D9F-B246-3CCC-8BDB-53141F8FB423"><apiname>CCamera::Tflash</apiname></xref> to <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-30D25AA3-2885-3702-AF8C-62ED42202014"><apiname>CCamera::EFlashVideoLight</apiname></xref> to have constant emission of light during video mode. </p> </li> <li id="GUID-E0E8A4C4-1F7A-5506-A2D1-E75D5435DF1B"><p>Use <xref href="GUID-E2D461B6-9373-31B2-95C8-EB929C7B1E6A.dita"><apiname>EPCWFlashOverheated</apiname></xref> method to indicate that flash is overheated. </p> </li> <li id="GUID-C79BC6D4-B087-542C-8159-2CBD916B3B60"><p>Use <xref href="GUID-76B142E7-C617-3521-9C44-B0D1FA7BECBB.dita"><apiname>EPCWFlashNotNeeded</apiname></xref> method to indicate that flash cannot be used because of enough ambient light. </p> </li> </ul> <p>When the clients subscribe for PreCaptureWarnings, concrete implementation issues PreCaptureWarnings. <xref href="GUID-1D6F9085-1DAD-3B43-B496-6C43A83EF5CF.dita"><apiname>SubscribeToPreCaptureWarningL</apiname></xref> is one such method that is used for subscription. </p> <p>Subsequent to subscription, if Ecam adaptation identifies any unfavourable conditions prior to image or video capture, it issues the event <xref href="GUID-AAF5EF91-7192-3ED8-B15A-64E0C167EB45.dita"><apiname>KUidECamEventCameraSettingPreCaptureWarning</apiname></xref>. <xref href="GUID-6A60F684-76BF-3001-ABB8-E6A8DB32663B.dita"><apiname>TECAMEvent2</apiname></xref> class should be used to provide the status of every PreCaptureWarning. </p> </section> <section><title>See also</title> <p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Overview</xref> for the advanced settings of Camera </p> <p><xref href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita">Advanced Settings for Focus, Drive Modes, and Bracket Modes</xref>  </p> </section> </conbody></concept>