• Stars
    star
    260
  • Rank 156,275 (Top 4 %)
  • Language
    C++
  • License
    Other
  • Created about 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

QSVによる高速エンコードの性能実験

QSVEnc

by rigaya

Build Windows Releases Build Linux Packages

日本語版はこちら>>

This software is meant to investigate performance and image quality of HW encoder (QSV) of Intel. There are 2 types of software developed, one is command line version that runs independently, and the nother is a output plug-in of Aviutl.

  • QSVEncC.exe ... Command line version supporting transcoding.
  • QSVEnc.auo ... Output plugin for Aviutl.

Downloads & update history

rigayaの日記兼メモ帳>>
github releases

Install

Install instructions for Windows and Linux

Build

Build instructions for Windows and Linux

System Requirements

Windows

Windows 10/11 (x86/x64)
Aviutl 1.00 or later (QSVEnc.auo)

Linux

Debian/Ubuntu (QSVEncC)
Fedora (QSVEncC)
Requires Broadwell CPU or later.
It may be possible to run on other distributions (not tested).

Precautions for using QSVEnc

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.

Usage and options of QSVEncC

Option list and details of QSVEncC

Major Features

Common to QSVEnc.auo / QSVEncC

  • Encoding using QuickSyncVideo
    • H.264/AVC
    • H.265/HEVC (8bit/10bit)
    • MPEG2
    • VP9 (8bit/10bit)
    • AV1 (8bit/10bit)
  • Encode mode of QuickSyncVideo
    • CQP (Fixed Quantization)
    • CBR (Constant bitrate)
    • VBR (Variable bitrate)
    • AVBR (Adaptive Variable bitrate)
    • QVBR (Quality based Variable bitrate)
    • LA (Lookahead mode)
    • LA-HRD (HRD compatible Lookahead mode)
    • ICQ (Constant Quality)
    • LA-ICQ (Constant Quality with Lookahead)
    • VCM (Video Conference mode)
  • Quality preset of 7 steps
  • Interlaced encoding (by PAFF)
  • Supports setting of codec profile & level, SAR, colormatrix, maxbitrate, GOP len, etc...
  • Calculation of ssim/psnr of the encode
  • Supports various vpp(video pre-processing) filters
    • MFX (Media Fixed function) filters
      • resize
      • deinterlace (normal / bob / it)
      • detail enhancement
      • denoise
      • image stablizier
    • OpenCL filters
      • deinterlacer
        • afs (Automatic field shift)
        • nnedi
      • decimate
      • mpdecimate
      • colorspace conversion
        • hdr2sdr
      • delogo
      • subburn
      • resize
        • bilinear
        • spline16, spline36, spline64
        • lanczos2, lanczos3, lanczos4
      • transpose / rotate / flip
      • padding
      • deband
      • noise reduction
        • knn (K-nearest neighbor)
        • pmd (modified pmd method)
      • edge / detail enhancement
        • unsharp
        • edgelevel (edge ​​level adjustment)
        • warpsharp

QSVEncC

  • Supports QSV(hw) decoding
    • MPEG2
    • H.264/AVC
    • HEVC
    • VP8
    • VP9
    • AV1
  • Supports various formats such as avs, vpy, y4m, and raw
  • Supports demux/muxing using libavformat
  • Supports decode using libavcodec

QSVEnc.auo (Aviutl plugin)

  • Audio encoding
  • Mux audio and chapter
  • afs (Automatic field shift) support

QSVEnc.auo

Supported Features

This depends on the version of QSVEnc, the generation of the GPU, and also the GPU driver.

CPU Gen GPU Gen Windows Linux
SandyBridge Gen6 i5 2410M
IvyBridge Gen7
Haswell Gen7.5 i3 4170
Broadwell Gen8 i7 5500U i7 5500U
SkyLake Gen9
KabyLake Gen9.5 i7 7700K i7 7700K
CoffeeLake Gen9.5
CommetLake Gen9.5
Cannonlake Gen10 - -
IceLake Gen11 i5 1035G7 i5 1035G7
TigerLake Gen12
RocketLake Gen12 i7 11700K i7 11700K
AlderLake Gen12 i9 12900K i9 12900K
DG2 Arc A380

Supported HW Encoder (@ Windows OS)

CPU Gen GPU Gen MPEG2 H.264 PG H.264 FF HEVC PG HEVC FF VP9 FF AV1 FF
SandyBridge Gen6 8bit 8bit
IvyBridge Gen7 8bit 8bit
Haswell Gen7.5 8bit 8bit
Broadwell Gen8 8bit 8bit
SkyLake Gen9 8bit 8bit 8bit
KabyLake Gen9.5 8bit 8bit 8bit 10bit
CoffeeLake Gen9.5 8bit 8bit 8bit 10bit
CommetLake Gen9.5 8bit 8bit 8bit 10bit
CannonLake Gen10 - - - - - - -
IceLake Gen11 8bit 8bit 8bit 10bit 10bit 10bit
TigerLake Gen12 8bit 8bit 8bit 10bit 10bit 10bit
RocketLake Gen12 8bit 8bit 8bit 10bit 10bit 10bit
AlderLake Gen12 8bit 8bit 8bit 10bit 10bit 10bit
DG2 8bit 10bit 10bit 10bit

Supported HW Decoder

