Loading camera/libcameraservice/CameraService.cpp +17 −3 Original line number Diff line number Diff line Loading @@ -865,7 +865,11 @@ status_t CameraService::Client::takePicture() } // snapshot taken void CameraService::Client::handleShutter() void CameraService::Client::handleShutter( image_rect_type *size // The width and height of yuv picture for // registerBuffer. If this is NULL, use the picture // size from parameters. ) { // Play shutter sound. if (mMediaPlayerClick.get() != NULL) { Loading @@ -889,12 +893,21 @@ void CameraService::Client::handleShutter() if (mSurface != 0 && !mUseOverlay) { int w, h; CameraParameters params(mHardware->getParameters()); params.getPictureSize(&w, &h); uint32_t transform = 0; if (params.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { LOGV("portrait mode"); transform = ISurface::BufferHeap::ROT_90; } if (size == NULL) { params.getPictureSize(&w, &h); } else { w = size->width; h = size->height; w &= ~1; h &= ~1; LOGD("Snapshot image width=%d, height=%d", w, h); } ISurface::BufferHeap buffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP, transform, 0, mHardware->getRawHeap()); Loading Loading @@ -1048,7 +1061,8 @@ void CameraService::Client::notifyCallback(int32_t msgType, int32_t ext1, int32_ switch (msgType) { case CAMERA_MSG_SHUTTER: client->handleShutter(); // ext1 is the dimension of the yuv picture. client->handleShutter((image_rect_type *)ext1); break; default: sp<ICameraClient> c = client->mCameraClient; Loading camera/libcameraservice/CameraService.h +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ private: static sp<Client> getClientFromCookie(void* user); void handlePreviewData(const sp<IMemory>&); void handleShutter(); void handleShutter(image_rect_type *image); void handlePostview(const sp<IMemory>&); void handleRawPicture(const sp<IMemory>&); void handleCompressedPicture(const sp<IMemory>&); Loading include/ui/CameraHardwareInterface.h +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,15 @@ #include <ui/Overlay.h> namespace android { /** * The size of image for display. */ typedef struct image_rect_struct { uint32_t width; /* Image width */ uint32_t height; /* Image height */ } image_rect_type; typedef void (*notify_callback)(int32_t msgType, int32_t ext1, Loading Loading
camera/libcameraservice/CameraService.cpp +17 −3 Original line number Diff line number Diff line Loading @@ -865,7 +865,11 @@ status_t CameraService::Client::takePicture() } // snapshot taken void CameraService::Client::handleShutter() void CameraService::Client::handleShutter( image_rect_type *size // The width and height of yuv picture for // registerBuffer. If this is NULL, use the picture // size from parameters. ) { // Play shutter sound. if (mMediaPlayerClick.get() != NULL) { Loading @@ -889,12 +893,21 @@ void CameraService::Client::handleShutter() if (mSurface != 0 && !mUseOverlay) { int w, h; CameraParameters params(mHardware->getParameters()); params.getPictureSize(&w, &h); uint32_t transform = 0; if (params.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { LOGV("portrait mode"); transform = ISurface::BufferHeap::ROT_90; } if (size == NULL) { params.getPictureSize(&w, &h); } else { w = size->width; h = size->height; w &= ~1; h &= ~1; LOGD("Snapshot image width=%d, height=%d", w, h); } ISurface::BufferHeap buffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP, transform, 0, mHardware->getRawHeap()); Loading Loading @@ -1048,7 +1061,8 @@ void CameraService::Client::notifyCallback(int32_t msgType, int32_t ext1, int32_ switch (msgType) { case CAMERA_MSG_SHUTTER: client->handleShutter(); // ext1 is the dimension of the yuv picture. client->handleShutter((image_rect_type *)ext1); break; default: sp<ICameraClient> c = client->mCameraClient; Loading
camera/libcameraservice/CameraService.h +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ private: static sp<Client> getClientFromCookie(void* user); void handlePreviewData(const sp<IMemory>&); void handleShutter(); void handleShutter(image_rect_type *image); void handlePostview(const sp<IMemory>&); void handleRawPicture(const sp<IMemory>&); void handleCompressedPicture(const sp<IMemory>&); Loading
include/ui/CameraHardwareInterface.h +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,15 @@ #include <ui/Overlay.h> namespace android { /** * The size of image for display. */ typedef struct image_rect_struct { uint32_t width; /* Image width */ uint32_t height; /* Image height */ } image_rect_type; typedef void (*notify_callback)(int32_t msgType, int32_t ext1, Loading