Files
hardware_interfaces/camera/common/1.0/default/include/CameraModule.h
Emilian Peev 40a8c6ed51 Camera: Add support for stream combination query
Camera devices 3.5 and later can optionally support
stream combination queries. These use the regular
'StreamConfiguration' structure however in contrast
to normal stream configuration, the query will be
much faster and will not cause any HW/SW side effects.
Additionally it will be possible to run stream
combination queries at any time after the camera
device is open.
Implement stream combination query for the external
camera provider.

Bug: 111593096
Test: vts-tradefed run commandAndExit vts --skip-all-system-status-check
--skip-preconditions --module VtsHalCameraProviderV2_4Target -l INFO
Change-Id: I59ec936d17dabc89ba49407a750df1cd2e61b145
2018-11-29 16:40:36 +00:00

94 lines
3.3 KiB
C++

/*
* Copyright (C) 2016 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 CAMERA_COMMON_1_0_CAMERAMODULE_H
#define CAMERA_COMMON_1_0_CAMERAMODULE_H
#include <hardware/camera.h>
#include <utils/Mutex.h>
#include <utils/KeyedVector.h>
#include <utils/RefBase.h>
#include "CameraMetadata.h"
namespace android {
namespace hardware {
namespace camera {
namespace common {
namespace V1_0 {
namespace helper {
/**
* A wrapper class for HAL camera module.
*
* This class wraps camera_module_t returned from HAL to provide a wrapped
* get_camera_info implementation which CameraService generates some
* camera characteristics keys defined in newer HAL version on an older HAL.
*/
class CameraModule : public RefBase {
public:
explicit CameraModule(camera_module_t *module);
virtual ~CameraModule();
// Must be called after construction
// Returns OK on success, NO_INIT on failure
int init();
int getCameraInfo(int cameraId, struct camera_info *info);
int getDeviceVersion(int cameraId);
int getNumberOfCameras(void);
int open(const char* id, struct hw_device_t** device);
bool isOpenLegacyDefined() const;
int openLegacy(const char* id, uint32_t halVersion, struct hw_device_t** device);
int setCallbacks(const camera_module_callbacks_t *callbacks);
bool isVendorTagDefined() const;
void getVendorTagOps(vendor_tag_ops_t* ops);
bool isSetTorchModeSupported() const;
int setTorchMode(const char* camera_id, bool enable);
uint16_t getModuleApiVersion() const;
const char* getModuleName() const;
uint16_t getHalApiVersion() const;
const char* getModuleAuthor() const;
// Only used by CameraModuleFixture native test. Do NOT use elsewhere.
void *getDso();
// Only used by CameraProvider
void removeCamera(int cameraId);
int getPhysicalCameraInfo(int physicalCameraId, camera_metadata_t **physicalInfo);
int isStreamCombinationSupported(int cameraId, camera_stream_combination_t *streams);
private:
// Derive camera characteristics keys defined after HAL device version
static void deriveCameraCharacteristicsKeys(uint32_t deviceVersion, CameraMetadata &chars);
// Helper function to append available[request|result|chars]Keys
static void appendAvailableKeys(CameraMetadata &chars,
int32_t keyTag, const Vector<int32_t>& appendKeys);
status_t filterOpenErrorCode(status_t err);
camera_module_t *mModule;
int mNumberOfCameras;
KeyedVector<int, camera_info> mCameraInfoMap;
KeyedVector<int, int> mDeviceVersionMap;
KeyedVector<int, camera_metadata_t*> mPhysicalCameraInfoMap;
Mutex mCameraInfoLock;
};
} // namespace helper
} // namespace V1_0
} // namespace common
} // namespace camera
} // namespace hardware
} // namespace android
#endif