Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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