Correctly process streams
The reference implementation stream validation/setting
was all out of whack, particularly the handling of "reuse"
streams. This CL does away with that, and plugs in the
static_properties/request_tracker validation/tracking of
configured streams.
Implementation specific features, such as gralloc flags,
are moved down into the V4L2Camera class out of the Camera class.
BUG: https://b/33057320, https://b/31044638
TEST: unit tests pass, some previously failing CTS tests are passing
(and no regressions), simple test camera preview app runs.
Change-Id: Ie8568239a1348dac45bf829ef928e500e01fdcda
diff --git a/modules/camera/3_4/v4l2_camera.h b/modules/camera/3_4/v4l2_camera.h
index 3dae649..1db8d40 100644
--- a/modules/camera/3_4/v4l2_camera.h
+++ b/modules/camera/3_4/v4l2_camera.h
@@ -67,17 +67,13 @@
void initDeviceInfo(camera_info_t* info) override;
// Extra initialization of device when opened.
int initDevice() override;
- // Verify stream configuration is device-compatible.
- bool isSupportedStreamSet(default_camera_hal::Stream** streams,
- int count,
- uint32_t mode) override;
- // Set up the device for a stream, and get the maximum number of
- // buffers that stream can handle (max_buffers is an output parameter).
- int setupStream(default_camera_hal::Stream* stream,
- uint32_t* max_buffers) override;
+ // Verify stream configuration dataspaces and rotation values
+ bool validateDataspacesAndRotations(
+ const camera3_stream_configuration_t* stream_config) override;
+ // Set up the streams, including seting usage & max_buffers
+ int setupStreams(camera3_stream_configuration_t* stream_config) override;
// Verify settings are valid for a capture or reprocessing.
- bool isValidRequest(
- const default_camera_hal::CaptureRequest& request) override;
+ bool isValidRequestSettings(const android::CameraMetadata& settings) override;
// Enqueue a request to receive data from the camera.
int enqueueRequest(
std::shared_ptr<default_camera_hal::CaptureRequest> request) override;