V4L2 on Steroids The Request API - LinuxTV.org

44
V4L2 on Steroids The Request API Embedded Linux Conference 2016 San Diego Laurent Pinchart [email protected]

Transcript of V4L2 on Steroids The Request API - LinuxTV.org

Page 1: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 on SteroidsThe Request API

Embedded Linux Conference 2016San Diego

Laurent [email protected]

Page 2: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 On Steroids – The Request API

Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext

Page 3: V4L2 on Steroids The Request API - LinuxTV.org

V4L2

/dev/video*

UserspaceApplication

V4L2Driver

Page 4: V4L2 on Steroids The Request API - LinuxTV.org

V4L2

Configure Formats

Set Controls

Allocate Buffers

175 Standard ControlsMany Custom Controls

Format, Crop, Compose 3 Memory ModelsDMA BUF

Page 5: V4L2 on Steroids The Request API - LinuxTV.org

V4L2

Start Video Stream

Queue / Dequeue

Stop Video Stream

Blocking & Non-BlockingEvent Notifications

Page 6: V4L2 on Steroids The Request API - LinuxTV.org

V4L2

UserspaceApplication

MPEG

V4L2Driver

YUV

Page 7: V4L2 on Steroids The Request API - LinuxTV.org

V4L2

YUV

MPEG

Page 8: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 + Sub-devices

UserspaceApplication

MPEG

BridgeDriver

YUV

DecoderDriver

Page 9: V4L2 on Steroids The Request API - LinuxTV.org

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

Page 10: V4L2 on Steroids The Request API - LinuxTV.org

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, ...

Page 11: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 + Sub-devices

UserspaceApplication

BridgeDriver

DecoderDriver

/dev/video* /dev/v4l-subdev*

Page 12: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 + Sub-devices

Configure Formats

Set Controls

( )n

Page 13: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 On Steroids – The Request API

Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext

Page 14: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 + Sub-devices + Media Controller

UserspaceApplication

BridgeDriver

DecoderDriver

/dev/video* /dev/v4l-subdev*/dev/media*

MediaDriver

Page 15: V4L2 on Steroids The Request API - LinuxTV.org

Device Model

Mediaentity

0

1

2

Mediaentity

0

Mediaentity

0

Mediaentity

0 1

Page 16: V4L2 on Steroids The Request API - LinuxTV.org

Media Device

Page 17: V4L2 on Steroids The Request API - LinuxTV.org

Media Device

Page 18: V4L2 on Steroids The Request API - LinuxTV.org

Media Device

Page 19: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 On Steroids – The Request API

Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext

Page 20: V4L2 on Steroids The Request API - LinuxTV.org

Problems

1 2 3 4

Page 21: V4L2 on Steroids The Request API - LinuxTV.org

Problems

UserspaceApplication

SubdevDriver

SubdevDriver

SubdevDriver

SubdevDriver

Page 22: V4L2 on Steroids The Request API - LinuxTV.org

Problems

( )∞

Page 23: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 On Steroids – The Request API

Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext

Page 24: V4L2 on Steroids The Request API - LinuxTV.org

Requests

Request

Page 25: V4L2 on Steroids The Request API - LinuxTV.org

Requests

S_

EX

T_

CT

RL

S

1 2 3Q

BU

F

CM

D_

RE

Q(Q

UE

UE

)

Page 26: V4L2 on Steroids The Request API - LinuxTV.org

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

Page 27: V4L2 on Steroids The Request API - LinuxTV.org

Requests

Request

Page 28: V4L2 on Steroids The Request API - LinuxTV.org

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

Page 29: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 On Steroids – The Request API

Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext

Page 30: V4L2 on Steroids The Request API - LinuxTV.org

Requests Lifetime Management

FH

REQ REQ

QFH

REQ

Q

ALLOC DELETEQUEUE

REQ

Complete

Page 31: V4L2 on Steroids The Request API - LinuxTV.org

Formats as Controls

[ width, height ]= + [ left, right, top, bottom ]

Page 32: V4L2 on Steroids The Request API - LinuxTV.org

Entity Request Data

MediaEntity

0

1

2

MediaEntity

0

R

R

Page 33: V4L2 on Steroids The Request API - LinuxTV.org

Entity Request Data

V4L2Subdev

0

1

2

VideoDevice

0

R

R

Page 34: V4L2 on Steroids The Request API - LinuxTV.org

V4L2 On Steroids – The Request API

Video 4 Linux 2Media ControllerProblemsThe Request APIImplementationNext

Page 35: V4L2 on Steroids The Request API - LinuxTV.org

Entity State

MediaEntity

0

1

2

MediaEntity

0

R

R

Page 36: V4L2 on Steroids The Request API - LinuxTV.org

Entity State

Page 37: V4L2 on Steroids The Request API - LinuxTV.org

Requests Sequence

REQ REQ REQ REQ

Page 38: V4L2 on Steroids The Request API - LinuxTV.org

Requests API

RE

QU

ES

T

Page 39: V4L2 on Steroids The Request API - LinuxTV.org

Meta-data

Page 40: V4L2 on Steroids The Request API - LinuxTV.org

? !

Page 41: V4L2 on Steroids The Request API - LinuxTV.org

• 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

Page 42: V4L2 on Steroids The Request API - LinuxTV.org

[email protected]

[email protected]

Contact

Page 43: V4L2 on Steroids The Request API - LinuxTV.org

? !

Page 44: V4L2 on Steroids The Request API - LinuxTV.org

thx.