[FFmpeg-devel] [PATCH v2] doc/v4l2_m2m: Add documentation

Gyan ffmpeg at gyani.pro
Thu Jan 16 07:21:48 EET 2020



On 16-01-2020 09:44 am, Andriy Gelman wrote:
> From: Andriy Gelman <andriy.gelman at gmail.com>
>
> Signed-off-by: Andriy Gelman <andriy.gelman at gmail.com>
> ---
>   doc/decoders.texi | 27 +++++++++++++++++++++++++++
>   doc/encoders.texi | 42 ++++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 69 insertions(+)
>
> diff --git a/doc/decoders.texi b/doc/decoders.texi
> index f18226b3504..7827a055408 100644
> --- a/doc/decoders.texi
> +++ b/doc/decoders.texi
> @@ -86,6 +86,33 @@ AVS2-P2/IEEE1857.4 video decoder wrapper.
>   
>   This decoder allows libavcodec to decode AVS2 streams with davs2 library.
>   
> + at section v4l2m2m
> +
> +libavcodec supports a set of v4l2m2m wrappers for interfacing with
> +hardware decoders. Depending on the hardware's capabilties the following decoders may be selected:
> +h264, hevc, mpeg1, mpeg2, mpeg4, h263, vc1, vp8, and vp9.

capabilties --> capabilities



> +
> +To use a specifix decoder append a  _v4l2m2m suffix. For example to select h264

specifix --> specific

> +decoder use:
> + at example
> +ffmpeg -codec:v h264_v4l2m2m -i INPUT OUTPUT
> + at end example
> +
> +The following options are supported:
> + at table @option
> + at item num_output_buffers
> +Number of memory mapped buffers to store the input packets.
> +This value is only a suggestion to the hardware device. The device will attempt to
> +allocate the number of buffers, but the actual value may be smaller/larger and
> +ultimately depends on the device. The default for the option is 16, minimum is
> +6, and any large value (representable by an int) is accepted for the max.
> +
> + at item num_capture_buffers
> +Number of memory mapped buffers to store the decompressed frames. The allocation
> +description is the same as above. Default is 20, minimum is 20, and any large
> +value (representable by an int) is accepted for the max.

Restate the description, don't reference another option entry, since in 
theory, more may be inserted or shuffled around.

For both options, what's the significance and tradeoff? Latency?

> + at end table
> +
>   @c man end VIDEO DECODERS
>   
>   @chapter Audio Decoders
> diff --git a/doc/encoders.texi b/doc/encoders.texi
> index 61e674cf968..a600e76b1b9 100644
> --- a/doc/encoders.texi
> +++ b/doc/encoders.texi
> @@ -3117,6 +3117,48 @@ required to produce a stream usable with all decoders.
>   
>   @end table
>   
> + at section v4l2m2m
> +
> +libavcodec supports a set of v4l2m2m wrappers for interfacing with hardware encoders.
> +Depending on the hardware's capabilities the following encoders may be selected:
> +mpeg4, h263, h264, hevc, and vp8.
> +
> +To use a specific encoder append _v4l2m2m suffix. For example to select h264 use:
> + at example
> +ffmpeg -i INPUT [-pix_fmt pixfmt] -codec:v h264_v4l2m2m OUTPUT
> + at end example
> +In some cases, it may be necessary to insert a pixel format conversion with
> + at code{-pix_fmt}. This is required if the pixel format of the input does not
> +match the format of the encoder. If there is a mismatch, libavcodec will
> +exit and specify the required pixfmt to use.
> +
> +The following options are supported:
> + at table @option
> + at item num_output_buffers
> +Number of memory mapped buffers to store the input frames.
> +This value is only a suggestion to the hardware device. The device will attempt to
> +allocate the number of buffers, but the actual value may be smaller/larger and
> +ultimately depends on the device. The default for the option is 16, minimum is
> +6, and any large value (representable by an int) is accepted for the max.
> +
> + at item num_capture_buffers
> +Number of memory mapped buffers to store the compressed packets. The allocation
> +description is the same as above. Default is 4, minimum is 4, and any large
> +value (representable by an int) is accepted for the max.

Restate the description, don't reference another option entry.

  Significance and tradeoff?

> + at end table
> +
> +Standard libavcodec options that can be set are:
> + at itemize
> + at item
> + at option{g} / @option{gop_size}
> + at item
> + at option{qpel}
> + at item
> + at option{qmin}
> + at item
> + at option{qmax}

Where in the code is the lavc qmin/qmax applied?

You may note that bitrate is also read.

> + at end itemize
> +
>   @section vc2
>   
>   SMPTE VC-2 (previously BBC Dirac Pro). This codec was primarily aimed at

Thanks,
Gyan


More information about the ffmpeg-devel mailing list