summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/Camera2Device.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/camera/libcameraservice/Camera2Device.cpp')
-rw-r--r--services/camera/libcameraservice/Camera2Device.cpp30
1 files changed, 20 insertions, 10 deletions
diff --git a/services/camera/libcameraservice/Camera2Device.cpp b/services/camera/libcameraservice/Camera2Device.cpp
index 8d07eee..54dde80 100644
--- a/services/camera/libcameraservice/Camera2Device.cpp
+++ b/services/camera/libcameraservice/Camera2Device.cpp
@@ -239,9 +239,9 @@ status_t Camera2Device::deleteStream(int id) {
for (StreamList::iterator streamI = mStreams.begin();
streamI != mStreams.end(); streamI++) {
if ((*streamI)->getId() == id) {
- status_t res = (*streamI)->disconnect();
+ status_t res = (*streamI)->release();
if (res != OK) {
- ALOGE("%s: Unable to disconnect stream %d from HAL device: "
+ ALOGE("%s: Unable to release stream %d from HAL device: "
"%s (%d)", __FUNCTION__, id, strerror(-res), res);
return res;
}
@@ -615,7 +615,7 @@ int Camera2Device::MetadataQueue::producer_enqueue(
#endif
Camera2Device::StreamAdapter::StreamAdapter(camera2_device_t *d):
- mState(DISCONNECTED),
+ mState(RELEASED),
mDevice(d),
mId(-1),
mWidth(0), mHeight(0), mFormat(0), mSize(0), mUsage(0),
@@ -633,7 +633,9 @@ Camera2Device::StreamAdapter::StreamAdapter(camera2_device_t *d):
}
Camera2Device::StreamAdapter::~StreamAdapter() {
- disconnect();
+ if (mState != RELEASED) {
+ release();
+ }
}
status_t Camera2Device::StreamAdapter::connectToDevice(
@@ -641,12 +643,15 @@ status_t Camera2Device::StreamAdapter::connectToDevice(
uint32_t width, uint32_t height, int format, size_t size) {
status_t res;
- if (mState != DISCONNECTED) return INVALID_OPERATION;
+ if (mState != RELEASED) return INVALID_OPERATION;
if (consumer == NULL) {
ALOGE("%s: Null consumer passed to stream adapter", __FUNCTION__);
return BAD_VALUE;
}
+ ALOGV("%s: New stream parameters %d x %d, format 0x%x, size %d",
+ __FUNCTION__, width, height, format, size);
+
mConsumerInterface = consumer;
mWidth = width;
mHeight = height;
@@ -668,6 +673,10 @@ status_t Camera2Device::StreamAdapter::connectToDevice(
return res;
}
+ ALOGV("%s: Allocated stream id %d, actual format 0x%x, "
+ "usage 0x%x, producer wants %d buffers", __FUNCTION__,
+ id, formatActual, usage, maxBuffers);
+
mId = id;
mFormat = formatActual;
mUsage = usage;
@@ -737,8 +746,8 @@ status_t Camera2Device::StreamAdapter::connectToDevice(
}
mMaxConsumerBuffers = maxConsumerBuffers;
- ALOGV("%s: Producer wants %d buffers, consumer wants %d", __FUNCTION__,
- mMaxProducerBuffers, mMaxConsumerBuffers);
+ ALOGV("%s: Consumer wants %d buffers", __FUNCTION__,
+ mMaxConsumerBuffers);
mTotalBuffers = mMaxConsumerBuffers + mMaxProducerBuffers;
mActiveBuffers = 0;
@@ -761,7 +770,7 @@ status_t Camera2Device::StreamAdapter::connectToDevice(
res = native_window_dequeue_buffer_and_wait(mConsumerInterface.get(),
&anwBuffers[bufferIdx]);
if (res != OK) {
- ALOGE("%s: Unable to dequeue buffer %d for initial registration for"
+ ALOGE("%s: Unable to dequeue buffer %d for initial registration for "
"stream %d", __FUNCTION__, bufferIdx, mId);
goto cleanUpBuffers;
}
@@ -795,8 +804,9 @@ cleanUpBuffers:
return res;
}
-status_t Camera2Device::StreamAdapter::disconnect() {
+status_t Camera2Device::StreamAdapter::release() {
status_t res;
+ ALOGV("%s: Releasing stream %d", __FUNCTION__, mId);
if (mState >= ALLOCATED) {
res = mDevice->ops->release_stream(mDevice, mId);
if (res != OK) {
@@ -815,7 +825,7 @@ status_t Camera2Device::StreamAdapter::disconnect() {
}
}
mId = -1;
- mState = DISCONNECTED;
+ mState = RELEASED;
return OK;
}