diff --git a/QSVEnc/QSVEnc.en.lng b/QSVEnc/QSVEnc.en.lng index 5c98f04d..552c0bd5 100644 --- a/QSVEnc/QSVEnc.en.lng +++ b/QSVEnc/QSVEnc.en.lng @@ -543,6 +543,12 @@ AuofcgLBVppDenoiseSmoothQuality=Quality AuofcgLBVppDenoiseDctStep=step AuofcgLBVppDenoiseDctSigma=sigma AuofcgLBVppDenoiseDctBlockSize=block size +AuofcgLBVppDenoiseFFT3DSigma=sigma +AuofcgLBVppDenoiseFFT3DAmount=amount +AuofcgLBVppDenoiseFFT3DBlockSize=block size +AuofcgLBVppDenoiseFFT3DOverlap=overlap +AuofcgLBVppDenoiseFFT3DTemporal=temporal +AuofcgLBVppDenoiseFFT3DPrecision=precision AuofcgLBVppDenoiseKnnThreshold=Threshold AuofcgLBVppDenoiseKnnStrength=Strength AuofcgLBVppDenoiseKnnRadius=Radius @@ -839,6 +845,12 @@ AuofrmTTfcgNUVppDenoiseSmoothQP=Strength of the filter.\nLarger value will resul AuofrmTTfcgCXVppDenoiseDctStep=Quality of the filter.\nSmaller value should result in higher quality but with lower speed. AuofrmTTfcgNUVppDenoiseDctSigma=Strength of the filter.\nLarger value will result stronger denoise but with blurring. AuofrmTTfcgCXVppDenoiseDctBlockSize=Block size. +AuofrmTTfcgNUVppDenoiseFFT3DSigma=Strength of filter. +AuofrmTTfcgNUVppDenoiseFFT3DAmount=Amount of denoising. +AuofrmTTfcgCXVppDenoiseFFT3DBlockSize=Block size of FFT calculation. +AuofrmTTfcgNUVppDenoiseFFT3DOverlap=Overlap size of FFT calculation.\nValue 0.5 or larger recommended to avoid artifacts. +AuofrmTTfcgCXVppDenoiseFFT3DTemporal=Select temporal filtering. +AuofrmTTfcgCXVppDenoiseFFT3DPrecision=Select precision.\n\n- auto\nUse fp16 whenever it is available and will be faster, otherwise use fp32.\n\n- fp16\nForce to use fp16.\n\n- fp32\nForce to use fp32. AuofrmTTfcgNUVppDenoiseKnnRadius=Radius of filter.\nValue bigger will result stronger effect, AuofrmTTfcgNUVppDenoiseKnnStrength=Strength of the filter. AuofrmTTfcgNUVppDenoiseKnnThreshold=Threshold of edge detection. diff --git a/QSVEnc/QSVEnc.ja.lng b/QSVEnc/QSVEnc.ja.lng index 8ea88c69..05bffbbe 100644 --- a/QSVEnc/QSVEnc.ja.lng +++ b/QSVEnc/QSVEnc.ja.lng @@ -541,6 +541,12 @@ AuofcgLBVppDenoiseSmoothQuality=品質 AuofcgLBVppDenoiseDctStep=ステップ AuofcgLBVppDenoiseDctSigma=sigma AuofcgLBVppDenoiseDctBlockSize=ブロックサイズ +AuofcgLBVppDenoiseFFT3DSigma=強度 +AuofcgLBVppDenoiseFFT3DAmount=除去量 +AuofcgLBVppDenoiseFFT3DBlockSize=ブロックサイズ +AuofcgLBVppDenoiseFFT3DOverlap=オーバーラップ +AuofcgLBVppDenoiseFFT3DTemporal=時間方向 +AuofcgLBVppDenoiseFFT3DPrecision=精度 AuofcgLBVppDenoiseKnnThreshold=閾値 AuofcgLBVppDenoiseKnnStrength=強さ AuofcgLBVppDenoiseKnnRadius=半径 @@ -836,6 +842,12 @@ AuofrmTTfcgNUVppDenoiseSmoothQP=フィルタの強さ指定。\n値が大きい AuofrmTTfcgCXVppDenoiseDctStep=処理の品質。\n値が小さいほど高精度だが遅くなります。 AuofrmTTfcgNUVppDenoiseDctSigma=フィルタの強さ指定。\n値が大きいほど強さが増すものの、輪郭がぼける等の副作用も強くなります。 AuofrmTTfcgCXVppDenoiseDctBlockSize=ブロックサイズの指定。 +AuofrmTTfcgNUVppDenoiseFFT3DSigma=フィルタ強度。 +AuofrmTTfcgNUVppDenoiseFFT3DAmount=ノイズ除去量。 +AuofrmTTfcgCXVppDenoiseFFT3DBlockSize=FFTの計算ブロックサイズ。 +AuofrmTTfcgNUVppDenoiseFFT3DOverlap=FFTブロック同士のオーバーラップサイズ。\nアーティファクト発生を防ぐため、0.5以上が推奨。 +AuofrmTTfcgCXVppDenoiseFFT3DTemporal=時間方向のフィルタリングの有無の選択。 +AuofrmTTfcgCXVppDenoiseFFT3DPrecision=演算精度の選択。\n\n- auto\n自動的にfp16/fp32を選択する。\n\n- fp32\n単精度浮動小数点をメインに使って計算する。\n\n- fp16\n半精度浮動小数点をメインに使って計算する。 AuofrmTTfcgNUVppDenoiseKnnRadius=適用半径。\n値が大きいほど効果が強くなる一方、処理が重くなります。 AuofrmTTfcgNUVppDenoiseKnnStrength=フィルタの強さ。\n値が大きいほど効果が強くなります。 AuofrmTTfcgNUVppDenoiseKnnThreshold=エッジ検出の閾値。 diff --git a/QSVEnc/QSVEnc.zh.lng b/QSVEnc/QSVEnc.zh.lng index ad00bb0d..37fe314a 100644 --- a/QSVEnc/QSVEnc.zh.lng +++ b/QSVEnc/QSVEnc.zh.lng @@ -541,13 +541,19 @@ AuofcgLBVppDenoiseSmoothQuality=质量 AuofcgLBVppDenoiseDctStep=步骤 AuofcgLBVppDenoiseDctSigma=sigma AuofcgLBVppDenoiseDctBlockSize=块大小 +AuofcgLBVppDenoiseFFT3DSigma=强度 +AuofcgLBVppDenoiseFFT3DAmount=清除量 +AuofcgLBVppDenoiseFFT3DBlockSize=块大小 +AuofcgLBVppDenoiseFFT3DOverlap=复 +AuofcgLBVppDenoiseFFT3DTemporal=时空隧道 +AuofcgLBVppDenoiseFFT3DPrecision=精确度 AuofcgLBVppDenoiseKnnThreshold=阈值 AuofcgLBVppDenoiseKnnStrength=强度 -AuofcgLBVppDenoiseKnnRadius=半径 -AuofcgLBVppDenoiseNLMeansPatch=パッチサイズ -AuofcgLBVppDenoiseNLMeansSearch=探索範囲 -AuofcgLBVppDenoiseNLMeansSigma=分散(σ) -AuofcgLBVppDenoiseNLMeansH=強度(h) +AuofcgLBVppDenoiseKnnRadius=半长轴 +AuofcgLBVppDenoiseNLMeansPatch=补丁尺寸 +AuofcgLBVppDenoiseNLMeansSearch=搜索区 +AuofcgLBVppDenoiseNLMeansSigma=分权(σ) +AuofcgLBVppDenoiseNLMeansH=强度(h) AuofcgLBVppDenoisePmdThreshold=阈值 AuofcgLBVppDenoisePmdStrength=强度 AuofcgLBVppDenoisePmdApplyCount=次数 @@ -570,10 +576,10 @@ AuofcgCBVppAfsShift=场移位 AuofcgLBVppAfsAnalyze=去Lv AuofcgLBVppAfsMethodSwitch=切换点 AuofcgLBVppYadifMode=模式 -AuofcgCBVppDecombFull=全フレーム解除 -AuofcgCBVppDecombBlend=ブレンド -AuofcgLBVppDecombThreshold=判定閾値 -AuofcgLBVppDecombDthreshold=解除閾値 +AuofcgCBVppDecombFull=吊起所有框架 +AuofcgCBVppDecombBlend=混合物 +AuofcgLBVppDecombThreshold=决定阈值 +AuofcgLBVppDecombDthreshold=释放阈值 AuofcgLBVppNnediErrorType=错误类型 AuofcgLBVppNnediPrescreen=预筛选 AuofcgLBVppNnediPrec=prec @@ -836,13 +842,19 @@ AuofrmTTfcgNUVppDenoiseSmoothQP=制定滤波器强度。\n该值越大,效果 AuofrmTTfcgCXVppDenoiseDctStep=处理质量。\n该值越小,精度越高,但速度相对缓慢。 AuofrmTTfcgNUVppDenoiseDctSigma=制定滤波器强度。\n该值越大,效果越强,但边缘模糊等副作用也相对增强。 AuofrmTTfcgCXVppDenoiseDctBlockSize=区块大小。 +AuofrmTTfcgNUVppDenoiseFFT3DSigma=过滤强度。 +AuofrmTTfcgNUVppDenoiseFFT3DAmount=噪声抑制。 +AuofrmTTfcgCXVppDenoiseFFT3DBlockSize=FFT 的计算块大小。 +AuofrmTTfcgNUVppDenoiseFFT3DOverlap=FFT 块之间的重叠大小。 \n建议使用 0.5 或更大,以防止产生Јn 伪影。 +AuofrmTTfcgCXVppDenoiseFFT3DTemporal=在时间方向上选择有/无滤波。 +AuofrmTTfcgCXVppDenoiseFFT3DPrecision=选择运算精度。\n\n- auto\n自动选择fp16/fp32。\n\n- fp16\n主要使用半精度浮点进行计算。某些环境下,速度很快。\n\n- fp32\n使用单精度浮点计算。 AuofrmTTfcgNUVppDenoiseKnnRadius=应用半径。\n该值越大,效果越强,但运算量也相对提升。 AuofrmTTfcgNUVppDenoiseKnnStrength=滤波器强度。\n该值越大,效果越强。 AuofrmTTfcgNUVppDenoiseKnnThreshold=边缘检测阈值。 -AuofrmTTfcgCXVppDenoiseNLMeansPatch=フィルタのパッチサイズ。 -AuofrmTTfcgCXVppDenoiseNLMeansSearch=フィルタの探索範囲。 -AuofrmTTfcgNUVppDenoiseNLMeansSigma=ノイズの分散。 より大きな値にするとより強くノイズ除去を行います。 -AuofrmTTfcgNUVppDenoiseNLMeansH=パラメータ。 値を大きくすると重みがより均一になります(ノイズ除去が強くなります)。 +AuofrmTTfcgCXVppDenoiseNLMeansPatch=滤波片尺寸。 +AuofrmTTfcgCXVppDenoiseNLMeansSearch=筛选搜索范围。 +AuofrmTTfcgNUVppDenoiseNLMeansSigma=噪音分散。\n数值越大,噪声抑制越强。 +AuofrmTTfcgNUVppDenoiseNLMeansH=参数。\n增加该值会使权重更加均匀\n(噪声抑制能力更强)。 AuofrmTTfcgCXVppDetailEnhance=选择边缘增强滤波器。 AuofrmTTfcgNUVppWarpsharpBlur=执行模糊处理的次数。\n该值越大,滤波器强度越弱。 AuofrmTTfcgNUVppWarpsharpThreshold=边缘检测阈值。\n该值越大,滤波器强度越强。 @@ -889,10 +901,10 @@ AuofrmTTfcgCBVppAfsDrop=稀疏化由场移位引起的显示时间短于一帧 AuofrmTTfcgCBVppAfsSmooth=启用平滑化。 AuofrmTTfcgCBVppAfsTune=用于确认条纹和运动判定结果。 AuofrmTTfcgCXVppYadifMode=- normal: 在不改变帧率的情况下去隔行。\n- bob: 60fps化。 -AuofrmTTfcgCBVppDecombFull=deinterlace all frames. -AuofrmTTfcgCBVppDecombBlend=blend rather than interpolate. -AuofrmTTfcgNUVppDecombThreshold=threshold for combed frame detection. -AuofrmTTfcgNUVppDecombDthreshold=threshold for deinterlacing frames detected as combed. +AuofrmTTfcgCBVppDecombFull=对所有帧进行去隔行扫描。 +AuofrmTTfcgCBVppDecombBlend=混合,而不是插值。 +AuofrmTTfcgNUVppDecombThreshold=梳理帧检测阈值。 +AuofrmTTfcgNUVppDecombDthreshold=检测到梳齿的去隔行扫描帧的阈值。 AuofrmTTfcgCXVppNnediNns=神经网络中的神经元数。该值越大,质量越高。 AuofrmTTfcgCXVppNnediNsize=神经网络参考的邻域块大小。 AuofrmTTfcgCXVppNnediQual=设定质量。\n- fast\n用单神经网络输出合成图像。\n\n- slow\n将fast的神经网络输出与其他神经网络输出混合来提高质量。 diff --git a/QSVEnc/QSVEnc_readme.txt b/QSVEnc/QSVEnc_readme.txt index 67493ebf..ebab7a3a 100644 --- a/QSVEnc/QSVEnc_readme.txt +++ b/QSVEnc/QSVEnc_readme.txt @@ -313,6 +313,9 @@ API v1.1 … Intel Media SDK v2.0 【どうでもいいメモ】 +2024.06.08 (7.66) +- 新たなノイズ除去フィルタを追加。(--vpp-fft3d) + 2024.05.24 (7.65) - 新たなインタレ解除フィルタを追加。(--vpp-decomb) diff --git a/QSVEnc/frm/auo_mes.cpp b/QSVEnc/frm/auo_mes.cpp index 6d1b4518..eb575026 100644 --- a/QSVEnc/frm/auo_mes.cpp +++ b/QSVEnc/frm/auo_mes.cpp @@ -595,6 +595,12 @@ static const char * AUO_MES_ID_NAME_STR[] = { "AuofcgLBVppDenoiseDctStep", "AuofcgLBVppDenoiseDctSigma", "AuofcgLBVppDenoiseDctBlockSize", +"AuofcgLBVppDenoiseFFT3DSigma", +"AuofcgLBVppDenoiseFFT3DAmount", +"AuofcgLBVppDenoiseFFT3DBlockSize", +"AuofcgLBVppDenoiseFFT3DOverlap", +"AuofcgLBVppDenoiseFFT3DTemporal", +"AuofcgLBVppDenoiseFFT3DPrecision", "AuofcgLBVppDenoiseKnnThreshold", "AuofcgLBVppDenoiseKnnStrength", "AuofcgLBVppDenoiseKnnRadius", @@ -896,6 +902,12 @@ static const char * AUO_MES_ID_NAME_STR[] = { "AuofrmTTfcgCXVppDenoiseDctStep", "AuofrmTTfcgNUVppDenoiseDctSigma", "AuofrmTTfcgCXVppDenoiseDctBlockSize", +"AuofrmTTfcgNUVppDenoiseFFT3DSigma", +"AuofrmTTfcgNUVppDenoiseFFT3DAmount", +"AuofrmTTfcgCXVppDenoiseFFT3DBlockSize", +"AuofrmTTfcgNUVppDenoiseFFT3DOverlap", +"AuofrmTTfcgCXVppDenoiseFFT3DTemporal", +"AuofrmTTfcgCXVppDenoiseFFT3DPrecision", "AuofrmTTfcgNUVppDenoiseKnnRadius", "AuofrmTTfcgNUVppDenoiseKnnStrength", "AuofrmTTfcgNUVppDenoiseKnnThreshold", diff --git a/QSVEnc/frm/auo_mes.h b/QSVEnc/frm/auo_mes.h index c9ad33dd..21b74f40 100644 --- a/QSVEnc/frm/auo_mes.h +++ b/QSVEnc/frm/auo_mes.h @@ -678,6 +678,12 @@ enum AuoMes { AuofcgLBVppDenoiseDctStep, AuofcgLBVppDenoiseDctSigma, AuofcgLBVppDenoiseDctBlockSize, + AuofcgLBVppDenoiseFFT3DSigma, + AuofcgLBVppDenoiseFFT3DAmount, + AuofcgLBVppDenoiseFFT3DBlockSize, + AuofcgLBVppDenoiseFFT3DOverlap, + AuofcgLBVppDenoiseFFT3DTemporal, + AuofcgLBVppDenoiseFFT3DPrecision, AuofcgLBVppDenoiseKnnThreshold, AuofcgLBVppDenoiseKnnStrength, AuofcgLBVppDenoiseKnnRadius, @@ -991,6 +997,12 @@ enum AuoMes { AuofrmTTfcgCXVppDenoiseDctStep, AuofrmTTfcgNUVppDenoiseDctSigma, AuofrmTTfcgCXVppDenoiseDctBlockSize, + AuofrmTTfcgNUVppDenoiseFFT3DSigma, + AuofrmTTfcgNUVppDenoiseFFT3DAmount, + AuofrmTTfcgCXVppDenoiseFFT3DBlockSize, + AuofrmTTfcgNUVppDenoiseFFT3DOverlap, + AuofrmTTfcgCXVppDenoiseFFT3DTemporal, + AuofrmTTfcgCXVppDenoiseFFT3DPrecision, AuofrmTTfcgNUVppDenoiseKnnRadius, AuofrmTTfcgNUVppDenoiseKnnStrength, AuofrmTTfcgNUVppDenoiseKnnThreshold, diff --git a/QSVEnc/frm/frmConfig.cpp b/QSVEnc/frm/frmConfig.cpp index d4fecf4f..e4fb70ad 100644 --- a/QSVEnc/frm/frmConfig.cpp +++ b/QSVEnc/frm/frmConfig.cpp @@ -863,6 +863,9 @@ System::Void frmConfig::InitComboBox() { setComboBox(fcgCXVppDenoiseConv3DMatrix, list_vpp_convolution3d_matrix); setComboBox(fcgCXVppDenoiseNLMeansPatch, list_vpp_nlmeans_block_size); setComboBox(fcgCXVppDenoiseNLMeansSearch, list_vpp_nlmeans_block_size); + setComboBox(fcgCXVppDenoiseFFT3DBlockSize, list_vpp_fft3d_block_size); + setComboBox(fcgCXVppDenoiseFFT3DTemporal, list_vpp_fft3d_temporal_gui); + setComboBox(fcgCXVppDenoiseFFT3DPrecision, list_vpp_fp_prec); setComboBox(fcgCXVppDetailEnhance, list_vpp_detail_enahance); setComboBox(fcgCXVppResizeAlg, list_vpp_resize); @@ -1219,6 +1222,7 @@ System::Void frmConfig::fcgChangeEnabled(System::Object^ sender, System::EventA fcgPNVppDenoisePmd->Visible = (fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("pmd"))); fcgPNVppDenoiseSmooth->Visible = (fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("smooth"))); fcgPNVppDenoiseDct->Visible = (fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("denoise-dct"))); + fcgPNVppDenoiseFFT3D->Visible = (fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("fft3d"))); fcgPNVppDenoiseConv3D->Visible = (fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("convolution3d"))); fcgPNVppDetailEnhanceMFX->Visible = (fcgCXVppDetailEnhance->SelectedIndex == get_cx_index(list_vpp_detail_enahance, _T("detail-enhance"))); fcgPNVppUnsharp->Visible = (fcgCXVppDetailEnhance->SelectedIndex == get_cx_index(list_vpp_detail_enahance, _T("unsharp"))); @@ -1624,6 +1628,12 @@ System::Void frmConfig::LoadLangText() { LOAD_CLI_TEXT(fcgLBVppDenoiseDctStep); LOAD_CLI_TEXT(fcgLBVppDenoiseDctSigma); LOAD_CLI_TEXT(fcgLBVppDenoiseDctBlockSize); + LOAD_CLI_TEXT(fcgLBVppDenoiseFFT3DSigma); + LOAD_CLI_TEXT(fcgLBVppDenoiseFFT3DAmount); + LOAD_CLI_TEXT(fcgLBVppDenoiseFFT3DBlockSize); + LOAD_CLI_TEXT(fcgLBVppDenoiseFFT3DOverlap); + LOAD_CLI_TEXT(fcgLBVppDenoiseFFT3DTemporal); + LOAD_CLI_TEXT(fcgLBVppDenoiseFFT3DPrecision); LOAD_CLI_TEXT(fcgLBVppDenoiseKnnThreshold); LOAD_CLI_TEXT(fcgLBVppDenoiseKnnStrength); LOAD_CLI_TEXT(fcgLBVppDenoiseKnnRadius); @@ -1831,6 +1841,8 @@ System::Void frmConfig::ConfToFrm(CONF_GUIEX *cnf) { denoise_idx = get_cx_index(list_vpp_denoise, _T("smooth")); } else if (prm_qsv.vpp.dct.enable) { denoise_idx = get_cx_index(list_vpp_denoise, _T("denoise-dct")); + } else if (prm_qsv.vpp.fft3d.enable) { + denoise_idx = get_cx_index(list_vpp_denoise, _T("fft3d")); } else if (prm_qsv.vppmfx.denoise.enable) { denoise_idx = get_cx_index(list_vpp_denoise, _T("denoise")); } else if (prm_qsv.vpp.convolution3d.enable) { @@ -1882,6 +1894,13 @@ System::Void frmConfig::ConfToFrm(CONF_GUIEX *cnf) { SetCXIndex(fcgCXVppDenoiseDctStep, get_cx_index(list_vpp_denoise_dct_step_gui, (int)prm_qsv.vpp.dct.step)); SetNUValue(fcgNUVppDenoiseDctSigma, prm_qsv.vpp.dct.sigma); SetCXIndex(fcgCXVppDenoiseDctBlockSize, get_cx_index(list_vpp_denoise_dct_block_size, (int)prm_qsv.vpp.dct.block_size)); + SetNUValue(fcgNUVppDenoiseFFT3DSigma, prm_qsv.vpp.fft3d.sigma); + SetNUValue(fcgNUVppDenoiseFFT3DAmount, prm_qsv.vpp.fft3d.amount); + SetCXIndex(fcgCXVppDenoiseFFT3DBlockSize, get_cx_index(list_vpp_fft3d_block_size, (int)prm_qsv.vpp.fft3d.block_size)); + SetNUValue(fcgNUVppDenoiseFFT3DOverlap, prm_qsv.vpp.fft3d.overlap); + SetCXIndex(fcgCXVppDenoiseFFT3DTemporal, get_cx_index(list_vpp_fft3d_temporal_gui, (int)prm_qsv.vpp.fft3d.temporal)); + SetCXIndex(fcgCXVppDenoiseFFT3DPrecision, get_cx_index(list_vpp_fp_prec, (int)prm_qsv.vpp.fft3d.precision)); + SetCXIndex(fcgCXVppDenoiseConv3DMatrix, get_cx_index(list_vpp_convolution3d_matrix, (int)prm_qsv.vpp.convolution3d.matrix)); SetNUValue(fcgNUVppDenoiseConv3DThreshYSpatial, prm_qsv.vpp.convolution3d.threshYspatial); SetNUValue(fcgNUVppDenoiseConv3DThreshCSpatial, prm_qsv.vpp.convolution3d.threshCspatial); @@ -2129,6 +2148,14 @@ System::String^ frmConfig::FrmToConf(CONF_GUIEX *cnf) { prm_qsv.vpp.dct.sigma = (float)fcgNUVppDenoiseDctSigma->Value; prm_qsv.vpp.dct.block_size = list_vpp_denoise_dct_block_size[fcgCXVppDenoiseDctBlockSize->SelectedIndex].value; + prm_qsv.vpp.fft3d.enable = fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("fft3d")); + prm_qsv.vpp.fft3d.sigma = (float)fcgNUVppDenoiseFFT3DSigma->Value; + prm_qsv.vpp.fft3d.amount = (float)fcgNUVppDenoiseFFT3DAmount->Value; + prm_qsv.vpp.fft3d.block_size = list_vpp_fft3d_block_size[fcgCXVppDenoiseFFT3DBlockSize->SelectedIndex].value; + prm_qsv.vpp.fft3d.overlap = (float)fcgNUVppDenoiseFFT3DOverlap->Value; + prm_qsv.vpp.fft3d.temporal = list_vpp_fft3d_temporal_gui[fcgCXVppDenoiseFFT3DTemporal->SelectedIndex].value; + prm_qsv.vpp.fft3d.precision = (VppFpPrecision)list_vpp_fp_prec[fcgCXVppDenoiseFFT3DPrecision->SelectedIndex].value; + prm_qsv.vppmfx.denoise.enable = fcgCXVppDenoiseMethod->SelectedIndex == get_cx_index(list_vpp_denoise, _T("denoise")); prm_qsv.vppmfx.denoise.strength = (int)fcgNUVppDenoiseMFX->Value; @@ -2554,6 +2581,12 @@ System::Void frmConfig::SetHelpToolTips() { SET_TOOL_TIP_EX(fcgCXVppDenoiseDctStep); SET_TOOL_TIP_EX(fcgNUVppDenoiseDctSigma); SET_TOOL_TIP_EX(fcgCXVppDenoiseDctBlockSize); + SET_TOOL_TIP_EX(fcgNUVppDenoiseFFT3DSigma); + SET_TOOL_TIP_EX(fcgNUVppDenoiseFFT3DAmount); + SET_TOOL_TIP_EX(fcgCXVppDenoiseFFT3DBlockSize); + SET_TOOL_TIP_EX(fcgNUVppDenoiseFFT3DOverlap); + SET_TOOL_TIP_EX(fcgCXVppDenoiseFFT3DTemporal); + SET_TOOL_TIP_EX(fcgCXVppDenoiseFFT3DPrecision); SET_TOOL_TIP_EX(fcgNUVppDenoiseKnnRadius); SET_TOOL_TIP_EX(fcgNUVppDenoiseKnnStrength); SET_TOOL_TIP_EX(fcgNUVppDenoiseKnnThreshold); diff --git a/QSVEnc/frm/frmConfig.h b/QSVEnc/frm/frmConfig.h index d1e5030e..38ee6c7b 100644 --- a/QSVEnc/frm/frmConfig.h +++ b/QSVEnc/frm/frmConfig.h @@ -1263,6 +1263,40 @@ private: System::Windows::Forms::Label^ fcgLBVppDecombDthreshold; private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombDthreshold; private: System::Windows::Forms::Label^ fcgLBVppDecombThreshold; private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; +private: System::Windows::Forms::Panel^ fcgPNVppDenoiseFFT3D; +private: System::Windows::Forms::NumericUpDown^ fcgNUVppDenoiseFFT3DAmount; +private: System::Windows::Forms::Label^ fcgLBVppDenoiseFFT3DOverlap; + + +private: System::Windows::Forms::NumericUpDown^ fcgNUVppDenoiseFFT3DSigma; +private: System::Windows::Forms::ComboBox^ fcgCXVppDenoiseFFT3DTemporal; + + + + +private: System::Windows::Forms::Label^ fcgLBVppDenoiseFFT3DAmount; +private: System::Windows::Forms::Label^ fcgLBVppDenoiseFFT3DBlockSize; + + + +private: System::Windows::Forms::ComboBox^ fcgCXVppDenoiseFFT3DBlockSize; + +private: System::Windows::Forms::Label^ fcgLBVppDenoiseFFT3DSigma; +private: System::Windows::Forms::NumericUpDown^ fcgNUVppDenoiseFFT3DOverlap; +private: System::Windows::Forms::Label^ fcgLBVppDenoiseFFT3DTemporal; + + + + + + +private: System::Windows::Forms::Label^ fcgLBVppDenoiseFFT3DPrecision; + + +private: System::Windows::Forms::ComboBox^ fcgCXVppDenoiseFFT3DPrecision; + + + @@ -1647,6 +1681,19 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcgLBVppDetailEnhanceMFX = (gcnew System::Windows::Forms::Label()); this->fcgNUVppDetailEnhanceMFX = (gcnew System::Windows::Forms::NumericUpDown()); this->fcggroupBoxVppDenoise = (gcnew System::Windows::Forms::GroupBox()); + this->fcgPNVppDenoiseFFT3D = (gcnew System::Windows::Forms::Panel()); + this->fcgLBVppDenoiseFFT3DTemporal = (gcnew System::Windows::Forms::Label()); + this->fcgLBVppDenoiseFFT3DPrecision = (gcnew System::Windows::Forms::Label()); + this->fcgCXVppDenoiseFFT3DPrecision = (gcnew System::Windows::Forms::ComboBox()); + this->fcgNUVppDenoiseFFT3DOverlap = (gcnew System::Windows::Forms::NumericUpDown()); + this->fcgNUVppDenoiseFFT3DAmount = (gcnew System::Windows::Forms::NumericUpDown()); + this->fcgLBVppDenoiseFFT3DOverlap = (gcnew System::Windows::Forms::Label()); + this->fcgNUVppDenoiseFFT3DSigma = (gcnew System::Windows::Forms::NumericUpDown()); + this->fcgCXVppDenoiseFFT3DTemporal = (gcnew System::Windows::Forms::ComboBox()); + this->fcgLBVppDenoiseFFT3DAmount = (gcnew System::Windows::Forms::Label()); + this->fcgLBVppDenoiseFFT3DBlockSize = (gcnew System::Windows::Forms::Label()); + this->fcgCXVppDenoiseFFT3DBlockSize = (gcnew System::Windows::Forms::ComboBox()); + this->fcgLBVppDenoiseFFT3DSigma = (gcnew System::Windows::Forms::Label()); this->fcgPNVppDenoiseNLMeans = (gcnew System::Windows::Forms::Panel()); this->fcgNUVppDenoiseNLMeansH = (gcnew System::Windows::Forms::NumericUpDown()); this->fcgLBVppDenoiseNLMeansH = (gcnew System::Windows::Forms::Label()); @@ -1700,9 +1747,6 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcgNUVppDenoiseKnnStrength = (gcnew System::Windows::Forms::NumericUpDown()); this->fcgNUVppDenoiseKnnRadius = (gcnew System::Windows::Forms::NumericUpDown()); this->fcggroupBoxVppDeinterlace = (gcnew System::Windows::Forms::GroupBox()); - this->fcgLBVppDeinterlace = (gcnew System::Windows::Forms::Label()); - this->fcgCXVppDeinterlace = (gcnew System::Windows::Forms::ComboBox()); - this->fcgPNVppAfs = (gcnew System::Windows::Forms::Panel()); this->fcgPNVppDecomb = (gcnew System::Windows::Forms::Panel()); this->fcgCBVppDecombBlend = (gcnew System::Windows::Forms::CheckBox()); this->fcgCBVppDecombFull = (gcnew System::Windows::Forms::CheckBox()); @@ -1710,6 +1754,9 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcgNUVppDecombDthreshold = (gcnew System::Windows::Forms::NumericUpDown()); this->fcgLBVppDecombThreshold = (gcnew System::Windows::Forms::Label()); this->fcgNUVppDecombThreshold = (gcnew System::Windows::Forms::NumericUpDown()); + this->fcgLBVppDeinterlace = (gcnew System::Windows::Forms::Label()); + this->fcgCXVppDeinterlace = (gcnew System::Windows::Forms::ComboBox()); + this->fcgPNVppAfs = (gcnew System::Windows::Forms::Panel()); this->fcgTBVppAfsThreCMotion = (gcnew System::Windows::Forms::TrackBar()); this->fcgLBVppAfsThreCMotion = (gcnew System::Windows::Forms::Label()); this->fcgTBVppAfsThreYMotion = (gcnew System::Windows::Forms::TrackBar()); @@ -1930,6 +1977,10 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcgPNVppDetailEnhanceMFX->SuspendLayout(); (cli::safe_cast(this->fcgNUVppDetailEnhanceMFX))->BeginInit(); this->fcggroupBoxVppDenoise->SuspendLayout(); + this->fcgPNVppDenoiseFFT3D->SuspendLayout(); + (cli::safe_cast(this->fcgNUVppDenoiseFFT3DOverlap))->BeginInit(); + (cli::safe_cast(this->fcgNUVppDenoiseFFT3DAmount))->BeginInit(); + (cli::safe_cast(this->fcgNUVppDenoiseFFT3DSigma))->BeginInit(); this->fcgPNVppDenoiseNLMeans->SuspendLayout(); (cli::safe_cast(this->fcgNUVppDenoiseNLMeansH))->BeginInit(); (cli::safe_cast(this->fcgNUVppDenoiseNLMeansSigma))->BeginInit(); @@ -1954,10 +2005,10 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; (cli::safe_cast(this->fcgNUVppDenoiseKnnStrength))->BeginInit(); (cli::safe_cast(this->fcgNUVppDenoiseKnnRadius))->BeginInit(); this->fcggroupBoxVppDeinterlace->SuspendLayout(); - this->fcgPNVppAfs->SuspendLayout(); this->fcgPNVppDecomb->SuspendLayout(); (cli::safe_cast(this->fcgNUVppDecombDthreshold))->BeginInit(); (cli::safe_cast(this->fcgNUVppDecombThreshold))->BeginInit(); + this->fcgPNVppAfs->SuspendLayout(); (cli::safe_cast(this->fcgTBVppAfsThreCMotion))->BeginInit(); (cli::safe_cast(this->fcgTBVppAfsThreYMotion))->BeginInit(); (cli::safe_cast(this->fcgTBVppAfsThreDeint))->BeginInit(); @@ -4548,6 +4599,7 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; // // fcggroupBoxVppDenoise // + this->fcggroupBoxVppDenoise->Controls->Add(this->fcgPNVppDenoiseFFT3D); this->fcggroupBoxVppDenoise->Controls->Add(this->fcgPNVppDenoiseNLMeans); this->fcggroupBoxVppDenoise->Controls->Add(this->fcgPNVppDenoiseDct); this->fcggroupBoxVppDenoise->Controls->Add(this->fcgCXVppDenoiseMethod); @@ -4563,6 +4615,148 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcggroupBoxVppDenoise->TabStop = false; this->fcggroupBoxVppDenoise->Text = L"ノイズ除去"; // + // fcgPNVppDenoiseFFT3D + // + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgLBVppDenoiseFFT3DTemporal); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgLBVppDenoiseFFT3DPrecision); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgCXVppDenoiseFFT3DPrecision); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgNUVppDenoiseFFT3DOverlap); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgNUVppDenoiseFFT3DAmount); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgLBVppDenoiseFFT3DOverlap); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgNUVppDenoiseFFT3DSigma); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgCXVppDenoiseFFT3DTemporal); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgLBVppDenoiseFFT3DAmount); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgLBVppDenoiseFFT3DBlockSize); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgCXVppDenoiseFFT3DBlockSize); + this->fcgPNVppDenoiseFFT3D->Controls->Add(this->fcgLBVppDenoiseFFT3DSigma); + this->fcgPNVppDenoiseFFT3D->Location = System::Drawing::Point(3, 42); + this->fcgPNVppDenoiseFFT3D->Name = L"fcgPNVppDenoiseFFT3D"; + this->fcgPNVppDenoiseFFT3D->Size = System::Drawing::Size(310, 92); + this->fcgPNVppDenoiseFFT3D->TabIndex = 72; + // + // fcgLBVppDenoiseFFT3DTemporal + // + this->fcgLBVppDenoiseFFT3DTemporal->AutoSize = true; + this->fcgLBVppDenoiseFFT3DTemporal->Location = System::Drawing::Point(7, 68); + this->fcgLBVppDenoiseFFT3DTemporal->Name = L"fcgLBVppDenoiseFFT3DTemporal"; + this->fcgLBVppDenoiseFFT3DTemporal->Size = System::Drawing::Size(56, 14); + this->fcgLBVppDenoiseFFT3DTemporal->TabIndex = 27; + this->fcgLBVppDenoiseFFT3DTemporal->Text = L"temporal"; + // + // fcgLBVppDenoiseFFT3DPrecision + // + this->fcgLBVppDenoiseFFT3DPrecision->AutoSize = true; + this->fcgLBVppDenoiseFFT3DPrecision->Location = System::Drawing::Point(170, 68); + this->fcgLBVppDenoiseFFT3DPrecision->Name = L"fcgLBVppDenoiseFFT3DPrecision"; + this->fcgLBVppDenoiseFFT3DPrecision->Size = System::Drawing::Size(31, 14); + this->fcgLBVppDenoiseFFT3DPrecision->TabIndex = 26; + this->fcgLBVppDenoiseFFT3DPrecision->Text = L"prec"; + // + // fcgCXVppDenoiseFFT3DPrecision + // + this->fcgCXVppDenoiseFFT3DPrecision->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->fcgCXVppDenoiseFFT3DPrecision->FormattingEnabled = true; + this->fcgCXVppDenoiseFFT3DPrecision->Location = System::Drawing::Point(231, 64); + this->fcgCXVppDenoiseFFT3DPrecision->Name = L"fcgCXVppDenoiseFFT3DPrecision"; + this->fcgCXVppDenoiseFFT3DPrecision->Size = System::Drawing::Size(72, 22); + this->fcgCXVppDenoiseFFT3DPrecision->TabIndex = 25; + this->fcgCXVppDenoiseFFT3DPrecision->Tag = L"reCmd"; + // + // fcgNUVppDenoiseFFT3DOverlap + // + this->fcgNUVppDenoiseFFT3DOverlap->DecimalPlaces = 2; + this->fcgNUVppDenoiseFFT3DOverlap->Increment = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 65536 }); + this->fcgNUVppDenoiseFFT3DOverlap->Location = System::Drawing::Point(231, 37); + this->fcgNUVppDenoiseFFT3DOverlap->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 8, 0, 0, 65536 }); + this->fcgNUVppDenoiseFFT3DOverlap->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 2, 0, 0, 65536 }); + this->fcgNUVppDenoiseFFT3DOverlap->Name = L"fcgNUVppDenoiseFFT3DOverlap"; + this->fcgNUVppDenoiseFFT3DOverlap->Size = System::Drawing::Size(72, 21); + this->fcgNUVppDenoiseFFT3DOverlap->TabIndex = 24; + this->fcgNUVppDenoiseFFT3DOverlap->Tag = L"reCmd"; + this->fcgNUVppDenoiseFFT3DOverlap->TextAlign = System::Windows::Forms::HorizontalAlignment::Right; + this->fcgNUVppDenoiseFFT3DOverlap->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 5, 0, 0, 65536 }); + // + // fcgNUVppDenoiseFFT3DAmount + // + this->fcgNUVppDenoiseFFT3DAmount->DecimalPlaces = 3; + this->fcgNUVppDenoiseFFT3DAmount->Increment = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 196608 }); + this->fcgNUVppDenoiseFFT3DAmount->Location = System::Drawing::Point(231, 10); + this->fcgNUVppDenoiseFFT3DAmount->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); + this->fcgNUVppDenoiseFFT3DAmount->Name = L"fcgNUVppDenoiseFFT3DAmount"; + this->fcgNUVppDenoiseFFT3DAmount->Size = System::Drawing::Size(72, 21); + this->fcgNUVppDenoiseFFT3DAmount->TabIndex = 23; + this->fcgNUVppDenoiseFFT3DAmount->Tag = L"reCmd"; + this->fcgNUVppDenoiseFFT3DAmount->TextAlign = System::Windows::Forms::HorizontalAlignment::Right; + this->fcgNUVppDenoiseFFT3DAmount->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 196608 }); + // + // fcgLBVppDenoiseFFT3DOverlap + // + this->fcgLBVppDenoiseFFT3DOverlap->AutoSize = true; + this->fcgLBVppDenoiseFFT3DOverlap->Location = System::Drawing::Point(170, 40); + this->fcgLBVppDenoiseFFT3DOverlap->Name = L"fcgLBVppDenoiseFFT3DOverlap"; + this->fcgLBVppDenoiseFFT3DOverlap->Size = System::Drawing::Size(47, 14); + this->fcgLBVppDenoiseFFT3DOverlap->TabIndex = 22; + this->fcgLBVppDenoiseFFT3DOverlap->Text = L"overlap"; + // + // fcgNUVppDenoiseFFT3DSigma + // + this->fcgNUVppDenoiseFFT3DSigma->DecimalPlaces = 2; + this->fcgNUVppDenoiseFFT3DSigma->Increment = System::Decimal(gcnew cli::array< System::Int32 >(4) { 5, 0, 0, 65536 }); + this->fcgNUVppDenoiseFFT3DSigma->Location = System::Drawing::Point(74, 10); + this->fcgNUVppDenoiseFFT3DSigma->Name = L"fcgNUVppDenoiseFFT3DSigma"; + this->fcgNUVppDenoiseFFT3DSigma->Size = System::Drawing::Size(72, 21); + this->fcgNUVppDenoiseFFT3DSigma->TabIndex = 21; + this->fcgNUVppDenoiseFFT3DSigma->Tag = L"reCmd"; + this->fcgNUVppDenoiseFFT3DSigma->TextAlign = System::Windows::Forms::HorizontalAlignment::Right; + this->fcgNUVppDenoiseFFT3DSigma->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); + // + // fcgCXVppDenoiseFFT3DTemporal + // + this->fcgCXVppDenoiseFFT3DTemporal->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->fcgCXVppDenoiseFFT3DTemporal->FormattingEnabled = true; + this->fcgCXVppDenoiseFFT3DTemporal->Location = System::Drawing::Point(74, 64); + this->fcgCXVppDenoiseFFT3DTemporal->Name = L"fcgCXVppDenoiseFFT3DTemporal"; + this->fcgCXVppDenoiseFFT3DTemporal->Size = System::Drawing::Size(72, 22); + this->fcgCXVppDenoiseFFT3DTemporal->TabIndex = 20; + this->fcgCXVppDenoiseFFT3DTemporal->Tag = L"reCmd"; + // + // fcgLBVppDenoiseFFT3DAmount + // + this->fcgLBVppDenoiseFFT3DAmount->AutoSize = true; + this->fcgLBVppDenoiseFFT3DAmount->Location = System::Drawing::Point(170, 13); + this->fcgLBVppDenoiseFFT3DAmount->Name = L"fcgLBVppDenoiseFFT3DAmount"; + this->fcgLBVppDenoiseFFT3DAmount->Size = System::Drawing::Size(49, 14); + this->fcgLBVppDenoiseFFT3DAmount->TabIndex = 19; + this->fcgLBVppDenoiseFFT3DAmount->Text = L"amount"; + // + // fcgLBVppDenoiseFFT3DBlockSize + // + this->fcgLBVppDenoiseFFT3DBlockSize->AutoSize = true; + this->fcgLBVppDenoiseFFT3DBlockSize->Location = System::Drawing::Point(7, 40); + this->fcgLBVppDenoiseFFT3DBlockSize->Name = L"fcgLBVppDenoiseFFT3DBlockSize"; + this->fcgLBVppDenoiseFFT3DBlockSize->Size = System::Drawing::Size(36, 14); + this->fcgLBVppDenoiseFFT3DBlockSize->TabIndex = 17; + this->fcgLBVppDenoiseFFT3DBlockSize->Text = L"block"; + // + // fcgCXVppDenoiseFFT3DBlockSize + // + this->fcgCXVppDenoiseFFT3DBlockSize->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->fcgCXVppDenoiseFFT3DBlockSize->FormattingEnabled = true; + this->fcgCXVppDenoiseFFT3DBlockSize->Location = System::Drawing::Point(74, 37); + this->fcgCXVppDenoiseFFT3DBlockSize->Name = L"fcgCXVppDenoiseFFT3DBlockSize"; + this->fcgCXVppDenoiseFFT3DBlockSize->Size = System::Drawing::Size(72, 22); + this->fcgCXVppDenoiseFFT3DBlockSize->TabIndex = 16; + this->fcgCXVppDenoiseFFT3DBlockSize->Tag = L"reCmd"; + // + // fcgLBVppDenoiseFFT3DSigma + // + this->fcgLBVppDenoiseFFT3DSigma->AutoSize = true; + this->fcgLBVppDenoiseFFT3DSigma->Location = System::Drawing::Point(7, 13); + this->fcgLBVppDenoiseFFT3DSigma->Name = L"fcgLBVppDenoiseFFT3DSigma"; + this->fcgLBVppDenoiseFFT3DSigma->Size = System::Drawing::Size(39, 14); + this->fcgLBVppDenoiseFFT3DSigma->TabIndex = 2; + this->fcgLBVppDenoiseFFT3DSigma->Text = L"sigma"; + // // fcgPNVppDenoiseNLMeans // this->fcgPNVppDenoiseNLMeans->Controls->Add(this->fcgNUVppDenoiseNLMeansH); @@ -5129,66 +5323,6 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcggroupBoxVppDeinterlace->TabStop = false; this->fcggroupBoxVppDeinterlace->Text = L"インタレ解除"; // - // fcgLBVppDeinterlace - // - this->fcgLBVppDeinterlace->AutoSize = true; - this->fcgLBVppDeinterlace->Location = System::Drawing::Point(15, 19); - this->fcgLBVppDeinterlace->Name = L"fcgLBVppDeinterlace"; - this->fcgLBVppDeinterlace->Size = System::Drawing::Size(54, 14); - this->fcgLBVppDeinterlace->TabIndex = 0; - this->fcgLBVppDeinterlace->Text = L"解除モード"; - // - // fcgCXVppDeinterlace - // - this->fcgCXVppDeinterlace->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; - this->fcgCXVppDeinterlace->FormattingEnabled = true; - this->fcgCXVppDeinterlace->Location = System::Drawing::Point(87, 15); - this->fcgCXVppDeinterlace->Name = L"fcgCXVppDeinterlace"; - this->fcgCXVppDeinterlace->Size = System::Drawing::Size(164, 22); - this->fcgCXVppDeinterlace->TabIndex = 1; - this->fcgCXVppDeinterlace->Tag = L"reCmd"; - this->fcgCXVppDeinterlace->SelectedIndexChanged += gcnew System::EventHandler(this, &frmConfig::fcgChangeEnabled); - // - // fcgPNVppAfs - // - this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreCMotion); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreCMotion); - this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreYMotion); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreYmotion); - this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreDeint); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreDeint); - this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreShift); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreShift); - this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsCoeffShift); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsCoeffShift); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsRight); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsLeft); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsBottom); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsUp); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsRight); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsLeft); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsBottom); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsUp); - this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsMethodSwitch); - this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfs24fps); - this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsTune); - this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsSmooth); - this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsDrop); - this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsShift); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsAnalyze); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreCMotion); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreShift); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreDeint); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreYMotion); - this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsMethodSwitch); - this->fcgPNVppAfs->Controls->Add(this->fcgCXVppAfsAnalyze); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsCoeffShift); - this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsMethodSwitch); - this->fcgPNVppAfs->Location = System::Drawing::Point(6, 41); - this->fcgPNVppAfs->Name = L"fcgPNVppAfs"; - this->fcgPNVppAfs->Size = System::Drawing::Size(251, 294); - this->fcgPNVppAfs->TabIndex = 10; - // // fcgPNVppDecomb // this->fcgPNVppDecomb->Controls->Add(this->fcgCBVppDecombBlend); @@ -5262,6 +5396,66 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcgNUVppDecombThreshold->Tag = L"reCmd"; this->fcgNUVppDecombThreshold->TextAlign = System::Windows::Forms::HorizontalAlignment::Right; // + // fcgLBVppDeinterlace + // + this->fcgLBVppDeinterlace->AutoSize = true; + this->fcgLBVppDeinterlace->Location = System::Drawing::Point(15, 19); + this->fcgLBVppDeinterlace->Name = L"fcgLBVppDeinterlace"; + this->fcgLBVppDeinterlace->Size = System::Drawing::Size(54, 14); + this->fcgLBVppDeinterlace->TabIndex = 0; + this->fcgLBVppDeinterlace->Text = L"解除モード"; + // + // fcgCXVppDeinterlace + // + this->fcgCXVppDeinterlace->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList; + this->fcgCXVppDeinterlace->FormattingEnabled = true; + this->fcgCXVppDeinterlace->Location = System::Drawing::Point(87, 15); + this->fcgCXVppDeinterlace->Name = L"fcgCXVppDeinterlace"; + this->fcgCXVppDeinterlace->Size = System::Drawing::Size(164, 22); + this->fcgCXVppDeinterlace->TabIndex = 1; + this->fcgCXVppDeinterlace->Tag = L"reCmd"; + this->fcgCXVppDeinterlace->SelectedIndexChanged += gcnew System::EventHandler(this, &frmConfig::fcgChangeEnabled); + // + // fcgPNVppAfs + // + this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreCMotion); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreCMotion); + this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreYMotion); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreYmotion); + this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreDeint); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreDeint); + this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsThreShift); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsThreShift); + this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsCoeffShift); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsCoeffShift); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsRight); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsLeft); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsBottom); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsUp); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsRight); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsLeft); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsBottom); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsUp); + this->fcgPNVppAfs->Controls->Add(this->fcgTBVppAfsMethodSwitch); + this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfs24fps); + this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsTune); + this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsSmooth); + this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsDrop); + this->fcgPNVppAfs->Controls->Add(this->fcgCBVppAfsShift); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsAnalyze); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreCMotion); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreShift); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreDeint); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsThreYMotion); + this->fcgPNVppAfs->Controls->Add(this->fcgLBVppAfsMethodSwitch); + this->fcgPNVppAfs->Controls->Add(this->fcgCXVppAfsAnalyze); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsCoeffShift); + this->fcgPNVppAfs->Controls->Add(this->fcgNUVppAfsMethodSwitch); + this->fcgPNVppAfs->Location = System::Drawing::Point(6, 41); + this->fcgPNVppAfs->Name = L"fcgPNVppAfs"; + this->fcgPNVppAfs->Size = System::Drawing::Size(251, 294); + this->fcgPNVppAfs->TabIndex = 10; + // // fcgTBVppAfsThreCMotion // this->fcgTBVppAfsThreCMotion->AutoSize = false; @@ -7062,6 +7256,11 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; this->fcgPNVppDetailEnhanceMFX->PerformLayout(); (cli::safe_cast(this->fcgNUVppDetailEnhanceMFX))->EndInit(); this->fcggroupBoxVppDenoise->ResumeLayout(false); + this->fcgPNVppDenoiseFFT3D->ResumeLayout(false); + this->fcgPNVppDenoiseFFT3D->PerformLayout(); + (cli::safe_cast(this->fcgNUVppDenoiseFFT3DOverlap))->EndInit(); + (cli::safe_cast(this->fcgNUVppDenoiseFFT3DAmount))->EndInit(); + (cli::safe_cast(this->fcgNUVppDenoiseFFT3DSigma))->EndInit(); this->fcgPNVppDenoiseNLMeans->ResumeLayout(false); this->fcgPNVppDenoiseNLMeans->PerformLayout(); (cli::safe_cast(this->fcgNUVppDenoiseNLMeansH))->EndInit(); @@ -7094,12 +7293,12 @@ private: System::Windows::Forms::NumericUpDown^ fcgNUVppDecombThreshold; (cli::safe_cast(this->fcgNUVppDenoiseKnnRadius))->EndInit(); this->fcggroupBoxVppDeinterlace->ResumeLayout(false); this->fcggroupBoxVppDeinterlace->PerformLayout(); - this->fcgPNVppAfs->ResumeLayout(false); - this->fcgPNVppAfs->PerformLayout(); this->fcgPNVppDecomb->ResumeLayout(false); this->fcgPNVppDecomb->PerformLayout(); (cli::safe_cast(this->fcgNUVppDecombDthreshold))->EndInit(); (cli::safe_cast(this->fcgNUVppDecombThreshold))->EndInit(); + this->fcgPNVppAfs->ResumeLayout(false); + this->fcgPNVppAfs->PerformLayout(); (cli::safe_cast(this->fcgTBVppAfsThreCMotion))->EndInit(); (cli::safe_cast(this->fcgTBVppAfsThreYMotion))->EndInit(); (cli::safe_cast(this->fcgTBVppAfsThreDeint))->EndInit(); diff --git a/QSVEnc/frm/frmConfig_helper.h b/QSVEnc/frm/frmConfig_helper.h index 5ed498ce..4ccfebe1 100644 --- a/QSVEnc/frm/frmConfig_helper.h +++ b/QSVEnc/frm/frmConfig_helper.h @@ -196,6 +196,12 @@ static const ENC_OPTION_STR2 list_vpp_deband_gui[] = { { AUO_MES_UNKNOWN, NULL, 0 } }; +static const ENC_OPTION_STR2 list_vpp_fft3d_temporal_gui[] = { + { AUO_MES_UNKNOWN, L"off", 0 }, + { AUO_MES_UNKNOWN, L"on", 1 }, + { AUO_MES_UNKNOWN, NULL, 0 } +}; + #if ENCODER_QSV static const ENC_OPTION_STR2 list_rotate_angle_ja[] = { { AUO_MES_UNKNOWN, L"0°", MFX_ANGLE_0 }, diff --git a/QSVPipeline/rgy_prm.h b/QSVPipeline/rgy_prm.h index c9e9a505..5727c086 100644 --- a/QSVPipeline/rgy_prm.h +++ b/QSVPipeline/rgy_prm.h @@ -365,6 +365,7 @@ const CX_DESC list_vpp_denoise[] = { { _T("pmd"), 2 }, { _T("denoise-dct"), 8 }, { _T("smooth"), 3 }, + { _T("fft3d"), 10 }, { _T("convolution3d"), 5 }, #if ENCODER_VCEENC { _T("preprocess"), 4 },