cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dev-mem2mem.rst (1903B)


      1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
      2
      3.. _mem2mem:
      4
      5********************************
      6Video Memory-To-Memory Interface
      7********************************
      8
      9A V4L2 memory-to-memory device can compress, decompress, transform, or
     10otherwise convert video data from one format into another format, in memory.
     11Such memory-to-memory devices set the ``V4L2_CAP_VIDEO_M2M`` or
     12``V4L2_CAP_VIDEO_M2M_MPLANE`` capability. Examples of memory-to-memory
     13devices are codecs, scalers, deinterlacers or format converters (i.e.
     14converting from YUV to RGB).
     15
     16A memory-to-memory video node acts just like a normal video node, but it
     17supports both output (sending frames from memory to the hardware)
     18and capture (receiving the processed frames from the hardware into
     19memory) stream I/O. An application will have to setup the stream I/O for
     20both sides and finally call :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>`
     21for both capture and output to start the hardware.
     22
     23Memory-to-memory devices function as a shared resource: you can
     24open the video node multiple times, each application setting up their
     25own properties that are local to the file handle, and each can use
     26it independently from the others. The driver will arbitrate access to
     27the hardware and reprogram it whenever another file handler gets access.
     28This is different from the usual video node behavior where the video
     29properties are global to the device (i.e. changing something through one
     30file handle is visible through another file handle).
     31
     32One of the most common memory-to-memory device is the codec. Codecs
     33are more complicated than most and require additional setup for
     34their codec parameters. This is done through codec controls.
     35See :ref:`codec-controls`. More details on how to use codec memory-to-memory
     36devices are given in the following sections.
     37
     38.. toctree::
     39    :maxdepth: 1
     40
     41    dev-decoder
     42    dev-encoder
     43    dev-stateless-decoder