diff options
Diffstat (limited to 'Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst')
-rw-r--r-- | Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst | 154 |
1 files changed, 60 insertions, 94 deletions
diff --git a/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst b/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst index 69bd9b4e0e56..ae20ee573757 100644 --- a/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst +++ b/Documentation/media/uapi/v4l/vidioc-encoder-cmd.rst @@ -15,7 +15,11 @@ VIDIOC_ENCODER_CMD - VIDIOC_TRY_ENCODER_CMD - Execute an encoder command Synopsis ======== -.. cpp:function:: int ioctl( int fd, int request, struct v4l2_encoder_cmd *argp ) +.. c:function:: int ioctl( int fd, VIDIOC_ENCODER_CMD, struct v4l2_encoder_cmd *argp ) + :name: VIDIOC_ENCODER_CMD + +.. c:function:: int ioctl( int fd, VIDIOC_TRY_ENCODER_CMD, struct v4l2_encoder_cmd *argp ) + :name: VIDIOC_TRY_ENCODER_CMD Arguments @@ -24,9 +28,6 @@ Arguments ``fd`` File descriptor returned by :ref:`open() <func-open>`. -``request`` - VIDIOC_ENCODER_CMD, VIDIOC_TRY_ENCODER_CMD - ``argp`` @@ -39,7 +40,7 @@ These ioctls control an audio/video (usually MPEG-) encoder. executing it. To send a command applications must initialize all fields of a struct -:ref:`v4l2_encoder_cmd <v4l2-encoder-cmd>` and call +:c:type:`v4l2_encoder_cmd` and call ``VIDIOC_ENCODER_CMD`` or ``VIDIOC_TRY_ENCODER_CMD`` with a pointer to this structure. @@ -64,42 +65,31 @@ These ioctls are optional, not all drivers may support them. They were introduced in Linux 2.6.21. -.. _v4l2-encoder-cmd: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + +.. c:type:: v4l2_encoder_cmd .. flat-table:: struct v4l2_encoder_cmd :header-rows: 0 :stub-columns: 0 :widths: 1 1 2 + * - __u32 + - ``cmd`` + - The encoder command, see :ref:`encoder-cmds`. + * - __u32 + - ``flags`` + - Flags to go with the command, see :ref:`encoder-flags`. If no + flags are defined for this command, drivers and applications must + set this field to zero. + * - __u32 + - ``data``\ [8] + - Reserved for future extensions. Drivers and applications must set + the array to zero. - - .. row 1 - - - __u32 - - - ``cmd`` - - - The encoder command, see :ref:`encoder-cmds`. - - - .. row 2 - - - __u32 - - - ``flags`` - - - Flags to go with the command, see :ref:`encoder-flags`. If no - flags are defined for this command, drivers and applications must - set this field to zero. - - - .. row 3 - - - __u32 - - - ``data``\ [8] - - - Reserved for future extensions. Drivers and applications must set - the array to zero. +.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| .. _encoder-cmds: @@ -108,59 +98,40 @@ introduced in Linux 2.6.21. :stub-columns: 0 :widths: 3 1 4 - - - .. row 1 - - - ``V4L2_ENC_CMD_START`` - - - 0 - - - Start the encoder. When the encoder is already running or paused, - this command does nothing. No flags are defined for this command. - - - .. row 2 - - - ``V4L2_ENC_CMD_STOP`` - - - 1 - - - Stop the encoder. When the ``V4L2_ENC_CMD_STOP_AT_GOP_END`` flag - is set, encoding will continue until the end of the current *Group - Of Pictures*, otherwise encoding will stop immediately. When the - encoder is already stopped, this command does nothing. mem2mem - encoders will send a ``V4L2_EVENT_EOS`` event when the last frame - has been encoded and all frames are ready to be dequeued and will - set the ``V4L2_BUF_FLAG_LAST`` buffer flag on the last buffer of - the capture queue to indicate there will be no new buffers - produced to dequeue. This buffer may be empty, indicated by the - driver setting the ``bytesused`` field to 0. Once the - ``V4L2_BUF_FLAG_LAST`` flag was set, the - :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore, - but return an ``EPIPE`` error code. - - - .. row 3 - - - ``V4L2_ENC_CMD_PAUSE`` - - - 2 - - - Pause the encoder. When the encoder has not been started yet, the - driver will return an ``EPERM`` error code. When the encoder is - already paused, this command does nothing. No flags are defined - for this command. - - - .. row 4 - - - ``V4L2_ENC_CMD_RESUME`` - - - 3 - - - Resume encoding after a PAUSE command. When the encoder has not - been started yet, the driver will return an ``EPERM`` error code. When - the encoder is already running, this command does nothing. No - flags are defined for this command. - - + * - ``V4L2_ENC_CMD_START`` + - 0 + - Start the encoder. When the encoder is already running or paused, + this command does nothing. No flags are defined for this command. + * - ``V4L2_ENC_CMD_STOP`` + - 1 + - Stop the encoder. When the ``V4L2_ENC_CMD_STOP_AT_GOP_END`` flag + is set, encoding will continue until the end of the current *Group + Of Pictures*, otherwise encoding will stop immediately. When the + encoder is already stopped, this command does nothing. mem2mem + encoders will send a ``V4L2_EVENT_EOS`` event when the last frame + has been encoded and all frames are ready to be dequeued and will + set the ``V4L2_BUF_FLAG_LAST`` buffer flag on the last buffer of + the capture queue to indicate there will be no new buffers + produced to dequeue. This buffer may be empty, indicated by the + driver setting the ``bytesused`` field to 0. Once the + ``V4L2_BUF_FLAG_LAST`` flag was set, the + :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore, + but return an ``EPIPE`` error code. + * - ``V4L2_ENC_CMD_PAUSE`` + - 2 + - Pause the encoder. When the encoder has not been started yet, the + driver will return an ``EPERM`` error code. When the encoder is + already paused, this command does nothing. No flags are defined + for this command. + * - ``V4L2_ENC_CMD_RESUME`` + - 3 + - Resume encoding after a PAUSE command. When the encoder has not + been started yet, the driver will return an ``EPERM`` error code. When + the encoder is already running, this command does nothing. No + flags are defined for this command. + + +.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| .. _encoder-flags: @@ -169,15 +140,10 @@ introduced in Linux 2.6.21. :stub-columns: 0 :widths: 3 1 4 - - - .. row 1 - - - ``V4L2_ENC_CMD_STOP_AT_GOP_END`` - - - 0x0001 - - - Stop encoding at the end of the current *Group Of Pictures*, - rather than immediately. + * - ``V4L2_ENC_CMD_STOP_AT_GOP_END`` + - 0x0001 + - Stop encoding at the end of the current *Group Of Pictures*, + rather than immediately. Return Value |