lightnvm: NVM should depend on HAS_DMA
[deliverable/linux.git] / Documentation / media / uapi / v4l / dev-codec.rst
CommitLineData
5377d91f
MH
1.. -*- coding: utf-8; mode: rst -*-
2
3.. _codec:
4
5***************
6Codec Interface
7***************
8
9A V4L2 codec can compress, decompress, transform, or otherwise convert
10video data from one format into another format, in memory. Typically
11such devices are memory-to-memory devices (i.e. devices with the
12``V4L2_CAP_VIDEO_M2M`` or ``V4L2_CAP_VIDEO_M2M_MPLANE`` capability set).
13
14A memory-to-memory video node acts just like a normal video node, but it
15supports both output (sending frames from memory to the codec hardware)
16and capture (receiving the processed frames from the codec hardware into
17memory) stream I/O. An application will have to setup the stream I/O for
863bd721 18both sides and finally call :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>`
5377d91f
MH
19for both capture and output to start the codec.
20
21Video compression codecs use the MPEG controls to setup their codec
706f8a99
MCC
22parameters
23
24.. note:: The MPEG controls actually support many more codecs than
25 just MPEG. See :ref:`mpeg-controls`.
5377d91f
MH
26
27Memory-to-memory devices can often be used as a shared resource: you can
28open the video node multiple times, each application setting up their
29own codec properties that are local to the file handle, and each can use
30it independently from the others. The driver will arbitrate access to
31the codec and reprogram it whenever another file handler gets access.
32This is different from the usual video node behavior where the video
33properties are global to the device (i.e. changing something through one
34file handle is visible through another file handle).
This page took 0.048042 seconds and 5 git commands to generate.