V4L Regression (Was: Linux 2.6.22-rc1)

Robert Fitzsimons
2007-05-14T08:13:48Z

Existing v4l applications are failing with the latest release
candidate.

This is xawtv-3.95.dfsg.1, running on Linux/i686 (2.6.22-rc1)
xinerama 0: 1280x1024+0+0
/dev/video0 [v4l2]: ioctl VIDIOC_G_FBUF: Invalid argument
v4l-conf had some trouble, trying to continue anyway
ioctl: VIDIOC_G_FBUF(capability=0x0 [];flags=0x0 [];base=(nil);fmt.width=0;fmt.h
eight=0;fmt.pixelformat=0x00000000 [....];fmt.field=ANY;fmt.bytesperline=0;fmt.s
izeimage=0;fmt.colorspace=unknown;fmt.priv=0): Invalid argument
ioctl: VIDIOC_TRY_FMT(type=VIDEO_OVERLAY;fmt.win.w.left=3;fmt.win.w.top=701;fmt.
win.w.width=384;fmt.win.w.height=288;fmt.win.field=ANY;fmt.win.chromakey=0;fmt.w
in.clips=(nil);fmt.win.clipcount=0;fmt.win.bitmap=(nil)): Invalid argument
ioctl: VIDIOC_S_FMT(type=VIDEO_OVERLAY;fmt.win.w.left=3;fmt.win.w.top=701;fmt.wi
n.w.width=384;fmt.win.w.height=288;fmt.win.field=ANY;fmt.win.chromakey=0;fmt.win
.clips=(nil);fmt.win.clipcount=0;fmt.win.bitmap=(nil)): Invalid argument

After bisecting I tracked the problem down to this commit:

206ebaf32795cf1582b1e2ff2ec6a560c9e986b8
V4L/DVB (5272): Add V4L2_CAP_VIDEO_OUTPUT_POS capability

Add V4L2_CAP_VIDEO_OUTPUT_POS capability and x, y position coordinates
to struct v4l2_pix_format.
This is needed to support positioning the MPEG/YUV output of the cx23415.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

This commit changes the ABI by adding two new fields to the existing
struct v4l2_pix_format which is used by the existing VIDIOC_G_FBUF
ioctl. v4l applications compiled against a previous version of the
kernel will fail in the generic ioctl code due to the size mismatch of
the arguments.

Commenting out the two new fields and recompiling allows the exists
application to work correctly.

Possibly the commit should be reverted or reworked to not change the
ABI?

Robert