Revert "Add support for camera preview to be in overlay surfaces."

This reverts commit c35feb106e.
This commit is contained in:
Jean-Baptiste Queru
2009-03-18 11:08:56 -07:00
parent 69577ae794
commit 42e48026b2
3 changed files with 17 additions and 45 deletions

View File

@@ -158,7 +158,6 @@ CameraService::Client::Client(const sp<CameraService>& cameraService,
mCameraClient = cameraClient;
mClientPid = clientPid;
mHardware = openCameraHardware();
mUseOverlay = mHardware->useOverlay();
// Callback is disabled by default
mFrameCallbackFlag = FRAME_CALLBACK_FLAG_NOOP;
@@ -234,7 +233,7 @@ CameraService::Client::~Client()
{
// tear down client
LOGD("Client E destructor");
if (mSurface != 0 && !mUseOverlay) {
if (mSurface != 0) {
#if HAVE_ANDROID_OS
pthread_t thr;
// We unregister the buffers in a different thread because binder does
@@ -289,7 +288,7 @@ status_t CameraService::Client::setPreviewDisplay(const sp<ISurface>& surface)
Mutex::Autolock surfaceLock(mSurfaceLock);
// asBinder() is safe on NULL (returns NULL)
if (surface->asBinder() != mSurface->asBinder()) {
if (mSurface != 0 && !mUseOverlay) {
if (mSurface != 0) {
LOGD("clearing old preview surface %p", mSurface.get());
mSurface->unregisterBuffers();
}
@@ -342,39 +341,17 @@ status_t CameraService::Client::startPreview()
#if DEBUG_DUMP_PREVIEW_FRAME_TO_FILE
debug_frame_cnt = 0;
#endif
status_t ret;
if (mUseOverlay) {
const char *format = params.getPreviewFormat();
int fmt;
LOGD("Use Overlays");
if (!strcmp(format, "yuv422i"))
fmt = OVERLAY_FORMAT_YCbCr_422_I;
else if (!strcmp(format, "rgb565"))
fmt = OVERLAY_FORMAT_RGB_565;
else {
LOGE("Invalid preview format for overlays");
return -EINVAL;
}
sp<OverlayRef> ref = mSurface->createOverlay(w, h, fmt);
ret = mHardware->setOverlay(new Overlay(ref));
if (ret != NO_ERROR) {
LOGE("mHardware->setOverlay() failed with status %d\n", ret);
return ret;
}
ret = mHardware->startPreview(NULL, mCameraService.get());
if (ret != NO_ERROR)
LOGE("mHardware->startPreview() failed with status %d\n", ret);
} else {
LOGD("Don't use Overlays");
ret = mHardware->startPreview(previewCallback,
mCameraService.get());
if (ret == NO_ERROR) {
mSurface->unregisterBuffers();
mSurface->registerBuffers(w, h, w, h, PIXEL_FORMAT_YCbCr_420_SP,
mHardware->getPreviewHeap());
}
else LOGE("mHardware->startPreview() failed with status %d\n", ret);
status_t ret = mHardware->startPreview(previewCallback,
mCameraService.get());
if (ret == NO_ERROR) {
mSurface->unregisterBuffers();
mSurface->registerBuffers(w,h,w,h,
PIXEL_FORMAT_YCbCr_420_SP,
mHardware->getPreviewHeap());
}
else LOGE("mHardware->startPreview() failed with status %d\n",
ret);
return ret;
}
@@ -395,7 +372,7 @@ void CameraService::Client::stopPreview()
mHardware->stopPreview();
LOGD("stopPreview(), hardware stopped OK");
if (mSurface != 0 && !mUseOverlay) {
if (mSurface != 0) {
mSurface->unregisterBuffers();
}
mPreviewBuffer.clear();
@@ -543,7 +520,7 @@ status_t CameraService::Client::takePicture()
return INVALID_OPERATION;
}
if (mSurface != NULL && !mUseOverlay)
if (mSurface != NULL)
mSurface->unregisterBuffers();
return mHardware->takePicture(shutterCallback,
@@ -596,7 +573,7 @@ void CameraService::Client::yuvPictureCallback(const sp<IMemory>& mem,
params.getPictureSize(&w, &h);
// Mutex::Autolock clientLock(client->mLock);
if (client->mSurface != 0 && !client->mUseOverlay) {
if (client->mSurface != 0) {
client->mSurface->unregisterBuffers();
client->mSurface->registerBuffers(w,h,w,h,
PIXEL_FORMAT_YCbCr_420_SP, heap);
@@ -903,3 +880,5 @@ status_t CameraService::onTransact(
#endif // DEBUG_HEAP_LEAKS
}; // namespace android

View File

@@ -159,7 +159,6 @@ private:
sp<ICameraClient> mCameraClient;
sp<CameraHardwareInterface> mHardware;
pid_t mClientPid;
bool mUseOverlay;
};
// ----------------------------------------------------------------------------

View File

@@ -20,7 +20,6 @@
#include <utils/IMemory.h>
#include <utils/RefBase.h>
#include <ui/CameraParameters.h>
#include <ui/Overlay.h>
namespace android {
@@ -90,11 +89,6 @@ public:
* call back parameter may be null.
*/
virtual status_t startPreview(preview_callback cb, void* user) = 0;
/**
* Only used if overlays are used for camera preview.
*/
virtual bool useOverlay() {return false;}
virtual status_t setOverlay(const sp<Overlay> &overlay) {return BAD_VALUE;}
/**
* Stop a previously started preview.