xref: /freebsd/share/man/man4/video.4 (revision 9c9428825f4c55e3cb37412c661bb9d385db4c68)
1*9c942882SAbdelkader Boudih.\"
2*9c942882SAbdelkader Boudih.\" Copyright (c) 2026 Abdelkader Boudih <freebsd@seuros.com>
3*9c942882SAbdelkader Boudih.\"
4*9c942882SAbdelkader Boudih.\" SPDX-License-Identifier: BSD-2-Clause
5*9c942882SAbdelkader Boudih.\"
6*9c942882SAbdelkader Boudih.Dd July 28, 2026
7*9c942882SAbdelkader Boudih.Dt VIDEO 4
8*9c942882SAbdelkader Boudih.Os
9*9c942882SAbdelkader Boudih.Sh NAME
10*9c942882SAbdelkader Boudih.Nm video
11*9c942882SAbdelkader Boudih.Nd video capture framework
12*9c942882SAbdelkader Boudih.Sh SYNOPSIS
13*9c942882SAbdelkader Boudih.Cd device video
14*9c942882SAbdelkader Boudih.Pp
15*9c942882SAbdelkader Boudih.In sys/videoio.h
16*9c942882SAbdelkader Boudih.Sh DESCRIPTION
17*9c942882SAbdelkader BoudihThe
18*9c942882SAbdelkader Boudih.Nm
19*9c942882SAbdelkader Boudihframework provides a common interface for video capture devices.
20*9c942882SAbdelkader BoudihIt creates
21*9c942882SAbdelkader Boudih.Pa /dev/video%d
22*9c942882SAbdelkader Boudihdevice nodes and handles buffer management, memory mapping, and
23*9c942882SAbdelkader Boudihioctl dispatch on behalf of hardware drivers.
24*9c942882SAbdelkader Boudih.Pp
25*9c942882SAbdelkader BoudihUserland applications access capture devices through the
26*9c942882SAbdelkader Boudih.Sy Video4Linux2
27*9c942882SAbdelkader Boudih.Pq V4L2
28*9c942882SAbdelkader Boudihioctl interface.
29*9c942882SAbdelkader BoudihThe framework translates V4L2 requests into driver callbacks,
30*9c942882SAbdelkader Boudihso hardware drivers do not implement ioctls directly.
31*9c942882SAbdelkader Boudih.Pp
32*9c942882SAbdelkader BoudihThe following V4L2 ioctls are supported:
33*9c942882SAbdelkader Boudih.Bl -bullet -compact
34*9c942882SAbdelkader Boudih.It
35*9c942882SAbdelkader Boudih.Dv VIDIOC_QUERYCAP
36*9c942882SAbdelkader Boudih.It
37*9c942882SAbdelkader Boudih.Dv VIDIOC_ENUM_FMT ,
38*9c942882SAbdelkader Boudih.Dv VIDIOC_G_FMT ,
39*9c942882SAbdelkader Boudih.Dv VIDIOC_S_FMT ,
40*9c942882SAbdelkader Boudih.Dv VIDIOC_TRY_FMT
41*9c942882SAbdelkader Boudih.It
42*9c942882SAbdelkader Boudih.Dv VIDIOC_ENUM_FRAMESIZES ,
43*9c942882SAbdelkader Boudih.Dv VIDIOC_ENUM_FRAMEINTERVALS
44*9c942882SAbdelkader Boudih.It
45*9c942882SAbdelkader Boudih.Dv VIDIOC_G_PARM ,
46*9c942882SAbdelkader Boudih.Dv VIDIOC_S_PARM
47*9c942882SAbdelkader Boudih.It
48*9c942882SAbdelkader Boudih.Dv VIDIOC_ENUMINPUT ,
49*9c942882SAbdelkader Boudih.Dv VIDIOC_G_INPUT ,
50*9c942882SAbdelkader Boudih.Dv VIDIOC_S_INPUT
51*9c942882SAbdelkader Boudih.It
52*9c942882SAbdelkader Boudih.Dv VIDIOC_QUERYCTRL ,
53*9c942882SAbdelkader Boudih.Dv VIDIOC_G_CTRL ,
54*9c942882SAbdelkader Boudih.Dv VIDIOC_S_CTRL
55*9c942882SAbdelkader Boudih.It
56*9c942882SAbdelkader Boudih.Dv VIDIOC_REQBUFS ,
57*9c942882SAbdelkader Boudih.Dv VIDIOC_QUERYBUF ,
58*9c942882SAbdelkader Boudih.Dv VIDIOC_QBUF ,
59*9c942882SAbdelkader Boudih.Dv VIDIOC_DQBUF
60*9c942882SAbdelkader Boudih.It
61*9c942882SAbdelkader Boudih.Dv VIDIOC_STREAMON ,
62*9c942882SAbdelkader Boudih.Dv VIDIOC_STREAMOFF
63*9c942882SAbdelkader Boudih.El
64*9c942882SAbdelkader Boudih.Pp
65*9c942882SAbdelkader BoudihTwo capture modes are supported:
66*9c942882SAbdelkader Boudih.Bl -tag -width 6n
67*9c942882SAbdelkader Boudih.It Cm read
68*9c942882SAbdelkader BoudihFrames are obtained by calling
69*9c942882SAbdelkader Boudih.Xr read 2
70*9c942882SAbdelkader Boudihon the device node.
71*9c942882SAbdelkader BoudihStreaming starts automatically on the first read.
72*9c942882SAbdelkader Boudih.It Cm mmap
73*9c942882SAbdelkader BoudihBuffers are allocated with
74*9c942882SAbdelkader Boudih.Dv VIDIOC_REQBUFS ,
75*9c942882SAbdelkader Boudihmapped with
76*9c942882SAbdelkader Boudih.Xr mmap 2 ,
77*9c942882SAbdelkader Boudihand cycled with
78*9c942882SAbdelkader Boudih.Dv VIDIOC_QBUF
79*9c942882SAbdelkader Boudihand
80*9c942882SAbdelkader Boudih.Dv VIDIOC_DQBUF .
81*9c942882SAbdelkader BoudihStreaming is started and stopped with
82*9c942882SAbdelkader Boudih.Dv VIDIOC_STREAMON
83*9c942882SAbdelkader Boudihand
84*9c942882SAbdelkader Boudih.Dv VIDIOC_STREAMOFF .
85*9c942882SAbdelkader Boudih.El
86*9c942882SAbdelkader Boudih.Pp
87*9c942882SAbdelkader BoudihUp to 8 buffers may be allocated per device.
88*9c942882SAbdelkader BoudihBuffer memory remains valid until the last mapping is unmapped,
89*9c942882SAbdelkader Boudiheven if the device is closed or detached.
90*9c942882SAbdelkader Boudih.Sh SEE ALSO
91*9c942882SAbdelkader Boudih.Xr mmap 2 ,
92*9c942882SAbdelkader Boudih.Xr read 2 ,
93*9c942882SAbdelkader Boudih.Xr fwcam 4 ,
94*9c942882SAbdelkader Boudih.Xr uvideo 4
95*9c942882SAbdelkader Boudih.Sh HISTORY
96*9c942882SAbdelkader BoudihThe
97*9c942882SAbdelkader Boudih.Nm
98*9c942882SAbdelkader Boudihframework first appeared in
99*9c942882SAbdelkader Boudih.Fx 16.0 .
100*9c942882SAbdelkader Boudih.Sh AUTHORS
101*9c942882SAbdelkader Boudih.An Abdelkader Boudih Aq Mt freebsd@seuros.com
102