And expand the size to 18, because the stack array we copied this into is 18
bytes long. This covers us for up to 999 (kernel) v4l devices and that is
definitely not a reason to use the "640k ought to be enough" meme.
Found by - you guessed it - coverity!
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Coverity is unhappy and there's enough unhappiness in this world already, so
let's go for the low-hanging fruit.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
We get this warning:
v4l.c:1154:39: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to remove the addressof? [-Wsizeof-pointer-memaccess]
It's correct enough, but ->cap is already zeroed by the previous memset.
Just remove the bogus one.
Fixes: xorg/driver/xf86-video-v4l#1
Signed-off-by: Adam Jackson <ajax@redhat.com>
If you're not using Linux, this isn't likely to build let alone run. And
if it _does_ build on non-Linux, it's probably because someone went out
of their way to try to make it work.
Signed-off-by: Adam Jackson <ajax@redhat.com>
video width/height size can vary not only as a function of the
video standard but also in function of device capabilities. Due
to that, the code were trying to get those info from the hardware.
However, due to a driver bug, the info is not properly filled when
the video standard is changed.
While I intend to fix this inside the drivers, the current logic
doesn't work with the current stable kernels. So, use an alternative
way of getting this info, just using video standards information.
Let's keep the not working code there, in order to make easy to
return, after fixing the drivers. We'll probably need to check for
driver versions after reenabling the correct (not working) code,
or to use the new VIDIOC ioctl's to enumberate the supported
formats.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The device name and the file descriptors are wrong at the cal for
v4l_check_yuv(). Due to that, the driver were falling back to work
with RGB formats.
While here, add a code to prevent V4L driver to work if no video
adapter provide Xv overlay method.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Instead of providing an useless info that FBUF fails, print an
error indicating what's the Fourcc format that fails.
Also, on debug mode, prints a message indicating the selection of a
given fourcc. This helps to verify if both the video adapter and the
video capture board were set to the same video format.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Fix a small non-compliance issue: if a port attribute is not known,
according with Xv specs, it should return BadMatch, and not BadValue.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
There are several issues at GPA/SPA logic:
- driver tries to limit minimum/maximum values to -1000/1000;
- If yuv_format is available, all GPA/SPA are sent to the
overlay encoder at the video adapter;
- The most used return condition is an error.
Rework the entire logic to fix the above bugs and clean the
code.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
It is hard to work on a file that has multiple coding styles. As
we're rewriting the entire file, the better is to remove trailing
spaces and fix all the alignment issues, using 4 spaces for alignment
and not using tab.
No functional changes are made on this patch.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
V4L1 API was dropped on kernel 2.6.38. Even the emulation layer
inside kernel was dropped. While it might still be possible to use
X with libv4l and a LD_PRELOADER setup, the proper way is to port
the driver to use the V4L2 API.
This change brings some improvements to the code, as now all
integer/boolean/menu controls are visible, and all video standards.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Using common defaults will reduce errors and maintenance.
Only the very small or inexistent custom section need periodic maintenance
when the structure of the component changes. Do not edit defaults.
change "foo.h" to <X11/foo.h> for core headers, e.g. X.h, Xpoll.h;
change "foo.h", "extensions/foo.h" and "X11/foo.h" to
<X11/extensions/foo.h> for extension headers, e.g. Xv.h;
change "foo.[ch]" to <X11/Xtrans/foo.[ch]> for Xtrans files.