About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / DocBook / media / v4l / dev-codec.xml




Custom Search

Based on kernel version 3.16. Page generated on 2014-08-06 21:38 EST.

1	  <title>Codec Interface</title>
2	
3	  <para>A V4L2 codec can compress, decompress, transform, or otherwise
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>
9	
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>
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.