Symbian3/SDK/Source/GUID-36BD6059-6547-5754-8BE0-F8051A838C14.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 21 Jan 2010 18:18:20 +0000
changeset 0 89d6a7a84779
child 8 ae94777fff8f
permissions -rw-r--r--
Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385

<?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 task
  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
<task xml:lang="en" id="GUID-36BD6059-6547-5754-8BE0-F8051A838C14"><title>Using Time-Nudge-Capture Drive Mode </title><shortdesc>This topic describes how to capture an image using Time-Nudge-Capture drive mode in the Ecam API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-B36A21C3-041E-5DBE-A019-705F64A9DCFA"><p>Before you start you should understand the following topics: </p> <ul><li id="GUID-618221F4-A6E6-5F4E-97F7-8528F010887E"><p><xref href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita">Capturing Image</xref>. </p> </li> <li id="GUID-C875638C-B10A-511A-B7DF-8BB6ED543B0E"><p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Advanced Camera Settings Overview</xref>. </p> </li> </ul> </prereq> <context><p>The <codeph>EDriveModeTimeNudgeCapture</codeph> mode allows you to specify the amount of images to be captured both before and after the capture button key press. The numbers of pre- or post-capture images to be captured are set by the <codeph>TDriveModeDependentAttributes</codeph> values, with the total number of images being calculated as follows: </p> <p> <codeph>Total number of captured images = iParam1 + 1 + iParam2 </codeph> where <codeph>iParam1</codeph> and <codeph>iParam2</codeph> represent pre and post capture images respectively, and 1 represents the present image. </p> </context> <steps id="GUID-C600E75D-1C96-5D04-8F72-9EC4DCD406C6"><step id="GUID-10359A66-1222-5C8A-87E6-7E7E1CAD8847"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-C5A323D2-322D-3784-9546-A066B50C4DE1"><apiname>CCamera::New2L(MCameraObserver2
                &amp;,TInt,TInt)</apiname></xref> to create an instance of <codeph>CCamera</codeph>. </info> </step> <step id="GUID-7AAE2DB9-0A64-55E6-814F-B6204F19BCF1"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58"><apiname>CCamera::CCameraPreImageCaptureControl</apiname></xref> to create an image capture object. </info> </step> <step id="GUID-7686E078-40F5-56E2-B35F-09CC248994AD"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-6446E75C-134A-311D-8724-71F0C962BABB"><apiname>CCamera::PrepareImageCapture(const
                TPrepareImageParameter&amp;, MCaptureImageObserver&amp;)</apiname></xref> to prepare for capturing the image. <codeph>TPrepareImageParameter</codeph> uses <codeph>TDriveModeDependentAttributes</codeph> to set the number of images before and after the camera capture key press event. The <codeph>iDriveMode</codeph> value in <codeph>TPrepareImageParameter</codeph> should be replaced into the <codeph>EDriveModeTimeNudgeCapture</codeph> value, to support the time-nudge-capture drive mode. </info> <info>If an <codeph>aErrorCode</codeph> occurs while preparing an image, you have to call <xref href="GUID-5B7C6507-040F-3825-9037-7A23A25B26A8.dita#GUID-5B7C6507-040F-3825-9037-7A23A25B26A8/GUID-81907BC4-585A-3199-8210-1E57837CADBD"><apiname>CCamera::PrepareImageComplete(CCamera::CCameraImageCapture*,
                TInt)</apiname></xref>. </info> <info>Note: The <codeph>PrepareImageComplete()</codeph> callback is deferred until the implementation is ready with the pre-image data saved in the buffer so that you can press the capture key at any time. Meanwhile the implementation continues saving the latest pre-capture images until the <codeph>CaptureImage()</codeph> function is called. </info> </step> <step id="GUID-016FF403-E087-53CA-9EC7-223496A7AE60"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-2BE39D44-2E72-3756-B0DF-9EDEDCEF2FC2"><apiname>CCamera::CaptureImage(CCameraCapture*)</apiname></xref> to capture an image. </info> <info>Note: You can call the <codeph>CaptureImage()</codeph> function to capture the current image exposed to the sensor plus the required number of post-image capture images. </info> </step> <step id="GUID-912DC8A8-51F5-5912-9474-1CE28C51715D"><cmd/><info>Call the <xref href="GUID-FB8D88AD-5F05-363B-94EF-70E3E2E7F386.dita#GUID-FB8D88AD-5F05-363B-94EF-70E3E2E7F386/GUID-F8E63880-7E40-37B1-BDDD-A546FF9A1595"><apiname>MCaptureImageObserver::IndividualImageControlHandle(CCamera::CCameraImageCapture&amp;,
                TPostCaptureControlId)</apiname></xref> function for each captured image to pass the individual id of each image to the client. </info> </step> <step id="GUID-38DBA9EA-0267-5C31-8D82-E81111636198"><cmd/><info>Call <xref href="GUID-1F521E2D-420C-35AB-865F-29B85AABDABC.dita#GUID-1F521E2D-420C-35AB-865F-29B85AABDABC/GUID-C47D6991-D2BB-382D-B8E1-D4583F9761BB"><apiname>MCaptureImageObserver::ImageCaptureComplete(CCamera::CCameraImageCapture&amp;,
                TInt) and
                [a11]CCamera::HandleEvent(KUidECamEventReadyForNextCapture)</apiname></xref> to notify the client that the current capture operation has finished. </info> <info>Note: This must only occur once the implementation has saved another set of pre-image capture images. This is so that the implementation is ready to receive further <codeph>CaptureImage()</codeph> calls. </info> </step> <step id="GUID-94BF1548-C4B1-5BBE-AB08-E0A7521BF0CF"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-3EC050AE-3512-3477-9B89-C98F66234D9F"><apiname>CCamera::CCameraPostImageCaptureControl(TUid,
                TPostCaptureControlUid)</apiname></xref> to control the post image capture after capturing the desired image. </info> </step> <step id="GUID-CCD9A5F2-0447-5154-ACC5-950CC0EC2512"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-53D971FF-6ECE-3C7D-ABF7-E318D500C5D7"><apiname>CCamera::HandleEvent(KUidECamEventReadyForNextPrepare)</apiname></xref> function when you have deleted the current <codeph>CCameraImageCapture</codeph> object. </info> <info>Note: In this drive mode, only one instance of <codeph>CCameraImageCapture</codeph> can be created at any one time, i.e. <codeph>PrepareImageCapture()</codeph> can only be called once. In order to successfully call <codeph>PrepareImageCapture()</codeph> again and create a new <codeph>CCameraImageCapture</codeph> object, clients must first destroy the previous one. Therefore, the implementation should only issue this callback once the client has deleted the object. </info> </step> </steps> </taskbody><related-links><link href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita"><linktext> Controlling Pre-Image Capture</linktext> </link> <link href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita"><linktext> Controlling Still-Image
                Capture</linktext> </link> <link href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita"><linktext> Controlling Captured Image</linktext> </link> </related-links></task>