X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fandroid%2Fcamera%2FEmulatedQemuCameraDevice.h;fp=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fandroid%2Fcamera%2FEmulatedQemuCameraDevice.h;h=8ef562b2a89c17b4bf2952b60437b3768f51a613;hb=e26c1ec581be598521517829adba8c8dd23a768f;hp=0000000000000000000000000000000000000000;hpb=6699c1aea74eeb0eb400e6299079f0c7576f716f;p=iec.git diff --git a/src/type3_AndroidCloud/anbox-master/android/camera/EmulatedQemuCameraDevice.h b/src/type3_AndroidCloud/anbox-master/android/camera/EmulatedQemuCameraDevice.h new file mode 100644 index 0000000..8ef562b --- /dev/null +++ b/src/type3_AndroidCloud/anbox-master/android/camera/EmulatedQemuCameraDevice.h @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2011 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 HW_EMULATOR_CAMERA_EMULATED_QEMU_CAMERA_DEVICE_H +#define HW_EMULATOR_CAMERA_EMULATED_QEMU_CAMERA_DEVICE_H + +/* + * Contains declaration of a class EmulatedQemuCameraDevice that encapsulates + * an emulated camera device connected to the host. + */ + +#include "EmulatedCameraDevice.h" +#include "QemuClient.h" + +namespace android { + +class EmulatedQemuCamera; + +/* Encapsulates an emulated camera device connected to the host. + */ +class EmulatedQemuCameraDevice : public EmulatedCameraDevice { +public: + /* Constructs EmulatedQemuCameraDevice instance. */ + explicit EmulatedQemuCameraDevice(EmulatedQemuCamera* camera_hal); + + /* Destructs EmulatedQemuCameraDevice instance. */ + ~EmulatedQemuCameraDevice(); + + /*************************************************************************** + * Public API + **************************************************************************/ + +public: + /* Initializes EmulatedQemuCameraDevice instance. + * Param: + * device_name - Name of the camera device connected to the host. The name + * that is used here must have been reported by the 'factory' camera + * service when it listed camera devices connected to the host. + * Return: + * NO_ERROR on success, or an appropriate error status. + */ + status_t Initialize(const char* device_name); + + /*************************************************************************** + * Emulated camera device abstract interface implementation. + * See declarations of these methods in EmulatedCameraDevice class for + * information on each of these methods. + **************************************************************************/ + +public: + /* Connects to the camera device. */ + status_t connectDevice(); + + /* Disconnects from the camera device. */ + status_t disconnectDevice(); + + /* Starts capturing frames from the camera device. */ + status_t startDevice(int width, int height, uint32_t pix_fmt); + + /* Stops capturing frames from the camera device. */ + status_t stopDevice(); + + /*************************************************************************** + * EmulatedCameraDevice virtual overrides + * See declarations of these methods in EmulatedCameraDevice class for + * information on each of these methods. + **************************************************************************/ + +public: + /* Gets current preview fame into provided buffer. + * We override this method in order to provide preview frames cached in this + * object. + */ + status_t getCurrentPreviewFrame(void* buffer); + + /*************************************************************************** + * Worker thread management overrides. + * See declarations of these methods in EmulatedCameraDevice class for + * information on each of these methods. + **************************************************************************/ + +protected: + /* Implementation of the worker thread routine. */ + bool inWorkerThread(); + + /*************************************************************************** + * Qemu camera device data members + **************************************************************************/ + +private: + /* Qemu client that is used to communicate with the 'emulated camera' + * service, created for this instance in the emulator. */ + CameraQemuClient mQemuClient; + + /* Name of the camera device connected to the host. */ + String8 mDeviceName; + + /* Current preview framebuffer. */ + uint32_t* mPreviewFrame; + + /* Emulated FPS (frames per second). + * We will emulate 50 FPS. */ + static const int mEmulatedFPS = 50; +}; + +}; /* namespace android */ + +#endif /* HW_EMULATOR_CAMERA_EMULATED_QEMU_CAMERA_DEVICE_H */