Description
***********

The FFmpeg QSV VPP filter wraps the Intel® Pre Processing (VPP) library. The VPP library is part of the Intel® Media SDK and exposes the media acceleration capabilities of Intel® platforms.

Specifically, this library performs the following conversions:

  * Color Conversion: is the process of changing one type of color-encoded signal into another. VPP supports several input color formats and NV12 as output format.

     Format Type			|
     -------------------------------------------------------------------------
     Input (uncompressed)            | YV12, NV12, YUY2, RGB4 (RGB 32-bit)
     -------------------------------------------------------------------------
     Output (uncompressed)           | NV12
     -------------------------------------------------------------------------

  * Scaling: is the process of resizing an image. An image size can be changed in several ways, VPP uses a separable 8-tap poly-phase scaling filter with adaptive filter ringing suppression.

  * Deinterlacing: is the process of converting interlaced video into a non-interlaced form. VPP uses a motion adaptive based deinterlacing algorithm.

     Input Frame Rate (FPS) |                  Output Frame Rate (FPS)
        Interlaced          |                       Progressive
                            |  23.976  |  25  |  29.97  |  30  |  50  |  59.94  |  60
     -------------------------------------------------------------------------------------
           29.97            | Inverse  |      |         |      |      |         |
                            | Telecine |      |    x    |      |      |         |
     -------------------------------------------------------------------------------------
            50              |          |   x  |         |      |   x  |         |
     -------------------------------------------------------------------------------------
           59.94            |          |      |    x    |      |      |    x    |
     -------------------------------------------------------------------------------------
            60              |          |      |         |   x  |      |         |    x

     x indicates a supported function

  * Denoising: is the process of removing noise from a video signal. VPP uses a motion detection based temporal (adaptive to noise history) and spatial (edge/ texture preserved) denoiser. The spatial video denoiser is applied to each frame individually and the temporal video denoiser to reduce noise between frames.

  * Frame Rate Conversion: is the process of converting the frame rate of a video stream, VPP supports frame drop/repetition frame rate conversion algorithm or frame interpolation which means it will interpolate the new frames in case of increasing the frame rate.

  * Detail Enhancement: is the process of enhancing the edge contrast to improve its sharpness. VPP uses an adaptive detail enhancement algorithm to increase the edge sharpness.

VPP Options
***********

deinterlace
     Sets the deinterlacing mode.

     It accepts the following values:

     0
          No deinterlacing (default).

     1
          BOB deinterlacing mode

     2
          Advanced deinterlacing.

          Note: Advanced deinterlacing uses reference frames and has better quality. BOB is faster than advanced deinterlacing. So user can select between speed and quality

denoise
     Enables denoise algorithm.

     Value of 0-100 (inclusive) indicates the level of noise to remove. Default value is 0 (disabled).

detail
     Enables detail enhancement algorithm.

     Value of 0-100 (inclusive) indicates the level of details to be enhanced. Default value is 0 (disabled).

w

width

     Output video width (Range [32,4096]).

h

height

     Output video height (Range [32,2304]).

dpic
     Sets output picture structure.

     It accepts the following values:

     0
          Interlaced top field first.

     1
          Progressive (default).

     2
          Interlaced bottom field first.

fps
     Sets output frame rate (frames/ seconds (fps)).

     It accepts the following values:

     0
          Input frame rate is used

     else
          Value is used.

async_depth

     Specifies how many asynchronous operations VPP performs before the results are explicitly synchronized (Default Value is 4).

max_b_frames

     Specifies how many B frames are used, this value sets the number of extra surfaces used for re-ordering (Default Value is 3).

     Warning: The number of allocated frame surfaces depends on the number of async_depth and max_b_frames. Wrong configuration could result in lost frames, since the VPP works asynchronous and could request multiple surfaces.

Limitations and known issues
****************************

  * Maximum supported resolution: 4096x2304

  * Minimum supported resolution: 32x32

  * Frame size: frame width must be a multiple of 16, frame height must be a multiple of 16 for progressive frames and a multiple of 32 otherwise.

     NOTE: VPP checks feature availability on any given machine at runtime. Availability of features depends on hardware capabilities as well as driver version.

See Also
********

ffmpeg(1), ffplay(1), ffprobe(1), ffserver(1)