Optimize Encoding Setup & SWS Config

This commit is contained in:
copecone committed 2026-06-14 12:52:58 +09:00
1 parent 389e862ff8
commit ef07cf0414
1 file changed
+8 -7
+8 -7
View File
@@ -300,9 +300,10 @@ namespace ADOFAIRenderer.Util.FFmpeg
// ── 기본 비디오 파라미터 설정 ── // ── 기본 비디오 파라미터 설정 ──
_pCodecContext->width = _settings.Width; _pCodecContext->width = _settings.Width;
_pCodecContext->height = _settings.Height; _pCodecContext->height = _settings.Height;
// libvvenc는 자체적으로 멀티스레딩을 관리하므로 FFmpeg 측 스레딩을 비활성화합니다. // thread_count = 0: FFmpeg이 시스템 CPU 코어 수에 맞춰 자동으로 스레드를 할당합니다.
// 다른 인코더는 thread_count = 0 (자동 설정)을 사용합니다. // libvvenc의 경우에도 FFmpeg 래퍼가 thread_count를 VVenC 내부 스레드 수로 전달하므로,
_pCodecContext->thread_count = encoderName == "libvvenc" ? 1 : 0; // 0(자동)을 설정해야 모든 코어를 활용한 병렬 인코딩이 가능합니다.
_pCodecContext->thread_count = 0;
// ── 픽셀 포맷 설정 ── // ── 픽셀 포맷 설정 ──
// 비디오 인코더는 일반적으로 YUV420P 또는 NV12 형식의 입력을 기대합니다. // 비디오 인코더는 일반적으로 YUV420P 또는 NV12 형식의 입력을 기대합니다.
@@ -672,14 +673,14 @@ namespace ADOFAIRenderer.Util.FFmpeg
// 여기서는 해상도 변환 없이 색공간만 변환하지만, sws_scale은 // 여기서는 해상도 변환 없이 색공간만 변환하지만, sws_scale은
// 동시에 리사이즈도 수행할 수 있습니다. // 동시에 리사이즈도 수행할 수 있습니다.
// //
// SWS_BILINEAR: 바이리니어 보간법. 색공간만 변환할 때는 품질 차이가 미미하며, // SWS_POINT: 최근접 이웃 보간법. 해상도 변환 없이 색공간만 변환하므로
// 속도와 품질의 균형이 좋은 기본 옵션입니다. // 보간 알고리즘이 출력 품질에 영향을 주지 않으며, SWS_POINT가 가장 빠릅니다.
// //
// 참고: https://ffmpeg.org/doxygen/trunk/group__libsws.html // 참고: https://ffmpeg.org/doxygen/trunk/group__libsws.html
_pSwsContext = ffmpeg.sws_getContext( _pSwsContext = ffmpeg.sws_getContext(
_settings.Width, _settings.Height, AVPixelFormat.AV_PIX_FMT_RGBA, _settings.Width, _settings.Height, AVPixelFormat.AV_PIX_FMT_RGBA,
_settings.Width, _settings.Height, _dstPixFmt, _settings.Width, _settings.Height, _dstPixFmt,
(int)SwsFlags.SWS_BILINEAR, null, null, null); (int)SwsFlags.SWS_POINT, null, null, null);
if (_pSwsContext == null) if (_pSwsContext == null)
throw new Exception("소프트웨어 스케일러를 초기화하는 데 실패했습니다."); throw new Exception("소프트웨어 스케일러를 초기화하는 데 실패했습니다.");
@@ -772,7 +773,7 @@ namespace ADOFAIRenderer.Util.FFmpeg
case RateControlMode.CQP: case RateControlMode.CQP:
// 기본값 18: H.264에서 "시각적으로 거의 무손실"에 가까운 품질. // 기본값 18: H.264에서 "시각적으로 거의 무손실"에 가까운 품질.
// 다른 코덱에서도 비슷한 수준의 품질을 제공합니다. // 다른 코덱에서도 비슷한 수준의 품질을 제공합니다.
var qpValue = (_settings.QualityValue >= 0 && _settings.QualityValue <= 51) ? _settings.QualityValue : 18; var qpValue = _settings.QualityValue is >= 0 and <= 51 ? _settings.QualityValue : 18;
if (encoderName.Contains("nvenc")) if (encoderName.Contains("nvenc"))
{ {