1d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala/* 2d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project 3d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * 4d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * you may not use this file except in compliance with the License. 6d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * You may obtain a copy of the License at 7d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * 8d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * 10d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * See the License for the specific language governing permissions and 14d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * limitations under the License. 15d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala */ 16d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 17d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala#ifndef HW_EMULATOR_CAMERA_EMULATED_BASE_CAMERA_H 18d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala#define HW_EMULATOR_CAMERA_EMULATED_BASE_CAMERA_H 19d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 20d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala#include <hardware/camera_common.h> 21d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala#include <utils/Errors.h> 22d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 23d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvalanamespace android { 24d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 25d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala/* 26d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Contains declaration of a class EmulatedBaseCamera that encapsulates 27d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * functionality common to all emulated camera device versions ("fake", 28d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * "webcam", "video file", etc.). Instances of this class (for each emulated 29d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * camera) are created during the construction of the EmulatedCameraFactory 30d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * instance. This class serves as an entry point for all camera API calls that 31d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * are common across all versions of the camera_device_t/camera_module_t 32d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * structures. 33d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala */ 34d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 35d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvalaclass EmulatedBaseCamera { 36d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala public: 37d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala EmulatedBaseCamera(int cameraId, 38d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala uint32_t cameraVersion, 39d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala struct hw_device_t* device, 40d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala struct hw_module_t* module); 41d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 42d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala virtual ~EmulatedBaseCamera(); 43d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 44d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /**************************************************************************** 45d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Public API 46d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala ***************************************************************************/ 47d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 48d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala public: 49d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Initializes EmulatedCamera instance. 50d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Return: 51d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * NO_ERROR on success, or an appropriate error status on failure. 52d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala */ 53d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala virtual status_t Initialize() = 0; 54d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 55d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /**************************************************************************** 56d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Camera API implementation 57d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala ***************************************************************************/ 58d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 59d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala public: 60d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Creates connection to the emulated camera device. 61d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * This method is called in response to hw_module_methods_t::open callback. 62d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * NOTE: When this method is called the object is locked. 63d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Note that failures in this method are reported as negative EXXX statuses. 64d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala */ 65d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala virtual status_t connectCamera(hw_device_t** device) = 0; 66d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 67d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Closes connection to the emulated camera. 68d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * This method is called in response to camera_device::close callback. 69d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * NOTE: When this method is called the object is locked. 70d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Note that failures in this method are reported as negative EXXX statuses. 71d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala */ 72d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala virtual status_t closeCamera() = 0; 73d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 74d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Gets camera information. 75d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * This method is called in response to camera_module_t::get_camera_info 76d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * callback. 77d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * NOTE: When this method is called the object is locked. 78d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Note that failures in this method are reported as negative EXXX statuses. 79d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala */ 80d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala virtual status_t getCameraInfo(struct camera_info* info) = 0; 81d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 82d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /**************************************************************************** 83d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * Data members 84d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala ***************************************************************************/ 85d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 86d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala protected: 87d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Fixed camera information for camera2 devices. Must be valid to access if 88d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala * mCameraDeviceVersion is >= HARDWARE_DEVICE_API_VERSION(2,0) */ 89d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala camera_metadata_t *mCameraInfo; 90d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 91d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala private: 92d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Zero-based ID assigned to this camera. */ 93d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala int mCameraID; 94d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 95d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala /* Version of the camera device HAL implemented by this camera */ 96d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala int mCameraDeviceVersion; 97d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala}; 98d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 99d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala} /* namespace android */ 100d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala 101d6a3832650c70e3cfd6efe88077d62b96a357e70Eino-Ville Talvala#endif /* HW_EMULATOR_CAMERA_EMULATED_BASE_CAMERA_H */ 102