Revision control

++ // Copyright (C) 2021 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
++ /*!
++
++ \example camera
++ \title Camera Example
++ \ingroup multimedia_examples
++ \ingroup video_examples
++ \ingroup camera_examples
++ \examplecategory {Multimedia}
++ \meta {tag} {widgets}
++ \brief Shows how to capture a still image or record video.
++
++ \image camera-example.png
++ {Camera application interface with image and video capture controls}
++
++ The Camera Example demonstrates how you can use \l{Qt Multimedia} to implement
++ some basic Camera functionality to take still images and record video clips
++ with audio.
++
++ \include examples-run.qdocinc
++
++ The example implements a \c Camera class that acts as our camera interface. It
++ has a user interface, control functions, setting values and a means of defining
++ the location where the image or video clip is to be saved. It will also store
++ the image and video settings.
++
++ The Camera class uses:
++ \list
++ \li An instance of \l {QCamera}, the API class interface to the hardware.
++ \li An instance of \l {QImageCapture} to take still images.
++ \li An instance of \l {QMediaRecorder} to record video. It also contains
++ the user interface object.
++ \endlist
++
++ \section1 The Camera constructor
++
++ The Camera constructor does some basic initialization of the user interface
++ including disabling all buttons by default.
++
++ \quotefromfile camera/camera.cpp
++ \skipto Camera::Camera()
++ \printuntil ui->metaDataButton->setEnabled(false);
++
++ It seeks permissions for input device access:
++
++ \skipto #if QT_CONFIG(permissions)
++ \printuntil #endif
++
++ Inputs are assigned:
++ \printuntil updateCameras()
++
++ UI signals are connected to slots that react to the triggering event:
++ \printuntil setCamera(QMediaDevices::defaultVideoInput());
++
++ However, most of the work is done when the \e{setCamera()} function is called,
++ passing in a \l QCameraDevice.
++
++ \section1 setCamera()
++
++ \c{setCamera()} sets up various connections between the user interface and the
++ functionality of the Camera class using signals and slots. It also instantiates
++ and initializes the \l {QCamera}, \l {QImageCapture}, and \l {QMediaRecorder}
++ objects.
++
++ \skipto void Camera::setCamera(const QCameraDevice &cameraDevice)
++ \printto m_captureSession.setVideoOutput(ui->viewfinder);
++
++ The still and video recording visual tabs are enabled:
++
++ \printuntil updateCaptureMode();
++
++ Finally the \l {QCamera::start}{start()} function of the \l{QCamera}
++ object is called.
++
++ \printuntil m_camera->start();
++
++ \section1 Triggering capturing
++
++ Now that the camera is ready for user commands it waits for a suitable event.
++ Such an event can be a key press of either the \l {Qt::Key_CameraFocus} or
++ \l {Qt::Key_Camera} buttons on the application window.
++
++ Key_CameraFocus will simply display the preview and lock the camera settings.
++ \printto case Qt::Key_Camera:
++
++ \c Key_Camera will either call \e{takeImage()} if doing an image capture, or call
++ \c record() or \c stop() (if already recording) on the QMediaRecorder instance
++ when recording video.
++
++ \printuntil break;
++
++ */