SHA256
Refactor FFmpegNativeEncoder
This commit is contained in:
1 file changed
+4
-4
@@ -310,7 +310,7 @@ namespace ADOFAIRenderer.Util.FFmpeg
|
||||
// FFmpeg이 내부적으로 NV12 ↔ QSV 서피스 간 매핑을 처리합니다.
|
||||
//
|
||||
// 참고: https://ffmpeg.org/doxygen/trunk/pixfmt_8h.html
|
||||
AVPixelFormat selectedPixFmt = AVPixelFormat.AV_PIX_FMT_YUV420P;
|
||||
var selectedPixFmt = AVPixelFormat.AV_PIX_FMT_YUV420P;
|
||||
if (encoderName.Contains("qsv"))
|
||||
{
|
||||
selectedPixFmt = AVPixelFormat.AV_PIX_FMT_NV12;
|
||||
@@ -404,7 +404,7 @@ namespace ADOFAIRenderer.Util.FFmpeg
|
||||
if (encoderName.Contains("qsv"))
|
||||
{
|
||||
AVBufferRef* hwDeviceCtx = null;
|
||||
bool qsvReady = false;
|
||||
var qsvReady = false;
|
||||
int err;
|
||||
|
||||
// ── 전략 1: child_device_type=d3d11va 옵션 ──
|
||||
@@ -569,7 +569,7 @@ namespace ADOFAIRenderer.Util.FFmpeg
|
||||
// 성공하면 0 이상을 반환하고, 이후 avcodec_send_frame/avcodec_receive_packet으로
|
||||
// 프레임 인코딩이 가능해집니다.
|
||||
// 참고: https://ffmpeg.org/doxygen/trunk/group__lavc__core.html
|
||||
int openResult = ffmpeg.avcodec_open2(_pCodecContext, pCodec, null);
|
||||
var openResult = ffmpeg.avcodec_open2(_pCodecContext, pCodec, null);
|
||||
if (openResult >= 0)
|
||||
{
|
||||
bool isHardware = encoderName.Contains("nvenc") || encoderName.Contains("amf") || encoderName.Contains("qsv");
|
||||
@@ -788,7 +788,7 @@ namespace ADOFAIRenderer.Util.FFmpeg
|
||||
{
|
||||
if (_disposed || !_isInitialized) return;
|
||||
|
||||
int stride = _settings.Width * 4; // RGBA = 4 bytes per pixel
|
||||
var stride = _settings.Width * 4; // RGBA = 4 bytes per pixel
|
||||
_pSrcFrame->data[0] = buffer + stride * (_settings.Height - 1); // 마지막 행의 시작 주소
|
||||
_pSrcFrame->linesize[0] = -stride; // 음수 stride로 상하 반전
|
||||
_pSrcFrame->width = _settings.Width;
|
||||
|
||||
Reference in new issue
Block a user