V4L2 on Steroids The Request API - LinuxTV.org
Transcript of V4L2 on Steroids The Request API - LinuxTV.org
V4L2 On Steroids – The Request API
Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext
V4L2
/dev/video*
UserspaceApplication
V4L2Driver
V4L2
Configure Formats
Set Controls
Allocate Buffers
175 Standard ControlsMany Custom Controls
Format, Crop, Compose 3 Memory ModelsDMA BUF
V4L2
Start Video Stream
Queue / Dequeue
Stop Video Stream
Blocking & Non-BlockingEvent Notifications
V4L2
UserspaceApplication
MPEG
V4L2Driver
YUV
V4L2
YUV
MPEG
V4L2 + Sub-devices
UserspaceApplication
MPEG
BridgeDriver
YUV
DecoderDriver
V4L2 + Sub-devices
Configure the decoder scaler
V4L2 call (Set Format)
return
Success ?
Configure thebridge scaler
Failure ?
v4l2_subdev_call(video::s_fmt)
Bridge Driver Decoder Driver
V4L2 + Sub-devices
Configure the decoder scaler
V4L2 call (Set Format)
return
Success ?
Configure thebridge scaler
Failure ?
v4l2_subdev_call(video::s_fmt)
Bridge Driver Decoder Driver
+ Set Control, Start/Stop Streaming, ...
V4L2 + Sub-devices
UserspaceApplication
BridgeDriver
DecoderDriver
/dev/video* /dev/v4l-subdev*
V4L2 + Sub-devices
Configure Formats
Set Controls
( )n
V4L2 On Steroids – The Request API
Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext
V4L2 + Sub-devices + Media Controller
UserspaceApplication
BridgeDriver
DecoderDriver
/dev/video* /dev/v4l-subdev*/dev/media*
MediaDriver
Device Model
Mediaentity
0
1
2
Mediaentity
0
Mediaentity
0
Mediaentity
0 1
Media Device
Media Device
Media Device
V4L2 On Steroids – The Request API
Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext
Problems
1 2 3 4
Problems
UserspaceApplication
SubdevDriver
SubdevDriver
SubdevDriver
SubdevDriver
Problems
( )∞
V4L2 On Steroids – The Request API
Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext
Requests
Request
Requests
S_
EX
T_
CT
RL
S
1 2 3Q
BU
F
CM
D_
RE
Q(Q
UE
UE
)
Requests
S_
EX
T_C
TR
LS
3 4 5
QB
UF
CM
D_R
EQ
(QU
EU
E)
21
CM
D_
RE
Q(B
EG
IN)
S_
FM
T
Requests
Request
Requests
S_
EX
T_
CT
RLS
3 4 5
QB
UF
CM
D_
RE
Q(Q
UE
UE
)
21
CM
D_
RE
Q(A
LLO
C)
S_
FM
T
SE
TU
P_
LINK
6
V4L2 On Steroids – The Request API
Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext
Requests Lifetime Management
FH
REQ REQ
QFH
REQ
Q
ALLOC DELETEQUEUE
REQ
Complete
Formats as Controls
[ width, height ]= + [ left, right, top, bottom ]
Entity Request Data
MediaEntity
0
1
2
MediaEntity
0
R
R
Entity Request Data
V4L2Subdev
0
1
2
VideoDevice
0
R
R
V4L2 On Steroids – The Request API
Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext
Entity State
MediaEntity
0
1
2
MediaEntity
0
R
R
Entity State
Requests Sequence
REQ REQ REQ REQ
Requests API
RE
QU
ES
T
Meta-data
? !
• Request API and proof-of-concept implementation https://lwn.net/Articles/668726/
• Git development branch http://git.linuxtv.org/pinchartl/media.git/log/? h=drm/du/vsp1-kms/request
Resources
? !
thx.