Merge "Camera: add buffer size to Stream@3.4"
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index b868fa6..f149f8a 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -2400,6 +2400,8 @@
Vector<camera3_stream_t*> streams;
streams.setCapacity(config.num_streams);
+ std::vector<uint32_t> outBufSizes(mOutputStreams.size(), 0);
+
if (mInputStream != NULL) {
camera3_stream_t *inputStream;
@@ -2430,6 +2432,12 @@
return INVALID_OPERATION;
}
streams.add(outputStream);
+
+ if (outputStream->format == HAL_PIXEL_FORMAT_BLOB &&
+ outputStream->data_space == HAL_DATASPACE_V0_JFIF) {
+ outBufSizes[i] = static_cast<uint32_t>(
+ getJpegBufferSize(outputStream->width, outputStream->height));
+ }
}
config.streams = streams.editArray();
@@ -2438,7 +2446,7 @@
// max_buffers, usage, priv fields.
const camera_metadata_t *sessionBuffer = sessionParams.getAndLock();
- res = mInterface->configureStreams(sessionBuffer, &config);
+ res = mInterface->configureStreams(sessionBuffer, &config, outBufSizes);
sessionParams.unlock(sessionBuffer);
if (res == BAD_VALUE) {
@@ -3494,7 +3502,7 @@
}
status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t *sessionParams,
- camera3_stream_configuration *config) {
+ camera3_stream_configuration *config, const std::vector<uint32_t>& outputBufferSizes) {
ATRACE_NAME("CameraHal::configureStreams");
if (!valid()) return INVALID_OPERATION;
status_t res = OK;
@@ -3535,6 +3543,7 @@
dst3_2.dataSpace = mapToHidlDataspace(src->data_space);
dst3_2.rotation = mapToStreamRotation((camera3_stream_rotation_t) src->rotation);
dst3_4.v3_2 = dst3_2;
+ dst3_4.bufferSize = outputBufferSizes[i];
if (src->physical_camera_id != nullptr) {
dst3_4.physicalCameraId = src->physical_camera_id;
}
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index bc97510..ccd9d7a 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -282,7 +282,8 @@
status_t constructDefaultRequestSettings(camera3_request_template_t templateId,
/*out*/ camera_metadata_t **requestTemplate);
status_t configureStreams(const camera_metadata_t *sessionParams,
- /*inout*/ camera3_stream_configuration *config);
+ /*inout*/ camera3_stream_configuration *config,
+ const std::vector<uint32_t>& outputBufferSizes);
status_t processCaptureRequest(camera3_capture_request_t *request);
status_t processBatchCaptureRequests(
std::vector<camera3_capture_request_t*>& requests,