From 4b79168835965cf0fc41ebe2a367e22b4cb20d08 Mon Sep 17 00:00:00 2001 From: Jamie Gennis Date: Tue, 10 Aug 2010 16:37:53 -0700 Subject: Change the framework to use the new camera preview path. This change makes the camera HAL interface take an ANativeWindow interface from which all the camera preview buffers will be allocated. The framework code running in application processes now passes a Surface object rather than an ISurface to the camera server via Binder when setting the preview surface. The camera server then forwards that Surface object (which implements the ANativeWindow interface) to the camera HAL, which uses it to communicate with SurfaceFlinger to allocate the camera preview buffers. Change-Id: Ie438f721559cd7de5e4f848a26d96360dda07b5f --- services/camera/libcameraservice/CameraService.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'services/camera/libcameraservice/CameraService.h') diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h index 0d69836..7ed192e 100644 --- a/services/camera/libcameraservice/CameraService.h +++ b/services/camera/libcameraservice/CameraService.h @@ -79,6 +79,12 @@ private: sp mSoundPlayer[NUM_SOUNDS]; int mSoundRef; // reference count (release all MediaPlayer when 0) + // Used by Client objects to extract the ISurface from a Surface object. + // This is used because making Client a friend class of Surface would + // require including this header in Surface.h since Client is a nested + // class. + static sp getISurface(const sp& surface); + class Client : public BnCamera { public: @@ -87,7 +93,7 @@ private: virtual status_t connect(const sp& client); virtual status_t lock(); virtual status_t unlock(); - virtual status_t setPreviewDisplay(const sp& surface); + virtual status_t setPreviewDisplay(const sp& surface); virtual void setPreviewCallbackFlag(int flag); virtual status_t startPreview(); virtual void stopPreview(); @@ -169,6 +175,7 @@ private: // Ensures atomicity among the public methods mutable Mutex mLock; sp mSurface; + sp mPreviewWindow; // If the user want us to return a copy of the preview frame (instead // of the original one), we allocate mPreviewBuffer and reuse it if possible. -- cgit v1.1