diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 80ff248c2a..0d5b5b97eb 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1308,22 +1308,8 @@ void CameraDevice::sendCaptureResults()
 		std::vector<camera3_stream_buffer_t> resultBuffers;
 		resultBuffers.reserve(descriptor->buffers_.size());
 
-		for (auto &buffer : descriptor->buffers_) {
-			camera3_buffer_status status = CAMERA3_BUFFER_STATUS_ERROR;
-
-			if (buffer.status == Camera3RequestDescriptor::Status::Success)
-				status = CAMERA3_BUFFER_STATUS_OK;
-
-			/*
-			 * Pass the buffer fence back to the camera framework as
-			 * a release fence. This instructs the framework to wait
-			 * on the acquire fence in case we haven't done so
-			 * ourselves for any reason.
-			 */
-			resultBuffers.push_back({ buffer.stream->camera3Stream(),
-						  buffer.camera3Buffer, status,
-						  -1, buffer.fence.release() });
-		}
+		for (auto &buffer : descriptor->buffers_)
+			resultBuffers.push_back(buffer.prepareToReturn());
 
 		captureResult.num_output_buffers = resultBuffers.size();
 		captureResult.output_buffers = resultBuffers.data();
diff --git a/src/android/camera_request.cpp b/src/android/camera_request.cpp
index 0d45960d90..feac7a3e19 100644
--- a/src/android/camera_request.cpp
+++ b/src/android/camera_request.cpp
@@ -192,3 +192,23 @@ Camera3RequestDescriptor::StreamBuffer::StreamBuffer(StreamBuffer &&) = default;
 
 Camera3RequestDescriptor::StreamBuffer &
 Camera3RequestDescriptor::StreamBuffer::operator=(Camera3RequestDescriptor::StreamBuffer &&) = default;
+
+camera3_stream_buffer_t Camera3RequestDescriptor::StreamBuffer::prepareToReturn()
+{
+	/*
+	 * Pass the buffer fence back to the camera framework as
+	 * a release fence. This instructs the framework to wait
+	 * on the acquire fence in case we haven't done so
+	 * ourselves for any reason.
+	 */
+
+	return {
+		.stream = stream->camera3Stream(),
+		.buffer = camera3Buffer,
+		.status = status == Camera3RequestDescriptor::Status::Success
+				? CAMERA3_BUFFER_STATUS_OK
+				: CAMERA3_BUFFER_STATUS_ERROR,
+		.acquire_fence = -1,
+		.release_fence = fence.release(),
+	};
+}
diff --git a/src/android/camera_request.h b/src/android/camera_request.h
index 5b479180f0..164b095b28 100644
--- a/src/android/camera_request.h
+++ b/src/android/camera_request.h
@@ -43,6 +43,8 @@ public:
 		StreamBuffer(StreamBuffer &&);
 		StreamBuffer &operator=(StreamBuffer &&);
 
+		[[nodiscard]] camera3_stream_buffer_t prepareToReturn();
+
 		CameraStream *stream;
 		buffer_handle_t *camera3Buffer;
 		std::unique_ptr<HALFrameBuffer> frameBuffer;
