mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 21:37:44 +00:00
This CL moves the common helper classes from inside the HIDL directory and refactors the HIDL-esque namespaces to android style namespaces. To preserve compatibility, the header files export the new symbols under old namespace and the old build module exports symbols from the new build module. This refactor is transparent to the codebase. Also ran clangformat to appease the repohook gods. Bug: 219974678 Test: Existing VTS tests pass on Cuttlefish Change-Id: I8c3160497c1e2fe7a0a7155641f0e1f5e47ec32e
106 lines
3.8 KiB
C++
106 lines
3.8 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 <string>
|
|
#include <unordered_set>
|
|
|
|
#include <hardware/camera.h>
|
|
#include <utils/KeyedVector.h>
|
|
#include <utils/Mutex.h>
|
|
#include <utils/RefBase.h>
|
|
|
|
#include "CameraMetadata.h"
|
|
|
|
namespace android {
|
|
namespace hardware {
|
|
namespace camera {
|
|
namespace common {
|
|
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);
|
|
void notifyDeviceStateChange(uint64_t deviceState);
|
|
|
|
static bool isLogicalMultiCamera(const common::helper::CameraMetadata& metadata,
|
|
std::unordered_set<std::string>* physicalCameraIds);
|
|
|
|
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
|
|
|
|
// NOTE: Deprecated namespace. This namespace should no longer be used for the following symbols
|
|
namespace V1_0::helper {
|
|
// Export symbols to the old namespace to preserve compatibility
|
|
typedef android::hardware::camera::common::helper::CameraModule CameraModule;
|
|
} // namespace V1_0::helper
|
|
|
|
} // namespace common
|
|
} // namespace camera
|
|
} // namespace hardware
|
|
} // namespace android
|
|
|
|
#endif
|