summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/camera2/Parameters.h
diff options
context:
space:
mode:
Diffstat (limited to 'services/camera/libcameraservice/camera2/Parameters.h')
-rw-r--r--services/camera/libcameraservice/camera2/Parameters.h365
1 files changed, 0 insertions, 365 deletions
diff --git a/services/camera/libcameraservice/camera2/Parameters.h b/services/camera/libcameraservice/camera2/Parameters.h
deleted file mode 100644
index 54b1e8c..0000000
--- a/services/camera/libcameraservice/camera2/Parameters.h
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_SERVERS_CAMERA_CAMERA2PARAMETERS_H
-#define ANDROID_SERVERS_CAMERA_CAMERA2PARAMETERS_H
-
-#include <system/graphics.h>
-
-#include <utils/Errors.h>
-#include <utils/Mutex.h>
-#include <utils/String8.h>
-#include <utils/Vector.h>
-#include <utils/KeyedVector.h>
-#include <camera/CameraParameters.h>
-
-#include "CameraMetadata.h"
-
-namespace android {
-namespace camera2 {
-
-/**
- * Current camera state; this is the full state of the Camera under the old
- * camera API (contents of the CameraParameters object in a more-efficient
- * format, plus other state). The enum values are mostly based off the
- * corresponding camera2 enums, not the camera1 strings. A few are defined here
- * if they don't cleanly map to camera2 values.
- */
-struct Parameters {
- /**
- * Parameters and other state
- */
- int cameraId;
- int cameraFacing;
-
- int previewWidth, previewHeight;
- int32_t previewFpsRange[2];
- int previewFps; // deprecated, here only for tracking changes
- int previewFormat;
-
- int previewTransform; // set by CAMERA_CMD_SET_DISPLAY_ORIENTATION
-
- int pictureWidth, pictureHeight;
-
- int32_t jpegThumbSize[2];
- int32_t jpegQuality, jpegThumbQuality;
- int32_t jpegRotation;
-
- bool gpsEnabled;
- double gpsCoordinates[3];
- int64_t gpsTimestamp;
- String8 gpsProcessingMethod;
-
- uint8_t wbMode;
- uint8_t effectMode;
- uint8_t antibandingMode;
- uint8_t sceneMode;
-
- enum flashMode_t {
- FLASH_MODE_OFF = 0,
- FLASH_MODE_AUTO,
- FLASH_MODE_ON,
- FLASH_MODE_TORCH,
- FLASH_MODE_RED_EYE = ANDROID_CONTROL_AE_ON_AUTO_FLASH_REDEYE,
- FLASH_MODE_INVALID = -1
- } flashMode;
-
- enum focusMode_t {
- FOCUS_MODE_AUTO = ANDROID_CONTROL_AF_AUTO,
- FOCUS_MODE_MACRO = ANDROID_CONTROL_AF_MACRO,
- FOCUS_MODE_CONTINUOUS_VIDEO = ANDROID_CONTROL_AF_CONTINUOUS_VIDEO,
- FOCUS_MODE_CONTINUOUS_PICTURE = ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
- FOCUS_MODE_EDOF = ANDROID_CONTROL_AF_EDOF,
- FOCUS_MODE_INFINITY,
- FOCUS_MODE_FIXED,
- FOCUS_MODE_INVALID = -1
- } focusMode;
-
- uint8_t focusState; // Latest focus state from HAL
-
- // For use with triggerAfWithAuto quirk
- focusMode_t shadowFocusMode;
-
- struct Area {
- int left, top, right, bottom;
- int weight;
- Area() {}
- Area(int left, int top, int right, int bottom, int weight):
- left(left), top(top), right(right), bottom(bottom),
- weight(weight) {}
- bool isEmpty() const {
- return (left == 0) && (top == 0) && (right == 0) && (bottom == 0);
- }
- };
- Vector<Area> focusingAreas;
-
- int32_t exposureCompensation;
- bool autoExposureLock;
- bool autoWhiteBalanceLock;
-
- Vector<Area> meteringAreas;
-
- int zoom;
-
- int videoWidth, videoHeight;
-
- bool recordingHint;
- bool videoStabilization;
-
- enum lightFxMode_t {
- LIGHTFX_NONE = 0,
- LIGHTFX_LOWLIGHT,
- LIGHTFX_HDR
- } lightFx;
-
- CameraParameters params;
- String8 paramsFlattened;
-
- // These parameters are also part of the camera API-visible state, but not
- // directly listed in Camera.Parameters
- bool storeMetadataInBuffers;
- bool playShutterSound;
- bool enableFaceDetect;
-
- bool enableFocusMoveMessages;
- int afTriggerCounter;
- int currentAfTriggerId;
- bool afInMotion;
-
- int precaptureTriggerCounter;
-
- uint32_t previewCallbackFlags;
- bool previewCallbackOneShot;
-
- bool zslMode;
-
- // Overall camera state
- enum State {
- DISCONNECTED,
- STOPPED,
- WAITING_FOR_PREVIEW_WINDOW,
- PREVIEW,
- RECORD,
- STILL_CAPTURE,
- VIDEO_SNAPSHOT
- } state;
-
- // Number of zoom steps to simulate
- static const unsigned int NUM_ZOOM_STEPS = 30;
-
- // Full static camera info, object owned by someone else, such as
- // Camera2Device.
- const CameraMetadata *info;
-
- // Fast-access static device information; this is a subset of the
- // information available through the staticInfo() method, used for
- // frequently-accessed values or values that have to be calculated from the
- // static information.
- struct DeviceInfo {
- int32_t arrayWidth;
- int32_t arrayHeight;
- uint8_t bestFaceDetectMode;
- int32_t maxFaces;
- struct OverrideModes {
- flashMode_t flashMode;
- uint8_t wbMode;
- focusMode_t focusMode;
- OverrideModes():
- flashMode(FLASH_MODE_INVALID),
- wbMode(ANDROID_CONTROL_AWB_OFF),
- focusMode(FOCUS_MODE_INVALID) {
- }
- };
- DefaultKeyedVector<uint8_t, OverrideModes> sceneModeOverrides;
- } fastInfo;
-
- // Quirks information; these are short-lived flags to enable workarounds for
- // incomplete HAL implementations
- struct Quirks {
- bool triggerAfWithAuto;
- bool useZslFormat;
- bool meteringCropRegion;
- } quirks;
-
- /**
- * Parameter manipulation and setup methods
- */
-
- Parameters(int cameraId, int cameraFacing);
- ~Parameters();
-
- // Sets up default parameters
- status_t initialize(const CameraMetadata *info);
-
- // Build fast-access device static info from static info
- status_t buildFastInfo();
- // Query for quirks from static info
- status_t buildQuirks();
-
- // Get entry from camera static characteristics information. min/maxCount
- // are used for error checking the number of values in the entry. 0 for
- // max/minCount means to do no bounds check in that direction. In case of
- // error, the entry data pointer is null and the count is 0.
- camera_metadata_ro_entry_t staticInfo(uint32_t tag,
- size_t minCount=0, size_t maxCount=0) const;
-
- // Validate and update camera parameters based on new settings
- status_t set(const String8 &paramString);
-
- // Retrieve the current settings
- String8 get() const;
-
- // Update passed-in request for common parameters
- status_t updateRequest(CameraMetadata *request) const;
-
- // Add/update JPEG entries in metadata
- status_t updateRequestJpeg(CameraMetadata *request) const;
-
- // Calculate the crop region rectangle based on current stream sizes
- struct CropRegion {
- float left;
- float top;
- float width;
- float height;
-
- enum Outputs {
- OUTPUT_PREVIEW = 0x01,
- OUTPUT_VIDEO = 0x02,
- OUTPUT_JPEG_THUMBNAIL = 0x04,
- OUTPUT_PICTURE = 0x08,
- };
- };
- CropRegion calculateCropRegion(CropRegion::Outputs outputs) const;
-
- // Static methods for debugging and converting between camera1 and camera2
- // parameters
-
- static const char *getStateName(State state);
-
- static int formatStringToEnum(const char *format);
- static const char *formatEnumToString(int format);
-
- static int wbModeStringToEnum(const char *wbMode);
- static const char* wbModeEnumToString(uint8_t wbMode);
- static int effectModeStringToEnum(const char *effectMode);
- static int abModeStringToEnum(const char *abMode);
- static int sceneModeStringToEnum(const char *sceneMode);
- static flashMode_t flashModeStringToEnum(const char *flashMode);
- static const char* flashModeEnumToString(flashMode_t flashMode);
- static focusMode_t focusModeStringToEnum(const char *focusMode);
- static const char* focusModeEnumToString(focusMode_t focusMode);
- static status_t parseAreas(const char *areasCStr,
- Vector<Area> *areas);
-
- enum AreaKind
- {
- AREA_KIND_FOCUS,
- AREA_KIND_METERING
- };
- status_t validateAreas(const Vector<Area> &areas,
- size_t maxRegions,
- AreaKind areaKind) const;
- static bool boolFromString(const char *boolStr);
-
- // Map from camera orientation + facing to gralloc transform enum
- static int degToTransform(int degrees, bool mirror);
-
- // API specifies FPS ranges are done in fixed point integer, with LSB = 0.001.
- // Note that this doesn't apply to the (deprecated) single FPS value.
- static const int kFpsToApiScale = 1000;
-
- // Transform between (-1000,-1000)-(1000,1000) normalized coords from camera
- // API and HAL2 (0,0)-(activePixelArray.width/height) coordinates
- int arrayXToNormalized(int width) const;
- int arrayYToNormalized(int height) const;
- int normalizedXToArray(int x) const;
- int normalizedYToArray(int y) const;
-
- struct Range {
- int min;
- int max;
- };
-
- int32_t fpsFromRange(int32_t min, int32_t max) const;
-
-private:
-
- // Convert between HAL2 sensor array coordinates and
- // viewfinder crop-region relative array coordinates
- int cropXToArray(int x) const;
- int cropYToArray(int y) const;
- int arrayXToCrop(int x) const;
- int arrayYToCrop(int y) const;
-
- // Convert between viewfinder crop-region relative array coordinates
- // and camera API (-1000,1000)-(1000,1000) normalized coords
- int cropXToNormalized(int x) const;
- int cropYToNormalized(int y) const;
- int normalizedXToCrop(int x) const;
- int normalizedYToCrop(int y) const;
-};
-
-// This class encapsulates the Parameters class so that it can only be accessed
-// by constructing a Lock object, which locks the SharedParameter's mutex.
-class SharedParameters {
- public:
- SharedParameters(int cameraId, int cameraFacing):
- mParameters(cameraId, cameraFacing) {
- }
-
- template<typename S, typename P>
- class BaseLock {
- public:
- BaseLock(S &p):
- mParameters(p.mParameters),
- mSharedParameters(p) {
- mSharedParameters.mLock.lock();
- }
-
- ~BaseLock() {
- mSharedParameters.mLock.unlock();
- }
- P &mParameters;
- private:
- // Disallow copying, default construction
- BaseLock();
- BaseLock(const BaseLock &);
- BaseLock &operator=(const BaseLock &);
- S &mSharedParameters;
- };
- typedef BaseLock<SharedParameters, Parameters> Lock;
- typedef BaseLock<const SharedParameters, const Parameters> ReadLock;
-
- // Access static info, read-only and immutable, so no lock needed
- camera_metadata_ro_entry_t staticInfo(uint32_t tag,
- size_t minCount=0, size_t maxCount=0) const {
- return mParameters.staticInfo(tag, minCount, maxCount);
- }
-
- // Only use for dumping or other debugging
- const Parameters &unsafeAccess() {
- return mParameters;
- }
- private:
- Parameters mParameters;
- mutable Mutex mLock;
-};
-
-
-}; // namespace camera2
-}; // namespace android
-
-#endif