Loading camera/libcameraservice/CameraService.cpp +14 −15 Original line number Diff line number Diff line Loading @@ -235,6 +235,7 @@ CameraService::Client::Client(const sp<CameraService>& cameraService, // Callback is disabled by default mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP; mOrientation = 0; cameraService->incUsers(); LOGV("Client::Client X (pid %d)", callingPid); } Loading Loading @@ -570,7 +571,8 @@ status_t CameraService::Client::setOverlay() // wait in the createOverlay call if the previous overlay is in the // process of being destroyed. for (int retry = 0; retry < 50; ++retry) { mOverlayRef = mSurface->createOverlay(w, h, OVERLAY_FORMAT_DEFAULT); mOverlayRef = mSurface->createOverlay(w, h, OVERLAY_FORMAT_DEFAULT, mOrientation); if (mOverlayRef != NULL) break; LOGW("Overlay create failed - retrying"); usleep(20000); Loading Loading @@ -601,15 +603,9 @@ status_t CameraService::Client::registerPreviewBuffers() CameraParameters params(mHardware->getParameters()); params.getPreviewSize(&w, &h); uint32_t transform = 0; if (params.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { LOGV("portrait mode"); transform = ISurface::BufferHeap::ROT_90; } ISurface::BufferHeap buffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP, transform, mOrientation, 0, mHardware->getPreviewHeap()); Loading Loading @@ -919,12 +915,6 @@ void CameraService::Client::handleShutter( if (mSurface != 0 && !mUseOverlay) { int w, h; CameraParameters params(mHardware->getParameters()); 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 { Loading @@ -935,7 +925,7 @@ void CameraService::Client::handleShutter( LOGV("Snapshot image width=%d, height=%d", w, h); } ISurface::BufferHeap buffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP, transform, 0, mHardware->getRawHeap()); PIXEL_FORMAT_YCbCr_420_SP, mOrientation, 0, mHardware->getRawHeap()); mSurface->registerBuffers(buffers); } Loading Loading @@ -1200,6 +1190,15 @@ status_t CameraService::Client::setParameters(const String8& params) } CameraParameters p(params); // The orientation parameter is actually for CameraService, not for the camera driver. if (p.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { LOGV("portrait mode"); mOrientation = ISurface::BufferHeap::ROT_90; } else { mOrientation = 0; } return mHardware->setParameters(p); } Loading camera/libcameraservice/CameraService.h +1 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ private: sp<CameraService> mCameraService; sp<ISurface> mSurface; int mPreviewCallbackFlag; int mOrientation; sp<MediaPlayer> mMediaPlayerClick; sp<MediaPlayer> mMediaPlayerBeep; Loading camera/tests/CameraServiceTest/CameraServiceTest.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -283,7 +283,7 @@ public: virtual void postBuffer(ssize_t offset); virtual void unregisterBuffers(); virtual sp<OverlayRef> createOverlay( uint32_t w, uint32_t h, int32_t format); uint32_t w, uint32_t h, int32_t format, int32_t orientation); virtual sp<GraphicBuffer> requestBuffer(int bufferIdx, int usage); // new functions Loading Loading @@ -346,7 +346,8 @@ void MSurface::waitUntil(int c0, int c1, int c2) { } } sp<OverlayRef> MSurface::createOverlay(uint32_t w, uint32_t h, int32_t format) { sp<OverlayRef> MSurface::createOverlay(uint32_t w, uint32_t h, int32_t format, int32_t orientation) { // We don't expect this to be called in current hardware. ASSERT(0); sp<OverlayRef> dummy; Loading include/ui/ISurface.h +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ public: virtual void unregisterBuffers() = 0; virtual sp<OverlayRef> createOverlay( uint32_t w, uint32_t h, int32_t format) = 0; uint32_t w, uint32_t h, int32_t format, int32_t orientation) = 0; }; // ---------------------------------------------------------------------------- Loading libs/surfaceflinger/LayerBase.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -809,7 +809,7 @@ void LayerBaseClient::Surface::unregisterBuffers() } sp<OverlayRef> LayerBaseClient::Surface::createOverlay( uint32_t w, uint32_t h, int32_t format) uint32_t w, uint32_t h, int32_t format, int32_t orientation) { return NULL; }; Loading Loading
camera/libcameraservice/CameraService.cpp +14 −15 Original line number Diff line number Diff line Loading @@ -235,6 +235,7 @@ CameraService::Client::Client(const sp<CameraService>& cameraService, // Callback is disabled by default mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP; mOrientation = 0; cameraService->incUsers(); LOGV("Client::Client X (pid %d)", callingPid); } Loading Loading @@ -570,7 +571,8 @@ status_t CameraService::Client::setOverlay() // wait in the createOverlay call if the previous overlay is in the // process of being destroyed. for (int retry = 0; retry < 50; ++retry) { mOverlayRef = mSurface->createOverlay(w, h, OVERLAY_FORMAT_DEFAULT); mOverlayRef = mSurface->createOverlay(w, h, OVERLAY_FORMAT_DEFAULT, mOrientation); if (mOverlayRef != NULL) break; LOGW("Overlay create failed - retrying"); usleep(20000); Loading Loading @@ -601,15 +603,9 @@ status_t CameraService::Client::registerPreviewBuffers() CameraParameters params(mHardware->getParameters()); params.getPreviewSize(&w, &h); uint32_t transform = 0; if (params.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { LOGV("portrait mode"); transform = ISurface::BufferHeap::ROT_90; } ISurface::BufferHeap buffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP, transform, mOrientation, 0, mHardware->getPreviewHeap()); Loading Loading @@ -919,12 +915,6 @@ void CameraService::Client::handleShutter( if (mSurface != 0 && !mUseOverlay) { int w, h; CameraParameters params(mHardware->getParameters()); 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 { Loading @@ -935,7 +925,7 @@ void CameraService::Client::handleShutter( LOGV("Snapshot image width=%d, height=%d", w, h); } ISurface::BufferHeap buffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP, transform, 0, mHardware->getRawHeap()); PIXEL_FORMAT_YCbCr_420_SP, mOrientation, 0, mHardware->getRawHeap()); mSurface->registerBuffers(buffers); } Loading Loading @@ -1200,6 +1190,15 @@ status_t CameraService::Client::setParameters(const String8& params) } CameraParameters p(params); // The orientation parameter is actually for CameraService, not for the camera driver. if (p.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { LOGV("portrait mode"); mOrientation = ISurface::BufferHeap::ROT_90; } else { mOrientation = 0; } return mHardware->setParameters(p); } Loading
camera/libcameraservice/CameraService.h +1 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ private: sp<CameraService> mCameraService; sp<ISurface> mSurface; int mPreviewCallbackFlag; int mOrientation; sp<MediaPlayer> mMediaPlayerClick; sp<MediaPlayer> mMediaPlayerBeep; Loading
camera/tests/CameraServiceTest/CameraServiceTest.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -283,7 +283,7 @@ public: virtual void postBuffer(ssize_t offset); virtual void unregisterBuffers(); virtual sp<OverlayRef> createOverlay( uint32_t w, uint32_t h, int32_t format); uint32_t w, uint32_t h, int32_t format, int32_t orientation); virtual sp<GraphicBuffer> requestBuffer(int bufferIdx, int usage); // new functions Loading Loading @@ -346,7 +346,8 @@ void MSurface::waitUntil(int c0, int c1, int c2) { } } sp<OverlayRef> MSurface::createOverlay(uint32_t w, uint32_t h, int32_t format) { sp<OverlayRef> MSurface::createOverlay(uint32_t w, uint32_t h, int32_t format, int32_t orientation) { // We don't expect this to be called in current hardware. ASSERT(0); sp<OverlayRef> dummy; Loading
include/ui/ISurface.h +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ public: virtual void unregisterBuffers() = 0; virtual sp<OverlayRef> createOverlay( uint32_t w, uint32_t h, int32_t format) = 0; uint32_t w, uint32_t h, int32_t format, int32_t orientation) = 0; }; // ---------------------------------------------------------------------------- Loading
libs/surfaceflinger/LayerBase.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -809,7 +809,7 @@ void LayerBaseClient::Surface::unregisterBuffers() } sp<OverlayRef> LayerBaseClient::Surface::createOverlay( uint32_t w, uint32_t h, int32_t format) uint32_t w, uint32_t h, int32_t format, int32_t orientation) { return NULL; }; Loading