Commit Graph

50 Commits

Author SHA1 Message Date
mglocker
47544e7521 Add control for backlight compensation (V4L2_CID_BACKLIGHT_COMPENSATION).
From Laurence Tratt <laurie (at) tratt (dot) net>
2020-09-07 10:35:22 +00:00
mglocker
c281dda5e4 Be consistent with control value output; ':' -> '='.
From Laurence Tratt <laurie (at) tratt (dot) net>
2020-08-29 13:45:30 +00:00
mglocker
79163eedae Allow auto controls to be set back to auto mode explicitly.
From Laurence Tratt <laurie (at) tratt (dot) net>
2020-08-23 10:49:34 +00:00
mglocker
e1abe9d332 Allow the combination of '-dc' options, reset and display control values.
Reported by Laurence Tratt.
2020-08-11 05:35:17 +00:00
mglocker
0cbeaf0514 Remove braces for single line control statement. 2020-08-09 06:51:04 +00:00
mglocker
b1d26652c3 If a control supports auto mode and this is active, print 'auto' with -c
instead of printing the last set numeric value.

Initial diff from Laurence Tratt with some enhancements added.
2020-08-09 06:41:51 +00:00
mglocker
044da0a592 Don't compare a pointer to a null character constant but to NULL.
With best regards from clang 10.
2020-08-05 11:34:00 +00:00
mglocker
4fa22cfd66 Add the ability to set and display video control values directly on the
CLI.

Initial diff from Laurence Tratt with some enhancements/changes added.

ok mpi@
2020-08-05 10:49:47 +00:00
mglocker
861ff31951 Add white balance temperature control through 'w/W' keys.
From Laurence Tratt.

ok matthieu@
2020-07-17 07:51:23 +00:00
feinerer
b0c69ca889 Initialize v4l2_requestbuffers for better libv4l compatibility
The VIDIOC_REQBUFS ioctl requires a v4l2_requestbuffers struct with the members
count, type, and memory. In the past only count was set as the uvideo(4) kernel
driver, via uvideo_reqbufs(), is ignoring both struct members type and memory
(pointed out by mpi@).

However, using video(1) with libv4l
(LD_PRELOAD=/usr/local/lib/v4l2convert.so video)
yields "mmap: Invalid argument" as libv4l inspects the type and memory
struct members and fails if memory != V4L2_MEMORY_MMAP.

Full initialization fixes libv4l usage which allows us to view video encodings
not directly supported by video(1), e.g., MJPEG, as libv4l can convert
encodings on the fly.

OK mglocker@
2020-07-01 06:45:24 +00:00
mglocker
1d6efe8e23 Tested a Logitech Webcam C930e which has 17 frame sizes but video(1) only
supports 16 today.  Bump the array to 32 which makes 1920x1080 work on this
device as well.

OK deraadt
2019-11-06 05:46:51 +00:00
rapha
3634da3d70 Add support for yv12 encoding to video(1).
Frame data is converted to yv12 if Xv(3) does not support yuy2 and uyvy.

OK mpi@, landry@
2019-02-25 12:34:35 +00:00
landry
ac84202cf8 Pledge video(1):
* video -q needs 'stdio rpath wpath video' (needs O_RDWR on the device)
* video -i needs 'stdio rpath' (rpath for X11 error/locale access)
* other modes (ie display frames via X11, or output frames to file with
 -o/-O) need 'stdio rpath video' since we open output file/video device
before calling pledge(2).

with help from semarie@, nits from matthieu@
ok deraadt@
2019-01-22 20:02:40 +00:00
landry
b0c17c65a4 Rename err to errs to avoid shadowing potential err() usage, and fix two
typos while here.

ok semarie@ matthieu@
2019-01-04 17:45:00 +00:00
cheloha
26b9521ab8 Don't use optarg as format string.
ok millert@
2018-04-09 18:16:44 +00:00
cheloha
c37ef19e61 Measure statistics against UPTIME clock.
So that your statistics remain correct if the system wall clock is
changed during playback.

Use CLOCK_UPTIME instead of CLOCK_MONOTONIC so that statistics remain
correct across suspend/resume.

Testing by tobias@, sthen@,
and Benjamin Baier <programmer AT netzbasis DOT de>.

ok sthen@
2018-04-09 15:48:14 +00:00
czarkoff
516257834c Preserve aspect ratio of camera image in Xv output.
OK jca@
2016-11-26 11:49:15 +00:00
czarkoff
7b0a63b485 Fix X11 property retrieval code
Just stop when reaching the end of property list instead of reading
forever past its end.

Issue was introduced in my previous commit and reported by deraadt@
2016-11-08 13:22:55 +00:00
czarkoff
b679f961ab add NetWM-compliant fullscreen support
OK jung@
2016-10-21 09:48:48 +00:00
jca
cdd4bf21cb Make video -i work ootb.
video(1) uses mmap and ioctls by default, those ioctls only work on
video(4) devices.  If -i is passed, use read(2) instead of the mmap(2)
routines, instead of requiring the user to pass also pass the -g flag.
2016-09-16 20:29:03 +00:00
mglocker
13dfb063f0 Comparing maximum frame buffer size after VIDIOC_DQBUF ioctl against
'buf.bytesused' instead of 'buf.length' makes more sense.

From Patrick Keshish
2016-06-06 19:31:22 +00:00
mglocker
58b259de1a To match the encoding type, compare against 'pixelformat' instead of
'description' which could contain any value.  Fixes VIDIOC_ENUM_FMT ioctl
for utvfu(4).

