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) .. c:namespace:: V4L
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) .. _VIDIOC_DECODER_CMD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) ************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) ioctl VIDIOC_DECODER_CMD, VIDIOC_TRY_DECODER_CMD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) ************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) Name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) ====
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) VIDIOC_DECODER_CMD - VIDIOC_TRY_DECODER_CMD - Execute an decoder command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) Synopsis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) ========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) .. c:macro:: VIDIOC_DECODER_CMD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) ``int ioctl(int fd, VIDIOC_DECODER_CMD, struct v4l2_decoder_cmd *argp)``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) .. c:macro:: VIDIOC_TRY_DECODER_CMD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) ``int ioctl(int fd, VIDIOC_TRY_DECODER_CMD, struct v4l2_decoder_cmd *argp)``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) Arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) ``fd``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)     File descriptor returned by :c:func:`open()`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) ``argp``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)     pointer to struct :c:type:`v4l2_decoder_cmd`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) These ioctls control an audio/video (usually MPEG-) decoder.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) ``VIDIOC_DECODER_CMD`` sends a command to the decoder,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) ``VIDIOC_TRY_DECODER_CMD`` can be used to try a command without actually
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) executing it. To send a command applications must initialize all fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) of a struct :c:type:`v4l2_decoder_cmd` and call
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) ``VIDIOC_DECODER_CMD`` or ``VIDIOC_TRY_DECODER_CMD`` with a pointer to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) this structure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) The ``cmd`` field must contain the command code. Some commands use the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) ``flags`` field for additional information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) A :c:func:`write()` or :ref:`VIDIOC_STREAMON`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) call sends an implicit START command to the decoder if it has not been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) started yet. Applies to both queues of mem2mem decoders.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) A :c:func:`close()` or :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) call of a streaming file descriptor sends an implicit immediate STOP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) command to the decoder, and all buffered data is discarded. Applies to both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) queues of mem2mem decoders.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) In principle, these ioctls are optional, not all drivers may support them. They were
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) introduced in Linux 3.3. They are, however, mandatory for stateful mem2mem decoders
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) (as further documented in :ref:`decoder`).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) .. tabularcolumns:: |p{1.1cm}|p{2.4cm}|p{1.2cm}|p{1.6cm}|p{10.6cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) .. c:type:: v4l2_decoder_cmd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) .. cssclass:: longtable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) .. flat-table:: struct v4l2_decoder_cmd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71)     :widths: 1 1 1 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74)       - ``cmd``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)       -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)       - The decoder command, see :ref:`decoder-cmds`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)       - ``flags``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79)       -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)       - Flags to go with the command. If no flags are defined for this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	command, drivers and applications must set this field to zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)     * - union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83)       - (anonymous)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84)     * - struct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85)       - ``start``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86)       -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87)       - Structure containing additional data for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	``V4L2_DEC_CMD_START`` command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89)     * -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90)       - __s32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91)       - ``speed``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92)       - Playback speed and direction. The playback speed is defined as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	``speed``/1000 of the normal speed. So 1000 is normal playback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	Negative numbers denote reverse playback, so -1000 does reverse
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	playback at normal speed. Speeds -1, 0 and 1 have special
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	meanings: speed 0 is shorthand for 1000 (normal playback). A speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	of 1 steps just one frame forward, a speed of -1 steps just one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	frame back.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99)     * -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)       - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)       - ``format``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)       - Format restrictions. This field is set by the driver, not the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	application. Possible values are ``V4L2_DEC_START_FMT_NONE`` if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	there are no format restrictions or ``V4L2_DEC_START_FMT_GOP`` if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	the decoder operates on full GOPs (*Group Of Pictures*). This is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	usually the case for reverse playback: the decoder needs full
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	GOPs, which it can then play in reverse order. So to implement
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	reverse playback the application must feed the decoder the last
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	GOP in the video file, then the GOP before that, etc. etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)     * - struct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)       - ``stop``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)       -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)       - Structure containing additional data for the ``V4L2_DEC_CMD_STOP``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)     * -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)       - __u64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)       - ``pts``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)       - Stop playback at this ``pts`` or immediately if the playback is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	already past that timestamp. Leave to 0 if you want to stop after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	the last frame was decoded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)     * - struct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)       - ``raw``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)     * -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)       - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)       - ``data``\ [16]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)       - Reserved for future extensions. Drivers and applications must set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	the array to zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)     * - }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)       -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) .. tabularcolumns:: |p{5.6cm}|p{0.6cm}|p{11.3cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) .. _decoder-cmds:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) .. flat-table:: Decoder Commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)     :widths: 56 6 113
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)     * - ``V4L2_DEC_CMD_START``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)       - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)       - Start the decoder. When the decoder is already running or paused,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	this command will just change the playback speed. That means that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	calling ``V4L2_DEC_CMD_START`` when the decoder was paused will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	*not* resume the decoder. You have to explicitly call
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	``V4L2_DEC_CMD_RESUME`` for that. This command has one flag:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	``V4L2_DEC_CMD_START_MUTE_AUDIO``. If set, then audio will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	muted when playing back at a non-standard speed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	For a device implementing the :ref:`decoder`, once the drain sequence
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	is initiated with the ``V4L2_DEC_CMD_STOP`` command, it must be driven
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	to completion before this command can be invoked.  Any attempt to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	invoke the command while the drain sequence is in progress will trigger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	an ``EBUSY`` error code.  The command may be also used to restart the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	decoder in case of an implicit stop initiated by the decoder itself,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	without the ``V4L2_DEC_CMD_STOP`` being called explicitly. See
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	:ref:`decoder` for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)     * - ``V4L2_DEC_CMD_STOP``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)       - 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)       - Stop the decoder. When the decoder is already stopped, this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	command does nothing. This command has two flags: if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	``V4L2_DEC_CMD_STOP_TO_BLACK`` is set, then the decoder will set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	the picture to black after it stopped decoding. Otherwise the last
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	image will repeat. If
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	``V4L2_DEC_CMD_STOP_IMMEDIATELY`` is set, then the decoder stops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	immediately (ignoring the ``pts`` value), otherwise it will keep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	decoding until timestamp >= pts or until the last of the pending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	data from its internal buffers was decoded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	For a device implementing the :ref:`decoder`, the command will initiate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	the drain sequence as documented in :ref:`decoder`.  No flags or other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	arguments are accepted in this case. Any attempt to invoke the command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 	again before the sequence completes will trigger an ``EBUSY`` error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)     * - ``V4L2_DEC_CMD_PAUSE``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)       - 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)       - Pause the decoder. When the decoder has not been started yet, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	driver will return an ``EPERM`` error code. When the decoder is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	already paused, this command does nothing. This command has one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	flag: if ``V4L2_DEC_CMD_PAUSE_TO_BLACK`` is set, then set the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	decoder output to black when paused.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)     * - ``V4L2_DEC_CMD_RESUME``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)       - 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)       - Resume decoding after a PAUSE command. When the decoder has not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	been started yet, the driver will return an ``EPERM`` error code. When
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	the decoder is already running, this command does nothing. No
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	flags are defined for this command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)     * - ``V4L2_DEC_CMD_FLUSH``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)       - 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)       - Flush any held capture buffers. Only valid for stateless decoders.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	This command is typically used when the application reached the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	end of the stream and the last output buffer had the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag set. This would prevent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	dequeueing the capture buffer containing the last decoded frame.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	So this command can be used to explicitly flush that final decoded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	frame. This command does nothing if there are no held capture buffers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) Return Value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) On success 0 is returned, on error -1 and the ``errno`` variable is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) appropriately. The generic error codes are described at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) :ref:`Generic Error Codes <gen-errors>` chapter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) EBUSY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)     A drain sequence of a device implementing the :ref:`decoder` is still in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)     progress. It is not allowed to issue another decoder command until it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209)     completes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) EINVAL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)     The ``cmd`` field is invalid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) EPERM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)     The application sent a PAUSE or RESUME command when the decoder was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)     not running.