v4l2convert can't import padded DMA buffers
@pH5
Submitted by Philipp Zabel Link to original bug (#796986)
Description
gst_v4l2_object_set_format already handles VIDIOC_S_FMT returning larger than requested buffers, and sets GstVideoMeta appropriately for the added padding.
This happens for example for v4l2videodec, which can produce buffers padded to macroblock alignment.
Currently such padded DMA buffers can't be imported info v4l2convert, as the OUTPUT queue format is set to the visible size, which causes VIDIOC_QBUF to fail with the incompatible larger DMA buffers.
A gst_v4l2_object_set_format variant is needed that gets passed the padding information obtained from GstVideoMeta, to actually request a compatible format at the importing OUTPUT queue. I'm unsure whether the parameter added to this _set_format variant should be GstVideoMeta directly, a derived GstVideoInfo, or even GstVideoAlignment.
Setting a padded queue format, and then setting the processed rectangle via the crop selection would allow v4l2convert to handle imported DMA buffers that are larger in either width or height than the negotiated visible size.