Skip to content

Pfc 2026#330

Draft
davidplowman wants to merge 8 commits intomainfrom
pfc_2026
Draft

Pfc 2026#330
davidplowman wants to merge 8 commits intomainfrom
pfc_2026

Conversation

@davidplowman
Copy link
Collaborator

The 2026 version of PFC. Built on top of the Camera::queueControls mechanism, and using vendor controls to return synchronisation information.

Obviously just for interest at this point... DO NOT MERGE!

Add `Camera::queueControls()` whose purpose is to apply controls as
soon as possible, without going through `Request::controls()`.

A new virtual function `PipelineHandler::queueControlsDevice()` is
provided for pipeline handler to implement fast-tracked application of
controls. If the pipeline handler does not implement that
functionality, or it fails, then a fallback mechanism is used. The
controls will be saved for later, and they will be merged into the
control list of the next available request sent to the pipeline
handler (`Camera::Private::waitingRequests_`).

This patch is derived directly from Barnabas's previous verion that
implemented the same idea but with a single ControlList, rather than
allowing multiple ControlLists to be queued up for consecutive
frames.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Python Camera.queue_controls calls Camera::queueControls.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
The request being processed is popped of the queue immediately and
held in currentRequest_. There is no longer a "live" request at the
head of the requestQueue_.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Allows control lists to be queued up independently of requests.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
The ControlId identifies the list of controls that have been applied
to the images in this request for the first time. The controls must
have been submitted to the camera system using Camera::queueControls.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
This forms part of Raspberry Pi's implementation of "per frame
control".

Control lists that are queued to the pipeline handler through
Camera::queueControls are assigned a sequence number and get applied
to the next possible request. They are tracked through the pipeline
using "delayed contexts". Finally, the control list sequence number
that is applied to the request is reported back through the
"ControlId" metadata.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
The correct values are 2, not 3.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
@davidplowman davidplowman marked this pull request as draft March 20, 2026 07:14
@davidplowman
Copy link
Collaborator Author

@naushir I think this is all working on Pi 4s and 5s now. You might want to check out the PH changes, and also the update to delayed controls (all taken from the previous 2025 version).

@naushir
Copy link
Collaborator

naushir commented Mar 20, 2026

Was the delayed controls change present in the 2025 tree?

@davidplowman
Copy link
Collaborator Author

Was the delayed controls change present in the 2025 tree?

Yes, it was!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants