Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions Build.cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@

# 如何建立NVEnc
by rigaya

## 0. 环境需求
要构建NVEnc,需要以下组件。

- Visual Studio 2015 + CUDA 8.0 (x86)
- Visual Studio 2015/2017/2019 + CUDA 10.2 (x64)
- yasm
- Avisynth SDK
- VapourSynth SDK

请将yasm设置为您的环境路径。

使用sdk安装Avisynth+和VapourSynth。

然后,Avisynth+ SDK 的 "avisynth_c.h" 和VapourSynth SDK 的 "VapourSynth.h" 应被添加到 Visual Studio 的包含路径中。

这些包括路径可以通过环境变量“AVISYNTH_SDK”和“VAPOURSYNTH_SDK”来传递。

使用默认安装,环境变量可以设置如下。
```Batchfile
setx AVISYNTH_SDK "C:\Program Files (x86)\AviSynth+\FilterSDK"
setx VAPOURSYNTH_SDK "C:\Program Files (x86)\VapourSynth\sdk"
```

您还需要Caption2Ass_PCR的源代码。

```Batchfile
git clone https://github.com/maki-rxrz/Caption2Ass_PCR <path-to-clone>
setx CAPTION2ASS_SRC Caption2Ass_PCR <path-to-clone>/src
```

## 1. 下载源代码

```Batchfile
git clone https://github.com/rigaya/NVEnc --recursive
```

## 2. 构建 NVEncC.exe / NVEnc.auo

最后,打开 NVEnc.sln,然后开始使用 Visual Studio 构建 NVEnc。

| | For Debug build | For Release build |
|:---------------------|:------|:--------|
|NVEncC(64).exe | DebugStatic | RelStatic |
|NVEnc.auo (win32 only) | Debug | Release |
|cufilters.auf (win32 only) | DebugFilters | RelFilters |
2 changes: 1 addition & 1 deletion Build.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ by rigaya
To build NVEnc, components below are required.

- Visual Studio 2015 + CUDA 8.0 (x86)
- Visual Studio 2015/2017/2019 + CUDA 10.1 (x64)
- Visual Studio 2015/2017/2019 + CUDA 10.2 (x64)
- yasm
- Avisynth SDK
- VapourSynth SDK
Expand Down
2 changes: 1 addition & 1 deletion Build.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ by rigaya
ビルドには、下記のものが必要です。

- Visual Studio 2015 + CUDA 8.0 (x86)
- Visual Studio 2015/2017/2019 + CUDA 10.1 (x64)
- Visual Studio 2015/2017/2019 + CUDA 10.2 (x64)
- yasm
- Avisynth+ SDK
- VapourSynth SDK
Expand Down
153 changes: 153 additions & 0 deletions Readme.cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@

# NVEnc
by rigaya

**[日本語版はこちら>>](./Readme.ja.md)**

