Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: "Xiang, Haihao" <haihao.xiang-at-intel.com@ffmpeg.org>
To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH V2] doc/encoders.texi: Add doc for qsv
Date: Fri, 7 Jan 2022 07:03:30 +0000
Message-ID: <8f70a7efba03f0e21a9cf6af0d7c3f6b54017067.camel@intel.com> (raw)
In-Reply-To: <20220106030040.781111-1-wenbin.chen@intel.com>

On Thu, 2022-01-06 at 11:00 +0800, Wenbin Chen wrote:
> Add doc for qsv decoder.
> Add more option's introduction to qsv encoder.
> 
> Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
> ---
>  doc/decoders.texi |  42 ++++++++
>  doc/encoders.texi | 253 +++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 292 insertions(+), 3 deletions(-)
> 
> diff --git a/doc/decoders.texi b/doc/decoders.texi
> index 49ab735dce..de2429abba 100644
> --- a/doc/decoders.texi
> +++ b/doc/decoders.texi
> @@ -126,6 +126,48 @@ Set amount of frame threads to use during decoding. The
> default value is 0 (auto
>  
>  @end table
>  
> +@section QSV Decoders
> +
> +The family of Intel QuickSync Video decoders (VC1, MPEG-2, H.264, HEVC,
> +JPEG/MJPEG, VP8, VP9, AV1).
> +
> +@subsection Common Options
> +
> +The following options are supported by all qsv decoders.
> +
> +@table @option
> +
> +@item @var{async_depth}
> +Internal parallelization depth, the higher the value the higher the latency.
> +
> +@item @var{gpu_copy}
> +A GPU-accelerated copy between video and system memory
> +@table @samp
> +@item default
> +@item on
> +@item off
> +@end table
> +
> +@end table
> +
> +@subsection HEVC Options
> +Extra options for hevc_qsv.
> +
> +@table @option
> +
> +@item @var{load_plugin}
> +A user plugin to load in an internal session
> +@table @samp
> +@item none
> +@item hevc_sw
> +@item hevc_hw
> +@end table
> +
> +@item @var{load_plugins}
> +A :-separate list of hexadecimal plugin UIDs to load in an internal session
> +
> +@end table
> +
>  @c man end VIDEO DECODERS
>  
>  @chapter Audio Decoders
> diff --git a/doc/encoders.texi b/doc/encoders.texi
> index e3b61de5a1..7cc8be1209 100644
> --- a/doc/encoders.texi
> +++ b/doc/encoders.texi
> @@ -3123,12 +3123,13 @@ Setting a higher @option{bits_per_mb} limit will
> improve the speed.
>  For the fastest encoding speed set the @option{qscale} parameter (4 is the
>  recommended value) and do not set a size constraint.
>  
> -@section QSV encoders
> +@section QSV Encoders
>  
> -The family of Intel QuickSync Video encoders (MPEG-2, H.264, HEVC, JPEG/MJPEG
> and VP9)
> +The family of Intel QuickSync Video encoders (MPEG-2, H.264, HEVC, JPEG/MJPEG
> +and VP9)
>  
> +@subsection Ratecontrol Method
>  The ratecontrol method is selected as follows:
> -
>  @itemize @bullet
>  @item
>  When @option{global_quality} is specified, a quality-based mode is used.
> @@ -3176,6 +3177,7 @@ Note that depending on your system, a different mode
> than the one you specified
>  may be selected by the encoder. Set the verbosity level to @var{verbose} or
>  higher to see the actual settings used by the QSV runtime.
>  
> +@subsection Global Options -> MSDK Options
>  Additional libavcodec global options are mapped to MSDK options as follows:
>  
>  @itemize
> @@ -3212,6 +3214,251 @@ encoder use CAVLC instead of CABAC.
>  
>  @end itemize
>  
> +@subsection Common Options
> +Following options are used by all qsv encoders.
> +
> +@table @option
> +@item @var{async_depth}
> +Specifies how many asynchronous operations an application performs
> +before the application explicitly synchronizes the result. If zero,
> +the value is not specified.
> +
> +@item @var{avbr_accuracy}
> +Accuracy of the AVBR ratecontrol (unit of tenth of percent).
> +
> +@item @var{avbr_convergence}
> +Convergence of the AVBR ratecontrol (unit of 100 frames)
> +
> +The parameters @var{avbr_accuracy} and @var{avbr_convergence} are for the
> +average variable bitrate control (AVBR) algorithm.
> +The algorithm focuses on overall encoding quality while meeting the specified
> +bitrate, @var{target_bitrate}, within the accuracy range @var{avbr_accuracy},
> +after a @var{avbr_Convergence} period. This method does not follow HRD and
> the
> +instant bitrate is not capped or padded.
> +
> +@item @var{preset}
> +This option itemizes a range of choices from veryfast (best speed) to
> veryslow
> +(best quality).
> +@table @samp
> +@item veryfast
> +@item faster
> +@item fast
> +@item medium
> +@item slow
> +@item slower
> +@item veryslow
> +@end table
> +
> +@item @var{forced_idr}
> +Forcing I frames as IDR frames.
> +
> +@item @var{low_power}
> +For encoders set this flag to ON to reduce power consumption and GPU usage.
> +@end table
> +
> +@subsection H264 options
> +These options are used by h264_qsv
> +
> +@table @option
> +@item @var{extbrc}
> +Extended bitrate control.
> +
> +@item @var{recovery_point_sei}
> +Set this flag to insert the recovery point SEI message at the beginning of
> every
> +intra refresh cycle.
> +
> +@item @var{rdo}
> +Enable rate distortion optimization.
> +
> +@item @var{max_frame_size}
> +Maximum encoded frame size in bytes.
> +
> +@item @var{max_slice_size}
> +Maximum encoded slice size in bytes.
> +
> +@item @var{bitrate_limit}
> +Toggle bitrate limitations.
> +Modifies bitrate to be in the range imposed by the QSV encoder. Setting this
> +flag off may lead to violation of HRD conformance. Mind that specifying
> bitrate
> +below the QSV encoder range might significantly affect quality. If on this
> +option takes effect in non CQP modes: if bitrate is not in the range imposed
> +by the QSV encoder, it will be changed to be in the range.
> +
> +@item @var{mbbrc}
> +Setting this flag enables macroblock level bitrate control that generally
> +improves subjective visual quality. Enabling this flag may have negative
> impact
> +on performance and objective visual quality metric.
> +
> +@item @var{adaptive_i}
> +This flag controls insertion of I frames by the QSV encoder. Turn ON this
> flag
> +to allow changing of frame type from P and B to I.
> +
> +@item @var{adaptive_b}
> +This flag controls changing of frame type from B to P.
> +
> +@item @var{b_strategy}
> +This option controls usage of B frames as reference.
> +
> +@item @var{cavlc}
> +If set, CAVLC is used; if unset, CABAC is used for encoding.
> +
> +@item @var{vcm}
> +Video conferencing mode, please see ratecontrol method.
> +
> +@item @var{idr_interval}
> +Distance (in I-frames) between IDR frames.
> +
> +@item @var{pic_timing_sei}
> +Insert picture timing SEI with pic_struct_syntax element.
> +
> +@item @var{single_sei_nal_unit}
> +Put all the SEI messages into one NALU.
> +
> +@item @var{max_dec_frame_buffering}
> +Maximum number of frames buffered in the DPB.
> +
> +@item @var{look_ahead}
> +Use VBR algorithm with look ahead.
> +
> +@item @var{look_ahead_depth}
> +Depth of look ahead in number frames.
> +
> +@item @var{look_ahead_downsampling}
> +Downscaling factor for the frames saved for the lookahead analysis.
> +@table @samp
> +@item unknown
> +@item auto
> +@item off
> +@item 2x
> +@item 4x
> +@end table
> +
> +@item @var{int_ref_type}
> +Specifies intra refresh type. The major goal of intra refresh is improvement
> of
> +error resilience without significant impact on encoded bitstream size caused
> by
> +I frames. The SDK encoder achieves this by encoding part of each frame in
> +refresh cycle using intra MBs. @var{none} means no refresh. @var{vertical}
> means
> +vertical refresh, by column of MBs.
> +
> +@item @var{int_ref_cycle_size}
> +Specifies number of pictures within refresh cycle starting from 2. 0 and 1
> are
> +invalid values.
> +
> +@item @var{int_ref_qp_delta}
> +Specifies QP difference for inserted intra MBs. This is signed value in
> +[-51, 51] range if target encoding bit-depth for luma samples is 8 and this
> +range is [-63, 63] for 10 bit-depth or [-75, 75] for 12 bit-depth
> respectively.
> +
> +@item @var{profile}
> +@table @samp
> +@item unknown
> +@item baseline
> +@item main
> +@item high
> +@end table
> +
> +@item @var{a53cc}
> +Use A53 Closed Captions (if available).
> +
> +@item @var{aud}
> +Insert the Access Unit Delimiter NAL.
> +
> +@item @var{mfmode}
> +Multi-Frame Mode.
> +@table @samp
> +@item off
> +@item auto
> +@end table
> +
> +@item @var{repeat_pps}
> +Repeat pps for every frame.
> +@end table
> +
> +@subsection HEVC Options
> +These options are used by hevc_qsv
> +
> +@table @option
> +@item @var{extbrc}
> +Extended bitrate control.
> +
> +@item @var{recovery_point_sei}
> +Set this flag to insert the recovery point SEI message at the beginning of
> every
> +intra refresh cycle.
> +
> +@item @var{rdo}
> +Enable rate distortion optimization.
> +
> +@item @var{idr_interval}
> +Distance (in I-frames) between IDR frames.
> +@table @samp
> +@item begin_only
> +Output an IDR-frame only at the beginning of the stream.
> +@end table
> +
> +@item @var{load_plugin}
> +A user plugin to load in an internal session.
> +@table @samp
> +@item none
> +@item hevc_sw
> +@item hevc_hw
> +@end table
> +
> +@item @var{load_plugins}
> +A :-separate list of hexadecimal plugin UIDs to load in
> +an internal session.
> +
> +@item @var{look_ahead_depth}
> +Depth of look ahead in number frames, available when extbrc option is
> enabled.
> +
> +@item @var{profile}
> +@table @samp
> +@item unknown
> +@item main
> +@item main10
> +@item mainsp
> +@item rext
> +@end table
> +
> +@item @var{gpb}
> +1: GPB (generalized P/B frame)
> +
> +0: regular P frame.
> +
> +@item @var{tile_cols}
> +Number of columns for tiled encoding.
> +
> +@item @var{tile_rows}
> +Number of rows for tiled encoding.
> +
> +@item @var{aud}
> +Insert the Access Unit Delimiter NAL.
> +@end table
> +
> +@subsection MPEG2 Options
> +These options are used by mpeg2_qsv
> +@table @option
> +@item @var{profile}
> +@table @samp
> +@item unknown
> +@item simple
> +@item main
> +@item high
> +@end table
> +@end table
> +
> +@subsection VP9 Options
> +These options are used by vp9_qsv
> +@table @option
> +@item @var{profile}
> +@table @samp
> +@item unknown
> +@item profile0
> +@item profile1
> +@item profile2
> +@item profile3
> +@end table
> +@end table
> +
>  @section snow
>  
>  @subsection Options

Applied, thx!

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

      reply	other threads:[~2022-01-07  7:03 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-06  3:00 Wenbin Chen
2022-01-07  7:03 ` Xiang, Haihao [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8f70a7efba03f0e21a9cf6af0d7c3f6b54017067.camel@intel.com \
    --to=haihao.xiang-at-intel.com@ffmpeg.org \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git