Files
qtmultimedia/doc/src/camera.qdoc
Jyri Tahtela a925bb4a9e Update licenseheader text in source files for qtmultimediakit Qt module
Replace old license header with correct one.

Change-Id: Ibff8fbea6595bb80f1122d55db2194accd319308
Reviewed-on: http://codereview.qt.nokia.com/1318
Reviewed-by: Jyri Tahtela <jyri.tahtela@nokia.com>
2011-07-08 07:59:00 +02:00

189 lines
6.1 KiB
Plaintext

/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** GNU Free Documentation License
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms
** and conditions contained in a signed written agreement between you
** and Nokia.
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
// XXX OMG its so bad
// namespace warning
// why mention control?
// bad brief
// control list
// links?
/*!
\page camera.html
\title Camera
\brief An API to control camera devices.
The Camera API provides control of system camera devices. Providing support
for still or video image capture with sound support.
\tableofcontents
\section1 Namespace
The QtMobility APIs are placed into the \i{QtMobility} namespace. This is done
to facilitate the future migration of QtMobility APIs into Qt. See the
\l {Quickstart guide} for an example on how the
namespace impacts on application development.
\section1 Overview
The Camera API allows high level control of various aspects of still images
and video. Camera is a part of the Multimedia API and this relationship is
apparent when you notice that certain core classes are subclassed from some
Multimedia base classes including \l QMediaObject and \l QMediaControl.
\section1 Still Images
In order to capture an image we need to create a \l QCamera object and use
it to initialize a \l QVideoWidget, so we can see where the camera is
pointing - a viewfinder. The camera object is also used to initialize a new
QCameraImageCapture object, imageCapture. All that is then needed is to start
the camera, lock it so that the settings are not changed while the image
capture occurs, capture the image, and finally unlock the camera ready for
the next photo.
\code
camera = new QCamera;
viewFinder = new QCameraViewfinder;
camera->setViewfinder(viewFinder);
viewFinder->show();
imageCapture = new QCameraImageCapture(camera);
camera->setCaptureMode(QCamera::CaptureStillImage);
camera->start();
//on half pressed shutter button
camera->searchA{QCameraFocus::FocusMode}{ndLock();
//on shutter button pressed
imageCapture->capture();
//on shutter button released
camera->unlock();
\endcode
Alternatively, we could have used a QGraphicsVideoItem as a viewfinder.
\section1 Video Clips
Previously we saw code that allowed the capture of a still image. Recording
video requires the use of a \l QMediaRecorder object and a \l
QAudioCaptureSource for sound.
To record video we need to create a camera object as before but this time as
well as creating a viewfinder, we will also initialize a media recorder object.
\code
camera = new QCamera;
mediaRecorder = new QMediaRecorder(camera);
camera->setCaptureMode(QCamera::CaptureVideo);
camera->start();
//on shutter button pressed
mediaRecorder->record();
\endcode
Signals from the \i mediaRecorder can be connected to slots to react to
changes in the state of the recorder or error events. Recording itself
starts with the \l {QMediaRecorder::record()}{record()} function of
mediaRecorder being called, this causes the signal \l
{QMediaRecorder::stateChanged()}{stateChanged()} to be emitted. The
recording process can be changed with the \l {QMediaRecorder::record()}{record()},
\l {QMediaRecorder::pause()}{pause()}, \l {QMediaRecorder::stop()}{stop()} and
\l {QMediaRecorder::setMuted()}{setMuted()} slots in \l QMediaRecorder.
When the camera is in video mode, as decided by the application, then as the
shutter button is pressed the camera is locked as before but instead the
\l {QMediaRecorder::record()}{record()} function in \l QMediaRecorder is used.
\section1 Focus
Focusing is managed by the classes \l QCameraFocus and \l QCameraFocusControl.
QCameraFocus allows the developer to set the general policy by means of the
enums for the \l {QCameraFocus::FocusMode}{FocusMode} and the
\l {QCameraFocus::FocusPointMode}{FocusPointMode}. \l {QCameraFocus::FocusMode}{FocusMode}
deals with settings such as \l {QCameraFocus::FocusMode}{AutoFocus},
\l {QCameraFocus::FocusMode}{ContinuousFocus} and \l {QCameraFocus::FocusMode}{InfinityFocus}, whereas \l {QCameraFocus::FocusMode}{FocusPointMode} deals with the various focus zones within the view. \l {QCameraFocus::FocusMode}{FocusPointMode} has support for face recognition, center focus and a custom
focus where the focus point can be specified.
\section1 Cancelling Asynchronous Operations
Various operations such as image capture and auto focusing occur
asynchrously. These operations can often be cancelled by the start of a new
operation as long as this is supported by the backend. For image capture,
the operation can be cancelled by calling
\l {QCameraImageCapture::cancelCapture()}{cancelCapture()}. For AutoFocus,
autoexposure or white balance cancellation can be done by calling
\i {QCamera::unlock(QCamera::LockFocus)}.
\section1 Camera Controls
\table
\header
\o Control Name
\o Description
\row
\o camera
\o the interface for system camera devices
\row
\o exposure
\o Includes: flash mode; flash power; metering mode; aperture; shutter speed, iso setting
\row
\o focus
\o Includes: optical zoom; digital zoom; focus point; focus zones
\row
\o image processing
\o white balance; contrast; saturation; sharpen; denoise
\row
\o locks
\o handles the locking and unlocking of camera devices
\endtable
\section1 Classes
\annotatedlist camera
*/