[![Build status](https://ci.appveyor.com/api/projects/status/dmlkxw4rbrby0oi9/branch/master?svg=true)](https://ci.appveyor.com/project/rigaya/nvenc/branch/master)

本软件旨在研究NVIDIA的HW编码器(NVENC)的性能和图像质量。
所开发的软件有两种类型,一种是独立运行的命令行版本,另一种是输出插件 [Aviutl](http://spring-fragrance.mints.ne.jp/aviutl/).

- NVEncC.exe ... 支持代码转换的命令行版本。
- NVEnc.auo ... [Aviutl](http://spring-fragrance.mints.ne.jp/aviutl/) 的输出插件。

## 下载 & update history
[rigayaの日記兼メモ帳>>](http://rigaya34589.blog135.fc2.com/blog-category-17.html)

## 系统需求
Windows 7, 8, 8.1, 10 (x86 / x64)
Aviutl 0.99g4 or later (NVEnc.auo)
支持NVENC的硬件
NVIDIA GPU GeForce Kepler gen或更新(GT / GTX 6xx或更新)
※ 由于GT 63x, 62x等是费米代的重命名,他们不能运行NVEnc。

| NVEnc | 所需图形驱动程序版本 |
|:-------------- |:--------------------------------- |
| NVEnc 0.00 or later | NVIDIA graphics driver 334.89 or later |
| NVEnc 1.00 or later | NVIDIA graphics driver 347.09 or later |
| NVEnc 2.00 or later | NVIDIA graphics driver 358 or later |
| NVEnc 2.08 or later | NVIDIA graphics driver 368.69 or later |
| NVEnc 3.02 or later | NVIDIA graphics driver 369.30 or later |
| NVEnc 3.08 or later | NVIDIA graphics driver 378.66 or later |
| NVEnc 4.00 or later | NVIDIA graphics driver 390.77 or later |
| NVEnc 4.31 or later | NVIDIA graphics driver 418.81 or later |
| NVEnc 4.51 or later | NVIDIA graphics driver 436.15 or later |

## NVEncC的使用和选项
[选项列表和详细的NVEncC](./NVEncC_Options.en.md)

## 支持的编码特性的示例
check-features的结果,驱动程序返回的功能列表。可能取决于驱动程序版本。

| GPU Gen | GPU Name |
|:---|:---|
| Kepler | [GTX660Ti](./GPUFeatures/gtx660ti.txt) |
| Maxwell | [GTX970](./GPUFeatures/gtx970.txt) |
| Pascal | [GTX1080](./GPUFeatures/gtx1080.txt), [GTX1070](./GPUFeatures/gtx1070.txt), [GTX1060](./GPUFeatures/gtx1060.txt) |
| Volta | [GTX1650](./GPUFeatures/gtx1650.txt) |
| Turing | [RTX2070](./GPUFeatures/rtx2070.txt), [RTX2060](./GPUFeatures/rtx2060.txt), [GTX1660Ti](./GPUFeatures/gtx1660ti.txt) |

## 使用NVEnc的注意事项
本软件是“按原样”提供的,没有任何形式的保证。

NVEnc的输出可能不包括max_dec_frame_buffering字段,
这可能会在某些回放环境中引起问题。

## Main usable functions
### Common to NVEnc / NVEncC
- Encoding using NVENC
- H.264 / AVC
- YUV420 / YUV444
- H.265 / HEVC (2nd Gen Maxwell or later)
- YUV420 / YUV444
- 10 bits
- Each encode mode of NVENC
- CQP (fixed quantization)
- CBR (Constant bitrate)
- CBRHQ (Constant bitrate, high quality)
- VBR (Variable bitrate)
- VBRHQ (Variable bitrate, high quality)
- Interlaced encoding (by PAFF)
- Lossless output (YUV 420 / YUV 444)
- supports setting of codec profile & level, SAR, colormatrix, maxbitrate, GOP len, etc...

### NVEncC
- Supports cuvid decoding
- MPEG1
- MPEG2
- H.264 / AVC
- HEVC (10 bit / 12bitdepth with YUV444 support)
- VP9
- Supports various formats such as avs, vpy, y4m, and raw
- Supports demux/muxing using libavformat
- Supports decode using libavcodec
- High performance filtering (VPP, Video Pre-Processing)
- cuvid built-in hw processing
- resize
- deinterlace (normal / bob)
- GPU filtering by CUDA
- rff (apply rff flag)
- deinterlacer
- afs (Automatic field shift)
- nnedi
- yadif
- colorspace conversion (x64 version only)
- hdr2sdr
- delogo
- subburn
- resize
- bilinear
- spline16, spline36, spline64
- lanczos2, lanczos3, lanczos4
- various algorithms by npp library are available (x64 version only)
- padding
- select-every
- deband
- noise reduction
- knn (K-nearest neighbor)
- pmd (modified pmd method)
- gauss (npp library, x64 version only)
- edge / detail enhancement
- unsharp
- edgelevel (edge ​​level adjustment)

### NVEnc.auo (Aviutl plugin)
- Audio encoding
- Mux audio and chapter
- afs (Automatic field shift) support

### cufilters.auf (Aviutl plugin)
- supported filters
- nnedi
- resize
- noise reduction
- knn (K-nearest neighbor)
- pmd (modified pmd method)
- edge / detail enhancement
- unsharp
- edgelevel (edge ​​level adjustment)
- deband

### NVEnc 源码
- MIT license.
- 这个程序是基于NVIDA CUDA样本,包括样本代码。
本软件包含NVIDIA公司提供的源代码。
- 这个软件依赖于
[jitify](https://github.com/NVIDIA/jitify),
[ffmpeg](https://ffmpeg.org/),
[tinyxml2](http://www.grinninglizard.com/tinyxml2/),
[dtl](https://github.com/cubicdaiya/dtl),
[libass](https://github.com/libass/libass),
[ttmath](http://www.ttmath.org/) &
[Caption2Ass](https://github.com/maki-rxrz/Caption2Ass_PCR).
对于这些许可证,请参阅相应源代码的标题部分和NVEnc_license.txt。

- [如何构建](./Build.cn.md)

### 关于源代码
Windows ... VC build

Character code: UTF-8-BOM
Line feed: CRLF
Indent: blank x4
1 change: 1 addition & 0 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
by rigaya

**[日本語版はこちら>>](./Readme.ja.md)**
**[简体中文版本>>](./Readme.cn.md)**

[![Build status](https://ci.appveyor.com/api/projects/status/dmlkxw4rbrby0oi9/branch/master?svg=true)](https://ci.appveyor.com/project/rigaya/nvenc/branch/master)

Expand Down
7 changes: 7 additions & 0 deletions cudaver.props
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@
<CUDA_CODE_GEN>compute_30,compute_30;compute_50,compute_50;compute_75,compute_75</CUDA_CODE_GEN>
<NVRTC_DLL_NAME>nvrtc64_101_0.dll</NVRTC_DLL_NAME>
</PropertyGroup>
<PropertyGroup Label="UserMacros" Condition="'$(CUDA_PATH)' == '$(CUDA_PATH_V10_2)'" >
<CUDA_MAJOR_VER>10</CUDA_MAJOR_VER>
<CUDA_MINOR_VER>2</CUDA_MINOR_VER>
<CUDA_VER>$(CUDA_MAJOR_VER).$(CUDA_MINOR_VER)</CUDA_VER>
<CUDA_CODE_GEN>compute_30,compute_30;compute_50,compute_50;compute_75,compute_75</CUDA_CODE_GEN>
<NVRTC_DLL_NAME>nvrtc64_102_0.dll</NVRTC_DLL_NAME>
</PropertyGroup>
<ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA $(CUDA_VER).props" />
</ImportGroup>
Expand Down