Mauro Carvalho Chehab | 8e080c2 | 2009-09-13 22:16:04 -0300 | [diff] [blame] | 1 | <title>Codec Interface</title> |
| 2 | |
Mauro Carvalho Chehab | 8e080c2 | 2009-09-13 22:16:04 -0300 | [diff] [blame] | 3 | <para>A V4L2 codec can compress, decompress, transform, or otherwise |
Hans Verkuil | 6e7df1c | 2013-05-07 08:06:11 -0300 | [diff] [blame] | 4 | convert video data from one format into another format, in memory. Typically |
| 5 | such devices are memory-to-memory devices (i.e. devices with the |
| 6 | <constant>V4L2_CAP_VIDEO_M2M</constant> or <constant>V4L2_CAP_VIDEO_M2M_MPLANE</constant> |
| 7 | capability set). |
| 8 | </para> |
Mauro Carvalho Chehab | 8e080c2 | 2009-09-13 22:16:04 -0300 | [diff] [blame] | 9 | |
Hans Verkuil | 6e7df1c | 2013-05-07 08:06:11 -0300 | [diff] [blame] | 10 | <para>A memory-to-memory video node acts just like a normal video node, but it |
| 11 | supports both output (sending frames from memory to the codec hardware) and |
| 12 | capture (receiving the processed frames from the codec hardware into memory) |
| 13 | stream I/O. An application will have to setup the stream |
| 14 | I/O for both sides and finally call &VIDIOC-STREAMON; for both capture and output |
| 15 | to start the codec.</para> |
| 16 | |
| 17 | <para>Video compression codecs use the MPEG controls to setup their codec parameters |
| 18 | (note that the MPEG controls actually support many more codecs than just MPEG). |
| 19 | See <xref linkend="mpeg-controls"></xref>.</para> |
| 20 | |
| 21 | <para>Memory-to-memory devices can often be used as a shared resource: you can |
| 22 | open the video node multiple times, each application setting up their own codec properties |
| 23 | that are local to the file handle, and each can use it independently from the others. |
| 24 | The driver will arbitrate access to the codec and reprogram it whenever another file |
| 25 | handler gets access. This is different from the usual video node behavior where the video properties |
| 26 | are global to the device (i.e. changing something through one file handle is visible |
| 27 | through another file handle).</para> |