Merge remote-tracking branch 'regmap/for-next'
[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
b6b6e678
MCC
24.. note::
25
26 The MPEG controls actually support many more codecs than
706f8a99 27 just MPEG. See :ref:`mpeg-controls`.
5377d91f
MH
28
29Memory-to-memory devices can often be used as a shared resource: you can
30open the video node multiple times, each application setting up their
31own codec properties that are local to the file handle, and each can use
32it independently from the others. The driver will arbitrate access to
33the codec and reprogram it whenever another file handler gets access.
34This is different from the usual video node behavior where the video
35properties are global to the device (i.e. changing something through one
36file handle is visible through another file handle).
This page took 0.064033 seconds and 5 git commands to generate.