How to tell libv4l2 which src_fmt should be prefered?
Dear maintainer and user,
Is there a way to tell libv4l2 which native source format it should prefer to convert from? For example my uvcvideo webcam supports natively YUYV and MJPG (see output below) and when I request V4L2_PIX_FMT_RGB24 I see in the logs:
...VIDIOC_S_FMT app requesting: RGB3VIDIOC_S_FMT converting from: YUYV
request == VIDIOC_S_FMT
pixelformat: RGB3 640x480
field: 1 bytesperline: 1920 imagesize921600
colorspace: 8, priv: 0
...
So it picks up YUYV as source format. I had a look at v4lconvert_try_format but can see no way how to do this.
Regards, Andy
$ v4l2-ctl --list-formats ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'YUYV' Name : YUV 4:2:2 (YUYV)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
$ v4l2-ctl -w -D Driver Info (using libv4l2): Driver name : uvcvideo Card type : UVC Camera (046d:0825) Bus info : usb-0000:00:16.2-2 Driver version: 3.2.51 Capabilities : 0x05000001 Video Capture Read/Write Streaming
Hi,
Quoted 7 lines · Andreas Weber
Is there a way to tell libv4l2 which native source format it should prefer to convert from? For example my uvcvideo webcam supports natively YUYV and MJPG (see output below)
...So it picks up YUYV as source format. I had a look at
v4lconvert_try_formatbut can see no way how to do this.
If I understand the source correctly the table at [1] is the brain of the conversion. MJPEG has a rank of 7, YUYV has a rank of 5. So YUYV is chosen. The function that picks the conversion path is at [2].
Currently there is no way to influence the decision. Why do you want to do this?
Thanks,
Gregor
[1] http://git.linuxtv.org/v4l-utils.git/blob/HEAD:/lib/libv4lconvert/libv4lconvert.c#l75
[2] http://git.linuxtv.org/v4l-utils.git/blob/HEAD:/lib/libv4lconvert/libv4lconvert.c#l379