diff options
author | James Dong <jdong@google.com> | 2010-10-18 20:42:51 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2010-10-19 23:07:08 -0700 |
commit | 38311859e809118f2cba3597d056abffe4eb80c0 (patch) | |
tree | 0debf077cf395ecb9e5c28979e6bce7325aef34f /services/camera | |
parent | 067222d11f95e2547b638b6daf5d4c06c6dc49ef (diff) | |
download | frameworks_base-38311859e809118f2cba3597d056abffe4eb80c0.zip frameworks_base-38311859e809118f2cba3597d056abffe4eb80c0.tar.gz frameworks_base-38311859e809118f2cba3597d056abffe4eb80c0.tar.bz2 |
Camera framework change required for 0-memcpy recording
bug - 3042125
Change-Id: I46eb7a10b5394086b353fd73e4503beceeed76f1
Diffstat (limited to 'services/camera')
-rw-r--r-- | services/camera/libcameraservice/CameraService.cpp | 25 | ||||
-rw-r--r-- | services/camera/libcameraservice/CameraService.h | 3 |
2 files changed, 27 insertions, 1 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index d09dfff..2bfdc29 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -304,7 +304,6 @@ CameraService::Client::Client(const sp<CameraService>& cameraService, mClientPid = clientPid; mUseOverlay = mHardware->useOverlay(); mMsgEnabled = 0; - mHardware->setCallbacks(notifyCallback, dataCallback, dataCallbackTimestamp, @@ -706,6 +705,30 @@ void CameraService::Client::releaseRecordingFrame(const sp<IMemory>& mem) { mHardware->releaseRecordingFrame(mem); } +int32_t CameraService::Client::getNumberOfVideoBuffers() const { + LOG1("getNumberOfVideoBuffers"); + Mutex::Autolock lock(mLock); + if (checkPidAndHardware() != NO_ERROR) return 0; + return mHardware->getNumberOfVideoBuffers(); +} + +sp<IMemory> CameraService::Client::getVideoBuffer(int32_t index) const { + LOG1("getVideoBuffer: %d", index); + Mutex::Autolock lock(mLock); + if (checkPidAndHardware() != NO_ERROR) return 0; + return mHardware->getVideoBuffer(index); +} + +status_t CameraService::Client::storeMetaDataInBuffers(bool enabled) +{ + LOG1("storeMetaDataInBuffers: %s", enabled? "true": "false"); + Mutex::Autolock lock(mLock); + if (checkPidAndHardware() != NO_ERROR) { + return UNKNOWN_ERROR; + } + return mHardware->storeMetaDataInBuffers(enabled); +} + bool CameraService::Client::previewEnabled() { LOG1("previewEnabled (pid %d)", getCallingPid()); diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h index c8e0c88..b5b85bc 100644 --- a/services/camera/libcameraservice/CameraService.h +++ b/services/camera/libcameraservice/CameraService.h @@ -98,6 +98,9 @@ private: virtual status_t startPreview(); virtual void stopPreview(); virtual bool previewEnabled(); + virtual int32_t getNumberOfVideoBuffers() const; + virtual sp<IMemory> getVideoBuffer(int32_t index) const; + virtual status_t storeMetaDataInBuffers(bool enabled); virtual status_t startRecording(); virtual void stopRecording(); virtual bool recordingEnabled(); |