Draft
Conversation
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>
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). |
Collaborator
|
Was the delayed controls change present in the 2025 tree? |
Collaborator
Author
Yes, it was! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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!