Skip to content

Commit

Permalink
--vpp-overlayを最後のフィルタに変更。 ( #467 )
Browse files Browse the repository at this point in the history
  • Loading branch information
rigaya committed Mar 4, 2023
1 parent ecaeca7 commit aaeb569
Show file tree
Hide file tree
Showing 7 changed files with 308 additions and 307 deletions.
5 changes: 4 additions & 1 deletion NVEnc/NVEnc_readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,10 @@ NVIDIA グラフィックドライバ 528.02
今後の更新で設定ファイルの互換性がなくなるかもしれません。

【メモ】
2023.02.xx (7.20)
2023.03.04 (7.20)
[NVEncC]
- --vpp-overlayを最後のフィルタに変更。
- 複数のGPUがある場合の集計方法を合計から最大に変更。

[NVEnc.auo]
- オブジェクトエクスプローラからドラッグドロップしたファイルがある場合の出力に対応。
Expand Down
78 changes: 39 additions & 39 deletions NVEncC_Options.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,9 +202,9 @@
- [--vpp-warpsharp \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-warpsharp-param1value1param2value2)
- [--vpp-tweak \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-tweak-param1value1param2value2)
- [--vpp-curves \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-curves-param1value1param2value2)
- [--vpp-overlay \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-overlay-param1value1param2value2)
- [--vpp-deband \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-deband-param1value1param2value2)
- [--vpp-pad \<int\>,\<int\>,\<int\>,\<int\>](#--vpp-pad-intintintint)
- [--vpp-overlay \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-overlay-param1value1param2value2)
- [--vpp-perf-monitor](#--vpp-perf-monitor)
- [--vpp-nvvfx-model-dir \<string\>](#--vpp-nvvfx-model-dir-string)
- [Other Options](#other-options)
Expand Down Expand Up @@ -1547,9 +1547,9 @@ Vpp filters will be applied in fixed order, regardless of the order in the comma
- [--vpp-edgelevel](#--vpp-edgelevel-param1value1param2value2)
- [--vpp-warpsharp](#--vpp-warpsharp-param1value1param2value2)
- [--vpp-tweak](#--vpp-tweak-param1value1param2value2)
- [--vpp-overlay](#--vpp-overlay-param1value1param2value2)
- [--vpp-deband](#--vpp-deband-param1value1param2value2)
- [--vpp-padding](#--vpp-pad-intintintint)
- [--vpp-overlay](#--vpp-overlay-param1value1param2value2)

### --vpp-colorspace [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
Converts colorspace of the video. Available on x64 version.
Expand Down Expand Up @@ -2367,43 +2367,6 @@ Apply color adjustments using curves.
--vpp-curves r="0/0.11 0.42/0.51 1/0.95":g="0/0 0.50/0.48 1/1":b="0/0.22 0.49/0.44 1/0.8"
```
### --vpp-overlay [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
Overlay image on top of base video.
- **Parameters**
- file=&lt;string&gt;
source file path of the image.
When video is used for file, video framerate should be equal to base video file.
- pos=&lt;int&gt;x&lt;int&gt;
position to add image.
- size=&lt;int&gt;x&lt;int&gt;
size of image.
- alpha=&lt;float&gt; (default: 1.0 (0.0 - 1.0))
alpha value of overlay.
- alpha_mode=&lt;string&gt;
- override ... set value of alpha
- mul ... multiple original value
- lumakey ... set alpha depending on luma
- lumakey_threshold=&lt;float&gt; (default: 0.0 (dark: 0.0 - 1.0 :bright))
luma used for tranparency.
- lumakey_tolerance=&lt;float&gt; (default: 0.1 (0.0 - 1.0))
set luma range to be keyed out.
- lumakey_softness=&lt;float&gt; (default: 0.0 (0.0 - 1.0))
set the range of softness for lumakey.
- Example:
```
--vpp-overlay file=logo.png,pos=1620x780,size=300x300
--vpp-overlay file=logo.mp4,pos=0x800,alpha_mode=lumakey,lumakey_threshold=0.0,lumakey_tolerance=0.1
```
### --vpp-deband [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
- **Parameters**
Expand Down Expand Up @@ -2450,6 +2413,43 @@ Overlay image on top of base video.
### --vpp-pad &lt;int&gt;,&lt;int&gt;,&lt;int&gt;,&lt;int&gt;
add padding to left,top,right,bottom (in pixels)
### --vpp-overlay [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
Overlay image on top of base video.
- **Parameters**
- file=&lt;string&gt;
source file path of the image.
When video is used for file, video framerate should be equal to base video file.
- pos=&lt;int&gt;x&lt;int&gt;
position to add image.
- size=&lt;int&gt;x&lt;int&gt;
size of image.
- alpha=&lt;float&gt; (default: 1.0 (0.0 - 1.0))
alpha value of overlay.
- alpha_mode=&lt;string&gt;
- override ... set value of alpha
- mul ... multiple original value
- lumakey ... set alpha depending on luma
- lumakey_threshold=&lt;float&gt; (default: 0.0 (dark: 0.0 - 1.0 :bright))
luma used for tranparency.
- lumakey_tolerance=&lt;float&gt; (default: 0.1 (0.0 - 1.0))
set luma range to be keyed out.
- lumakey_softness=&lt;float&gt; (default: 0.0 (0.0 - 1.0))
set the range of softness for lumakey.
- Example:
```
--vpp-overlay file=logo.png,pos=1620x780,size=300x300
--vpp-overlay file=logo.mp4,pos=0x800,alpha_mode=lumakey,lumakey_threshold=0.0,lumakey_tolerance=0.1
```
### --vpp-perf-monitor
Monitor the performance of each vpp filter, and output the average per frame processing time of the applied filter(s). Note that the overall encoding performance may slightly be harmed.
Expand Down
78 changes: 38 additions & 40 deletions NVEncC_Options.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,9 @@
- [--vpp-warpsharp \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-warpsharp-param1value1param2value2)
- [--vpp-curves \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-curves-param1value1param2value2)
- [--vpp-tweak \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-tweak-param1value1param2value2)
- [--vpp-overlay \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-overlay-param1value1param2value2)
- [--vpp-deband \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-deband-param1value1param2value2)
- [--vpp-pad \<int\>,\<int\>,\<int\>,\<int\>](#--vpp-pad-intintintint)
- [--vpp-overlay \[\<param1\>=\<value1\>\]\[,\<param2\>=\<value2\>\],...](#--vpp-overlay-param1value1param2value2)
- [--vpp-perf-monitor](#--vpp-perf-monitor)
- [--vpp-nvvfx-model-dir \<string\>](#--vpp-nvvfx-model-dir-string)
- [制御系のオプション](#制御系のオプション)
Expand Down Expand Up @@ -1543,9 +1543,9 @@ vppフィルタの適用順は固定で、コマンドラインの順序によ
- [--vpp-warpsharp](#--vpp-warpsharp-param1value1param2value2)
- [--vpp-curves](#--vpp-curves-param1value1param2value2)
- [--vpp-tweak](#--vpp-tweak-param1value1param2value2)
- [--vpp-overlay](#--vpp-overlay-param1value1param2value2)
- [--vpp-deband](#--vpp-deband-param1value1param2value2)
- [--vpp-padding](#--vpp-pad-intintintint)
- [--vpp-overlay](#--vpp-overlay-param1value1param2value2)

### --vpp-colorspace [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
色空間変換を行う。x64版のみ使用可能。
Expand Down Expand Up @@ -2423,44 +2423,6 @@ unsharpフィルタ。輪郭・ディテール強調用のフィルタ。
--vpp-tweak brightness=0.1,contrast=1.5,gamma=0.75
```
### --vpp-overlay [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
指定の画像を動画上に焼き込む。
- **パラメータ**
- file=&lt;string&gt;
焼き込む画像のパス。
- pos=&lt;int&gt;x&lt;int&gt;
焼き込み位置。
- size=&lt;int&gt;x&lt;int&gt;
焼き込む画像のサイズ。未指定の場合は、リサイズせず焼き込みを行う。
- alpha=&lt;float&gt; (デフォルト: 1.0 (0.0 - 1.0))
焼き込み際の不透明度。
- alpha_mode=&lt;string&gt;
- override ... alphaで指定の不透明度で上書きする。 (デフォルト)
- mul ... alphaで指定した不透明度を乗算する。
- lumakey ... 指定の輝度値で不透明度を設定する。
- lumakey_threshold=&lt;float&gt; (デフォルト: 0.0 (暗い: 0.0 - 1.0 :明るい))
透明色にする輝度値。
- lumakey_tolerance=&lt;float&gt; (デフォルト: 0.1 (0.0 - 1.0))
透明色にする輝度値の範囲の指定。
- lumakey_softness=&lt;float&gt; (デフォルト: 0.0 (0.0 - 1.0))
toleranceに対する透明度の変化の具合を指定。
- loop=&lt;bool&gt; (default=false)
- 使用例
```
--vpp-overlay file=logo.png,pos=1620x780,size=300x300
--vpp-overlay file=logo.mp4,pos=0x800,alpha_mode=lumakey,lumakey_threshold=0.0,lumakey_tolerance=0.1
```
### --vpp-deband [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
- **パラメータ**
Expand Down Expand Up @@ -2508,7 +2470,43 @@ unsharpフィルタ。輪郭・ディテール強調用のフィルタ。
### --vpp-pad &lt;int&gt;,&lt;int&gt;,&lt;int&gt;,&lt;int&gt;
指定のピクセル数(偶数)分のパディングを行う。左、上、右、下の順にピクセル数で指定する。
### --vpp-overlay [&lt;param1&gt;=&lt;value1&gt;][,&lt;param2&gt;=&lt;value2&gt;],...
指定の画像を動画上に焼き込む。
- **パラメータ**
- file=&lt;string&gt;
焼き込む画像のパス。
- pos=&lt;int&gt;x&lt;int&gt;
焼き込み位置。
- size=&lt;int&gt;x&lt;int&gt;
焼き込む画像のサイズ。未指定の場合は、リサイズせず焼き込みを行う。
- alpha=&lt;float&gt; (デフォルト: 1.0 (0.0 - 1.0))
焼き込み際の不透明度。
- alpha_mode=&lt;string&gt;
- override ... alphaで指定の不透明度で上書きする。 (デフォルト)
- mul ... alphaで指定した不透明度を乗算する。
- lumakey ... 指定の輝度値で不透明度を設定する。
- lumakey_threshold=&lt;float&gt; (デフォルト: 0.0 (暗い: 0.0 - 1.0 :明るい))
透明色にする輝度値。
- lumakey_tolerance=&lt;float&gt; (デフォルト: 0.1 (0.0 - 1.0))
透明色にする輝度値の範囲の指定。
- lumakey_softness=&lt;float&gt; (デフォルト: 0.0 (0.0 - 1.0))
toleranceに対する透明度の変化の具合を指定。
- loop=&lt;bool&gt; (default=false)
- 使用例
```
--vpp-overlay file=logo.png,pos=1620x780,size=300x300
--vpp-overlay file=logo.mp4,pos=0x800,alpha_mode=lumakey,lumakey_threshold=0.0,lumakey_tolerance=0.1
```
### --vpp-perf-monitor
各フィルタのパフォーマンス測定を行い、適用したフィルタの1フレームあたりの平均処理時間を最後に出力する。全体のエンコード速度がやや遅くなることがある点に注意。
Expand Down
50 changes: 25 additions & 25 deletions NVEncCore/NVEncCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2843,31 +2843,6 @@ RGY_ERR NVEncCore::InitFilters(const InEncodeVideoParam *inputParam) {
inputFrame = param->frameOut;
m_encFps = param->baseFps;
}
//overlay
for (const auto& overlay : inputParam->vpp.overlay) {
if (overlay.enable) {
unique_ptr<NVEncFilter> filter(new NVEncFilterOverlay());
shared_ptr<NVEncFilterParamOverlay> param(new NVEncFilterParamOverlay());
param->overlay = overlay;
param->threadPrm = inputParam->ctrl.threadParams.get(RGYThreadType::CSP);
param->frameIn = inputFrame;
param->frameOut = inputFrame;
param->baseFps = m_encFps;
param->bOutOverwrite = false;
NVEncCtxAutoLock(cxtlock(m_dev->vidCtxLock()));
auto sts = filter->init(param, m_pNVLog);
if (sts != RGY_ERR_NONE) {
return sts;
}
//フィルタチェーンに追加
m_vpFilters.push_back(std::move(filter));
//パラメータ情報を更新
m_pLastFilterParam = std::dynamic_pointer_cast<NVEncFilterParam>(param);
//入力フレーム情報を更新
inputFrame = param->frameOut;
m_encFps = param->baseFps;
}
}
//deband
if (inputParam->vpp.deband.enable) {
unique_ptr<NVEncFilter> filter(new NVEncFilterDeband());
Expand Down Expand Up @@ -2915,6 +2890,31 @@ RGY_ERR NVEncCore::InitFilters(const InEncodeVideoParam *inputParam) {
inputFrame = param->frameOut;
m_encFps = param->baseFps;
}
//overlay
for (const auto& overlay : inputParam->vpp.overlay) {
if (overlay.enable) {
unique_ptr<NVEncFilter> filter(new NVEncFilterOverlay());
shared_ptr<NVEncFilterParamOverlay> param(new NVEncFilterParamOverlay());
param->overlay = overlay;
param->threadPrm = inputParam->ctrl.threadParams.get(RGYThreadType::CSP);
param->frameIn = inputFrame;
param->frameOut = inputFrame;
param->baseFps = m_encFps;
param->bOutOverwrite = false;
NVEncCtxAutoLock(cxtlock(m_dev->vidCtxLock()));
auto sts = filter->init(param, m_pNVLog);
if (sts != RGY_ERR_NONE) {
return sts;
}
//フィルタチェーンに追加
m_vpFilters.push_back(std::move(filter));
//パラメータ情報を更新
m_pLastFilterParam = std::dynamic_pointer_cast<NVEncFilterParam>(param);
//入力フレーム情報を更新
inputFrame = param->frameOut;
m_encFps = param->baseFps;
}
}
}
//最後のフィルタ
{
Expand Down
Loading

0 comments on commit aaeb569

Please sign in to comment.