CPU Gen GPU Gen MPEG2 H.264 HEVC VP8 VP9 AV1
SandyBridge Gen6 8bit 8bit
IvyBridge Gen7 8bit 8bit
Haswell Gen7.5 8bit 8bit
Broadwell Gen8 8bit 8bit 8bit
SkyLake Gen9 8bit 8bit 8bit 8bit
KabyLake Gen9.5 8bit 8bit 10bit 8bit 8bit
CoffeeLake Gen9.5 8bit 8bit 10bit 8bit 8bit
CommetLake Gen9.5 8bit 8bit 10bit 8bit 8bit
CannonLake Gen10 - - - - - -
IceLake Gen11 8bit 8bit 10bit 8bit 10bit
TigerLake Gen12 8bit 8bit 12bit 12bit 10bit
RocketLake Gen12 8bit 8bit 12bit 12bit 10bit
AlderLake Gen12 8bit 8bit 12bit 12bit 10bit
DG2 8bit 8bit 12bit 12bit 12bit

Auto GPU selection in multi GPU envinronment (Windows Only)

QSVEncC will automatically select a GPU depending on the options used, when there are multiple GPUs available which support QSV. --device option can be used to specify on which GPU to run manually.

  1. Select GPU which supports...
    Items below will be checked whether the GPU supports it or not
  • Codec, Profile, Level
  • Additionally, below items will be checked if specified
    • 10bit depth encoding
    • HW decode
  1. If there are multiple GPUs which suports all the items checked in 1. and 2., GPU below will be prefered.
  • GPU which has low Video Engine(VE) utilization
  • GPU which has low GPU core utilization

The purpose of selecting GPU with lower VE/GPU ulitization is to assign tasks to mulitple GPUs and improve the throughput of the tasks.

Please note that VE and GPU ulitization are check at the initialization pahse of the app, and there are delays in values taken. Therefore, it is likely that the multiple tasks started at the same time to run on the same GPU, and divided into multiple GPUs, even if the options are supported in every GPUs.

QSVEnc source code

About source code

Windows ... VC build
Linux ... makefile + gcc/clang build

Character code: UTF-8-BOM
Line feed: CRLF
Indent: blank x4

More Repositories

1

NVEnc

NVENCによる高速エンコードの性能実験
C++
872
star
2

VCEEnc

VCEによる高速エンコードの性能実験
C++
178
star
3

x264guiEx

拡張 x264 出力(GUI) Ex
C++
161
star
4

x265guiEx

拡張 x265 出力(GUI) Ex
C++
64
star
5

ffmpegOut

Aviutlのffmpegを使用した出力プラグイン
C++
39
star
6

svtAV1guiEx

拡張 SVT-AV1 出力(GUI) Ex
C++
38
star
7

rkmppenc

Rockchip系SoCのHWエンコーダ(rkmpp)の性能実験
C++
30
star
8

tsreplace

tsの映像部分のみの置き換えを行うツールです。
C++
26
star
9

CheckBitrate

動画ファイルを分析して、ビットレート分布をcsvで出力します。
C++
17
star
10

ram_speed

スレッド数ごとにアクセス速度を測定。
JavaScript
11
star
11

aui_indexer

lwinput.auiやm2v.auiで必要なindexファイルなどを事前生成します。
C++
9
star
12

VVenCguiEx

拡張 VVenC 出力(GUI) Ex
C++
8
star
13

edgelevel_avisynth

エッジレベル調整フィルタのAvisynth移植版です。
C++
8
star
14

bandingMT_simd

Aviutl バンディング低減フィルタMT 高速化版
C++
8
star
15

AviutlColor

Aviutlの色空間変換プラグイン
C++
7
star
16

pmd_mt

Aviutl PMD_MT ノイズ除去フィルタ 高速化版
C++
7
star
17

Aviutl-clfilters

Aviutl用のOpenCLによるGPUフィルタです。
C++
7
star
18

ffmpeg5_dlls_for_hwenc

QSVEncやNVENCの画質や速度といった性能の実験を目的とするQSVEncやNVEncのサブモジュールです。
C
7
star
19

hdr10plus_gen

cmake projectの練習用
C++
5
star
20

auo_setup

Aviutlプラグイン用の簡易インストーラです。
C++
5
star
21

checkhwenc

Standalone check tool for hw encoder availability
C++
5
star
22

vq_results

画質比較結果の公開用です。
JavaScript
4
star
23

build_scripts

自分用ビルドスクリプト集
Shell
4
star
24

OpenCLTest

OpenCLの勉強用
C++
4
star
25

ChapConvert

Converts chapter file formats.
C++
3
star
26

ffmpeg_dlls_for_hwenc_old

QSVEncやNVENCの画質や速度といった性能の実験を目的とするQSVEncやNVEncのサブモジュールです。
C
3
star
27

checkclinfo

Result of GPU detection via OpenCL
C++
3
star
28

afs

自動フィールドシフト 高速化版
C++
2
star
29

fawutil

C++
2
star
30

microbench

SIMD命令の速度を測る遊び
Assembly
2
star
31

edgelevelMT

Aviutl プラグイン エッジレベル調整 MT ver 0.7
C++
1
star
32

delogo

Aviutl 透過性ロゴフィルタ SIMD版
C
1
star
33

build_pkg

currently for test
Python
1
star
34

HWEncTest

QSVEnc/NVEnc/VCEEncのデバッグ/テスト/検証用
Python
1
star
35

rkmppenc_access_override

C
1
star