diff options
author | Igor Murashkin <iam@google.com> | 2013-02-26 14:32:34 -0800 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-02-26 18:54:03 -0800 |
commit | c073ba525404f3416c2824c435d3d926a9892f1b (patch) | |
tree | f9fa36f1473054c5098bffa3926be9d2cbf6bd6f /include/camera/Camera.h | |
parent | b39f30b0a4902ea0f28454885785da4b2629fe25 (diff) | |
download | frameworks_av-c073ba525404f3416c2824c435d3d926a9892f1b.zip frameworks_av-c073ba525404f3416c2824c435d3d926a9892f1b.tar.gz frameworks_av-c073ba525404f3416c2824c435d3d926a9892f1b.tar.bz2 |
camera_client: refactor Camera/ProCamera commonalities into BasicCamera
Change-Id: Ie10a4094522d49683657665fe94ab0b7ccd280e9
Diffstat (limited to 'include/camera/Camera.h')
-rw-r--r-- | include/camera/Camera.h | 81 |
1 files changed, 20 insertions, 61 deletions
diff --git a/include/camera/Camera.h b/include/camera/Camera.h index be2b7f4..71c66ce 100644 --- a/include/camera/Camera.h +++ b/include/camera/Camera.h @@ -23,35 +23,13 @@ #include <camera/ICameraClient.h> #include <camera/ICameraRecordingProxy.h> #include <camera/ICameraRecordingProxyListener.h> +#include <camera/ICameraService.h> +#include <camera/ICamera.h> +#include <camera/CameraBase.h> namespace android { -struct CameraInfo { - /** - * The direction that the camera faces to. It should be CAMERA_FACING_BACK - * or CAMERA_FACING_FRONT. - */ - int facing; - - /** - * The orientation of the camera image. The value is the angle that the - * camera image needs to be rotated clockwise so it shows correctly on the - * display in its natural orientation. It should be 0, 90, 180, or 270. - * - * For example, suppose a device has a naturally tall screen. The - * back-facing camera sensor is mounted in landscape. You are looking at - * the screen. If the top side of the camera sensor is aligned with the - * right edge of the screen in natural orientation, the value should be - * 90. If the top side of a front-facing camera sensor is aligned with the - * right of the screen, the value should be 270. - */ - int orientation; -}; - -class ICameraService; -class ICamera; class Surface; -class Mutex; class String8; class String16; @@ -65,32 +43,37 @@ public: virtual void postDataTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr) = 0; }; -class Camera : public BnCameraClient, public IBinder::DeathRecipient +class Camera; + +template <> +struct CameraTraits<Camera> +{ + typedef CameraListener TCamListener; + typedef ICamera TCamUser; + typedef ICameraClient TCamCallbacks; +}; + +class Camera : + public CameraBase<Camera>, + public BnCameraClient { public: enum { - USE_CALLING_UID = -1 + USE_CALLING_UID = ICameraService::USE_CALLING_UID }; // construct a camera client from an existing remote static sp<Camera> create(const sp<ICamera>& camera); - static int32_t getNumberOfCameras(); - static status_t getCameraInfo(int cameraId, - struct CameraInfo* cameraInfo); static sp<Camera> connect(int cameraId, const String16& clientPackageName, int clientUid); virtual ~Camera(); - void init(); status_t reconnect(); - void disconnect(); status_t lock(); status_t unlock(); - status_t getStatus() { return mStatus; } - // pass the buffered Surface to the camera service status_t setPreviewDisplay(const sp<Surface>& surface); @@ -151,8 +134,6 @@ public: camera_frame_metadata_t *metadata); virtual void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr); - sp<ICamera> remote(); - class RecordingProxy : public BnCameraRecordingProxy { public: @@ -168,35 +149,13 @@ public: }; protected: - Camera(); + Camera(int cameraId); Camera(const Camera&); Camera& operator=(const Camera); - virtual void binderDied(const wp<IBinder>& who); - - class DeathNotifier: public IBinder::DeathRecipient - { - public: - DeathNotifier() { - } - - virtual void binderDied(const wp<IBinder>& who); - }; - - static sp<DeathNotifier> mDeathNotifier; - - // helper function to obtain camera service handle - static const sp<ICameraService>& getCameraService(); - - sp<ICamera> mCamera; - status_t mStatus; - - sp<CameraListener> mListener; - sp<ICameraRecordingProxyListener> mRecordingProxyListener; - friend class DeathNotifier; + sp<ICameraRecordingProxyListener> mRecordingProxyListener; - static Mutex mLock; - static sp<ICameraService> mCameraService; + friend class CameraBase; }; }; // namespace android |