Spotted by Patrick Keshish.

ok mpi
2016-06-06 11:55:38 +00:00
mglocker
75f41efb37 Add 'q' option to just display the device properties and quit.
Tested and ok czarkoff
2016-06-04 07:44:32 +00:00
tb
9df5e43bd2 mmap(2) failure is indicated by MAP_FAILED, not NULL.
ok mglocker
2016-06-02 08:53:32 +00:00
mglocker
9d46737716 Just try to unmap a buffer when something has been mapped before.
ok semarie tb
2016-06-02 07:47:25 +00:00
tb
7d6f19381b Guard against using tp_start uninitialized in case no frame was
grabbed in verbose mode.

ok mglocker
2016-05-31 08:45:14 +00:00
mglocker
b1a7299baa Add mmap(2) support for frame grabbing and make it default over read(2).
The introduced '-g' option still allows to fallback to read(2).

With input from tb, jmc, and Patrick Keshishian.

ok tb
2016-05-31 06:47:12 +00:00
schwarze
87e21f736d Escape "Rv" when passed as an argument to a macro in order to avoid
confusion whether this is supposed to be a call to the .Rv macro.
Found by a warning issued by the the groff_mdoc(7) macros.
2014-11-30 01:40:26 +00:00
brad
fef33097b9 Now that gcc2 is gone revert the removal of anonymous unions.
"I think this is the right thing to do" miod@
"Fine with me." sthen@
2014-10-23 07:36:06 +00:00
matthieu
3e0a91b35c Typo in warn() argument. Reported by Artturi Alm. Thanks. 2012-08-14 12:09:33 +00:00
matthieu
484812f429 Typo. From Pappe Kaugummi via jmc@. 2012-08-05 20:59:03 +00:00
naddy
2e88a2b0e8 switch to installing source manuals:
* cope with new bsd.man.mk
* update imake configuration

ports use of imake remains unchanged
2011-06-23 22:48:59 +00:00
jakemsr
95e3242529 add the -R option to usage()
spotted by sobrado@
2011-04-11 17:23:18 +00:00
jakemsr
53483e36a8 * use VIDIOC_ENUM_FRAMEINTERVALS to get the supported frame intervals
and display the frame rates if at least on -v is used.
* set/get the video(4) device's frame rate using VIDIOC_{S,G}_PARM.
* add new option -R which dsables frame rate adjustment.  only really
useful for video(4) devices, to see the difference between the frame
rate the device generates and what it says it's configured for ...
many devices don't generate the rate they are configured if they
aren't getting enough light ...
* poll(2) input with INFTIM instead of 0 timeout, and handle the poll(2)
call being interrupted by the frame timer.
* only use usleep(3) to wait for frames if the input is a file, and
in that case, sleep for a full frame interval or until interrupted
by the frame timer.
* update the manual to describe the new -R option, that -r now sets
video(4) frame rate, and that at least one -v will display supported
properties of the hardware.
2011-04-11 02:58:49 +00:00
sobrado
056292656a lexicographically sort keys.
ok jakemsr@, jmc@
2011-03-18 20:08:58 +00:00
matthieu
7ae39052df xcb is no longer optional. 2011-03-08 20:48:59 +00:00
matthieu
66473b7fbe Explicitely link libxcb when needed for static arches. 2010-11-27 14:25:47 +00:00
jakemsr
335814b337 typo spotted by espie 2010-10-26 16:04:13 +00:00
jakemsr
66fbac58e1 typos. "ouput" typos spotted by Jan Stary. 2010-10-15 14:24:23 +00:00
jakemsr
622e7bac0c oops. start with an undefined encoding instead of yuy2. lets the code
figure out what encoding to use, based on what the hardware supports.
still uses yuy2 by default if the hardware supports it.
2010-10-15 14:21:20 +00:00
jakemsr
29306fc0e4 declare the global vars as static to not conflict with symbols from
libraries
2010-10-15 09:27:26 +00:00
schwarze
be7005d8cf s/\.Xx/.Xr/ such that "Xv(3)" doesn't get lost;
found by mandoc -Tlint
2010-09-26 23:58:18 +00:00
jakemsr
52f69c164d support for gamma and sharpness/acutance controls.
also from Martin Pieuchot, thanks!
2010-09-26 23:47:17 +00:00
jakemsr
6704c2a7ac list all libraries needed and in the correct order so this builds
on static archs
from todd@
2010-09-25 02:58:00 +00:00
jakemsr
02e1414c42 no more anonymous unions in video(4) 2010-09-13 01:35:50 +00:00
jakemsr
bdc0c150f3 $OpenBSD$ and compare width to width, not width to height 2010-07-26 23:02:06 +00:00
sobrado
9e6242225e sort options as usual in our operating system; `usage:' is lower case;
improve usage()'s output; better indentation in usage() function.

ok jakemsr@
2010-07-26 08:09:33 +00:00
jakemsr
63de478659 do not add the same size twice, and do not fall of the end of
the frame sizes array.
reported/tested mglocker
2010-07-24 22:09:08 +00:00
ckuethe
e8d40eb136 allow "make build" to work, ok matthieu@ 2010-07-23 19:46:00 +00:00
jakemsr
3838c3aada import video(1), an application for recording and/or displaying
images from a video(4) device
ok matthieu, todd; prodding from deraadt
2010-07-23 11:33:52 +00:00