[FFmpeg-devel,4/4] doc: Add VAAPI encoders

Submitted by Mark Thompson on June 18, 2017, 10:09 p.m.

Details

Message ID 20170618220926.24656-4-sw@jkqxz.net
State Accepted
Commit dc81f1a2cef11538401ee1ca13b76e61838283e6
Headers show

Commit Message

Mark Thompson June 18, 2017, 10:09 p.m.
(cherry picked from commit 41dda860870fb1566b17f6b0b61922f0ef89be47)
---
 doc/encoders.texi | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)

Patch hide | download patch | download mbox

diff --git a/doc/encoders.texi b/doc/encoders.texi
index 3645b490f9..a8bee092cf 100644
--- a/doc/encoders.texi
+++ b/doc/encoders.texi
@@ -2527,6 +2527,102 @@  encoder use CAVLC instead of CABAC.
 dia size for the iterative motion estimation
 @end table
 
+@section VAAPI encoders
+
+Wrappers for hardware encoders accessible via VAAPI.
+
+These encoders only accept input in VAAPI hardware surfaces.  If you have input
+in software frames, use the @option{hwupload} filter to upload them to the GPU.
+
+The following standard libavcodec options are used:
+@itemize
+@item
+@option{g} / @option{gop_size}
+@item
+@option{bf} / @option{max_b_frames}
+@item
+@option{profile}
+@item
+@option{level}
+@item
+@option{b} / @option{bit_rate}
+@item
+@option{maxrate} / @option{rc_max_rate}
+@item
+@option{bufsize} / @option{rc_buffer_size}
+@item
+@option{rc_init_occupancy} / @option{rc_initial_buffer_occupancy}
+@item
+@option{q} / @option{global_quality}
+@item
+@option{qmin}
+(only: @option{qmax} is not supported)
+@item
+@option{i_qfactor} / @option{i_quant_factor}
+@item
+@option{i_qoffset} / @option{i_quant_offset}
+@item
+@option{b_qfactor} / @option{b_quant_factor}
+@item
+@option{b_qoffset} / @option{b_quant_offset}
+@end itemize
+
+@table @option
+
+@item vaapi_h264
+@option{profile} sets the value of @emph{profile_idc} and the @emph{constraint_set*_flag}s.
+@option{level} sets the value of @emph{level_idc}.
+
+@table @option
+@item quality
+Set the local encoding quality/speed tradeoff (range 1-8, higher values are faster; not all
+systems implement all levels).
+@item low_power
+Use low-power encoding mode.
+@end table
+
+@item vaapi_hevc
+@option{profile} and @option{level} set the values of
+@emph{general_profile_idc} and @emph{general_level_idc} respectively.
+
+@item vaapi_mjpeg
+Always encodes using the standard quantisation and huffman tables -
+@option{global_quality} scales the standard quantisation table (range 1-100).
+
+@item vaapi_mpeg2
+@option{profile} and @option{level} set the value of @emph{profile_and_level_indication}.
+
+No rate control is supported.
+
+@item vaapi_vp8
+B-frames are not supported.
+
+@option{global_quality} sets the @emph{q_idx} used for non-key frames (range 0-127).
+
+@table @option
+@item loop_filter_level
+@item loop_filter_sharpness
+Manually set the loop filter parameters.
+@end table
+
+@item vaapi_vp9
+@option{global_quality} sets the @emph{q_idx} used for P-frames (range 0-255).
+
+@table @option
+@item loop_filter_level
+@item loop_filter_sharpness
+Manually set the loop filter parameters.
+@end table
+
+B-frames are supported, but the output stream is always in encode order rather than display
+order.  If B-frames are enabled, it may be necessary to use the @option{vp9_raw_reorder}
+bitstream filter to modify the output stream to display frames in the correct order.
+
+Only normal frames are produced - the @option{vp9_superframe} bitstream filter may be
+required to produce a stream usable with all decoders.
+
+@end table
+
 @section vc2
 
 SMPTE VC-2 (previously BBC Dirac Pro). This codec was primarily aimed at