One of the goals is, to have the correct converter for the raw data, and the package like YUV2RGB is such a converter. I had working with a camera delivery raw data in a Bayer Format. With the help from this forum and the german forum, it was possible to handle the data coming from the camera ( a model from
https://www.theimagingsource.com/ ).
The working of controls depends on the capabilities of the camera. And this can be very very different from camera and used mode in the camera. The only way is to query the camera itself and then you will some parameters are not changeable or will be overwritten by the camera itself. And it can be funny, eg. you fix the framerate, the camera decide to change other parameters to fullfill the framerate, and if you change one of these parameters, the camera decide to change the framerate yet :-) If you dive deeper in the camera you see why this happens - the camera is in a semi auto mode. If you want to control all, you must find how you can switch the camera in a complete manual mode - but then you have to control all and deliver the correct parameters.
But cheap usb cameras have often only a small set of parameters. For control what is going on with the camera, the demo/viewer inside of the v4l2 package is helpful, because it shows the controlelemnts depending on the capabilities of the camera, you can test the different modes and raw data formats of the camera. One of the best tools if you work often with (usb) cameras