Gnurou / v4l2r

Rust bindings for V4L2
MIT License
21 stars 10 forks source link

Ext ctrls requests #14

Closed andrzejtp closed 1 year ago

andrzejtp commented 1 year ago

Hi,

Here's my proposal of approaching extended controls and requests, which are needed for stateless codecs. In this PR I am focusing on the ioctl-style approach.

First, I add a utility which works around the bindgen bug 753 and I document how to use it to generate up-to-date bindings. When bindgen starts working properly this utility can be removed. Bindings generated from up-to-date kernel headers are essential for stateless codecs - the bindings currently existing in the library simply do not contain the needed components.

Then I add get/set extended controls support. For now colorspace, xferfunc, ycbcrencoding and quantization are supported. FWHT PARAMS ext control is supported while H264 ext controls are provided as dummies. The latter plus all the other ext controls are to be added later, but because it seems it will be a considerable amount of code, let's start small.

Lastly, I add requests support, with request allocation/queueing/reinitialization and polling.

dwlsalmeida commented 1 year ago

A few small comments, but looks good to me overall

andrzejtp commented 1 year ago

I updated the PR, addressing most of the comments from @dwlsalmeida and @Gnurou.

Gnurou commented 1 year ago

I think I'll just merge this PR and address my remaining issues with follow-up comments (I've been working on QUERYCTRL/QUERY_EXT_CTRL support and this will require some moving around to integrate well). Can you see and address my comment about clap? Then I think we should be ok to merge.

Gnurou commented 1 year ago

Thanks, I have pushed these 3 commits after a rebase (merging did not work nicely) - closing this pull request :+1: