summaryrefslogtreecommitdiffstats
path: root/libs/camera/Camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/camera/Camera.cpp')
-rw-r--r--libs/camera/Camera.cpp43
1 files changed, 29 insertions, 14 deletions
diff --git a/libs/camera/Camera.cpp b/libs/camera/Camera.cpp
index 7efc6d7..450971d 100644
--- a/libs/camera/Camera.cpp
+++ b/libs/camera/Camera.cpp
@@ -167,39 +167,52 @@ status_t Camera::unlock()
return c->unlock();
}
-// pass the buffered ISurface to the camera service
+// pass the buffered Surface to the camera service
status_t Camera::setPreviewDisplay(const sp<Surface>& surface)
{
- LOGV("setPreviewDisplay");
+ LOGV("setPreviewDisplay(%p)", surface.get());
sp <ICamera> c = mCamera;
if (c == 0) return NO_INIT;
if (surface != 0) {
- return c->setPreviewDisplay(surface->getISurface());
+ return c->setPreviewDisplay(surface);
} else {
LOGD("app passed NULL surface");
return c->setPreviewDisplay(0);
}
}
-status_t Camera::setPreviewDisplay(const sp<ISurface>& surface)
+// start preview mode
+status_t Camera::startPreview()
{
- LOGV("setPreviewDisplay");
- if (surface == 0) {
- LOGD("app passed NULL surface");
- }
+ LOGV("startPreview");
sp <ICamera> c = mCamera;
if (c == 0) return NO_INIT;
- return c->setPreviewDisplay(surface);
+ return c->startPreview();
}
+int32_t Camera::getNumberOfVideoBuffers() const
+{
+ LOGV("getNumberOfVideoBuffers");
+ sp <ICamera> c = mCamera;
+ if (c == 0) return 0;
+ return c->getNumberOfVideoBuffers();
+}
-// start preview mode
-status_t Camera::startPreview()
+sp<IMemory> Camera::getVideoBuffer(int32_t index) const
{
- LOGV("startPreview");
+ LOGV("getVideoBuffer: %d", index);
+ sp <ICamera> c = mCamera;
+ if (c == 0) return 0;
+ return c->getVideoBuffer(index);
+}
+
+status_t Camera::storeMetaDataInBuffers(bool enabled)
+{
+ LOGV("storeMetaDataInBuffers: %s",
+ enabled? "true": "false");
sp <ICamera> c = mCamera;
if (c == 0) return NO_INIT;
- return c->startPreview();
+ return c->storeMetaDataInBuffers(enabled);
}
// start recording mode, must call setPreviewDisplay first
@@ -359,6 +372,9 @@ void Camera::dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<
}
if (listener != NULL) {
listener->postDataTimestamp(timestamp, msgType, dataPtr);
+ } else {
+ LOGW("No listener was set. Drop a recording frame.");
+ releaseRecordingFrame(dataPtr);
}
}
@@ -375,4 +391,3 @@ void Camera::DeathNotifier::binderDied(const wp<IBinder>& who) {
}
}; // namespace android
-