From 9962829885703c9a6f4587e8e2266c8bf0250d8e Mon Sep 17 00:00:00 2001 From: dijunkun Date: Mon, 20 May 2024 10:43:00 +0800 Subject: [PATCH] Fix ARGB to NV12 error caused by uv stride --- .../windows/screen_capturer_wgc.cpp | 36 ++++--------------- 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/src/screen_capturer/windows/screen_capturer_wgc.cpp b/src/screen_capturer/windows/screen_capturer_wgc.cpp index e8829c1..a79a04b 100644 --- a/src/screen_capturer/windows/screen_capturer_wgc.cpp +++ b/src/screen_capturer/windows/screen_capturer_wgc.cpp @@ -184,40 +184,16 @@ void ScreenCapturerWgc::OnFrame(const WgcSession::wgc_session_frame &frame) { int width = 1280; int height = 720; - // libyuv::ARGBToI420(frame.data, frame.width * 4, yuv420_frame_, - // frame.width, - // yuv420_frame_ + frame.width * frame.height, - // frame.width / 2, - // yuv420_frame_ + frame.width * frame.height * 5 / 4, - // frame.width / 2, frame.width, frame.height); - - // libyuv::I420Scale( - // (const uint8_t *)yuv420_frame_, frame.width, - // (const uint8_t *)(yuv420_frame_ + frame.width * frame.height), - // frame.width / 2, - // (const uint8_t *)(yuv420_frame_ + frame.width * frame.height * 5 / - // 4), frame.width / 2, frame.width, frame.height, (uint8_t - // *)yuv420_frame_, width, (uint8_t *)(yuv420_frame_ + width * height), - // width / 2, (uint8_t *)(yuv420_frame_ + width * height * 5 / 4), width - // / 2, width, height, libyuv::FilterMode::kFilterLinear); - - // libyuv::I420ToNV12( - // (const uint8_t *)yuv420_frame_, width, - // (const uint8_t *)(yuv420_frame_ + width * height), width / 2, - // (const uint8_t *)(yuv420_frame_ + width * height * 5 / 4), width / 2, - // nv12_frame_, width, nv12_frame_ + width * height, width, width, - // height); - - libyuv::ARGBToNV12(frame.data, frame.width * 4, nv12_frame_, frame.width, - nv12_frame_ + frame.width * frame.height, - frame.width / 2, frame.width, frame.height); + libyuv::ARGBToNV12((const uint8_t *)frame.data, frame.width * 4, + (uint8_t *)nv12_frame_, frame.width, + (uint8_t *)(nv12_frame_ + frame.width * frame.height), + frame.width, frame.width, frame.height); libyuv::NV12Scale( (const uint8_t *)nv12_frame_, frame.width, (const uint8_t *)(nv12_frame_ + frame.width * frame.height), - frame.width / 2, frame.width, frame.height, - (uint8_t *)nv12_frame_scaled_, width, - (uint8_t *)(nv12_frame_scaled_ + width * height), width / 2, width, + frame.width, frame.width, frame.height, (uint8_t *)nv12_frame_scaled_, + width, (uint8_t *)(nv12_frame_scaled_ + width * height), width, width, height, libyuv::FilterMode::kFilterLinear); _on_data(nv12_frame_scaled_, width * height * 3 / 2, width, height);