mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-10 15:54:39 +08:00
5377d91f3e
This is the restructuredText (reST) migration of the ``media`` DocBook-XML set from the linux_tv project. Signed-off-by: Markus Heiser <markus.heiser@darmarIT.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
61 lines
3.0 KiB
ReStructuredText
61 lines
3.0 KiB
ReStructuredText
.. -*- coding: utf-8; mode: rst -*-
|
|
|
|
**********************
|
|
Standard Image Formats
|
|
**********************
|
|
|
|
In order to exchange images between drivers and applications, it is
|
|
necessary to have standard image data formats which both sides will
|
|
interpret the same way. V4L2 includes several such formats, and this
|
|
section is intended to be an unambiguous specification of the standard
|
|
image data formats in V4L2.
|
|
|
|
V4L2 drivers are not limited to these formats, however. Driver-specific
|
|
formats are possible. In that case the application may depend on a codec
|
|
to convert images to one of the standard formats when needed. But the
|
|
data can still be stored and retrieved in the proprietary format. For
|
|
example, a device may support a proprietary compressed format.
|
|
Applications can still capture and save the data in the compressed
|
|
format, saving much disk space, and later use a codec to convert the
|
|
images to the X Windows screen format when the video is to be displayed.
|
|
|
|
Even so, ultimately, some standard formats are needed, so the V4L2
|
|
specification would not be complete without well-defined standard
|
|
formats.
|
|
|
|
The V4L2 standard formats are mainly uncompressed formats. The pixels
|
|
are always arranged in memory from left to right, and from top to
|
|
bottom. The first byte of data in the image buffer is always for the
|
|
leftmost pixel of the topmost row. Following that is the pixel
|
|
immediately to its right, and so on until the end of the top row of
|
|
pixels. Following the rightmost pixel of the row there may be zero or
|
|
more bytes of padding to guarantee that each row of pixel data has a
|
|
certain alignment. Following the pad bytes, if any, is data for the
|
|
leftmost pixel of the second row from the top, and so on. The last row
|
|
has just as many pad bytes after it as the other rows.
|
|
|
|
In V4L2 each format has an identifier which looks like ``PIX_FMT_XXX``,
|
|
defined in the :ref:`videodev2.h <videodev>` header file. These
|
|
identifiers represent
|
|
:ref:`four character (FourCC) codes <v4l2-fourcc>` which are also
|
|
listed below, however they are not the same as those used in the Windows
|
|
world.
|
|
|
|
For some formats, data is stored in separate, discontiguous memory
|
|
buffers. Those formats are identified by a separate set of FourCC codes
|
|
and are referred to as "multi-planar formats". For example, a YUV422
|
|
frame is normally stored in one memory buffer, but it can also be placed
|
|
in two or three separate buffers, with Y component in one buffer and
|
|
CbCr components in another in the 2-planar version or with each
|
|
component in its own buffer in the 3-planar case. Those sub-buffers are
|
|
referred to as "planes".
|
|
|
|
|
|
.. ------------------------------------------------------------------------------
|
|
.. This file was automatically converted from DocBook-XML with the dbxml
|
|
.. library (https://github.com/return42/sphkerneldoc). The origin XML comes
|
|
.. from the linux kernel, refer to:
|
|
..
|
|
.. * https://github.com/torvalds/linux/tree/master/Documentation/DocBook
|
|
.. ------------------------------------------------------------------------------
|