Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ISP 3A camera controls #9

Merged
merged 5 commits into from
Oct 7, 2020
Merged

Conversation

alex-luxonis
Copy link
Contributor

src/host_capture_command.cpp Outdated Show resolved Hide resolved
Address review comments.
@alex-luxonis alex-luxonis requested a review from themarpe October 5, 2020 21:48
std::string cmdfull = CameraControl::createCommandStr(camera_id, command_id, extra_args);
StreamData cmd_data;
cmd_data.packet_number = 0;
cmd_data.data = (void*)cmdfull.c_str();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having the nice structure for the CameraControl, I'd opt for serialization (either memcpying or rather json -> msgpack / bson) and then the device side can use that data in any way desired - which also hides that from host as it doesn't really need to know.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also is extra args actually a "string" or would std::vector<std::uint8_t> be more suitable?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, extra_args is expected to be a string, space separated integers. I was going this way as there is already a camera-command string parser implemented on device side.

At some point we also need to merge the CaptureMetadata functionality with this one. Should we go like there? But need then to create separate functions for each command.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this CaptureMetadata is subset of ISP 3A then do integrate it.

One issue with just having these extra args there is that they are meaningless to users and they must seek description of this.
Maybe in core create another class which actually knows how to deal with this data, which is then exposed to users.

Eg. CameraControl in depthai-shared is only a means of describing data which is transferred between host & device and then in depthai-core create meaningful functions which use CameraControl as a means of sending type-safe commands&data

If you go about integrating CaptureMetadata, it will be an example of the need of having this extra layer IMO

Copy link
Contributor

@Luxonis-Brandon Luxonis-Brandon Oct 6, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks both! Agreed good call to reduce support load by making these self-descriptive/discoverable.

So what I'm thinking is we add these improvements to the roadmap to do after we get subpixel (luxonis/depthai#163), LR-Check-median(luxonis/depthai#219), Extended Disparity(luxonis/depthai#163), bilateral support(luxonis/depthai#215) released (and we're thinking, direct to Gen2).

The why is we are getting increasing pressure to get these out from a variety of customers, and the ISP-controls capability has already served the purposes of the two customers who needed it (in fact they don't need this power, they just needed EV compensation control on grayscale only).

Thoughts?

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.

4 participants