perf: 优化GDI捕获的性能

This commit is contained in:
Xu Liu 2021-09-14 20:19:40 +08:00
commit fbbe4a36e9
15 changed files with 103 additions and 152 deletions

View file

@ -34,12 +34,12 @@ bool GraphicsCaptureFrameSource::Initialize() {
if (!winrt::ApiInformation::IsTypePresent(L"Windows.Graphics.Capture.GraphicsCaptureSession")) {
SPDLOG_LOGGER_ERROR(logger, "不存在 GraphicsCaptureSession API");
App::SetErrorMsg(ErrorMessages::WINRT);
App::SetErrorMsg(ErrorMessages::GRAPHICS_CAPTURE);
return false;
}
if (!winrt::GraphicsCaptureSession::IsSupported()) {
SPDLOG_LOGGER_ERROR(logger, "当前不支持 WinRT 捕获");
App::SetErrorMsg(ErrorMessages::WINRT);
App::SetErrorMsg(ErrorMessages::GRAPHICS_CAPTURE);
return false;
}
@ -49,7 +49,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
);
if (FAILED(hr)) {
SPDLOG_LOGGER_ERROR(logger, MakeComErrorMsg("创建 IDirect3DDevice 失败", hr));
App::SetErrorMsg(ErrorMessages::WINRT);
App::SetErrorMsg(ErrorMessages::GRAPHICS_CAPTURE);
return false;
}
@ -57,7 +57,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
auto interop = winrt::get_activation_factory<winrt::GraphicsCaptureItem, IGraphicsCaptureItemInterop>();
if (!interop) {
SPDLOG_LOGGER_ERROR(logger, "获取 IGraphicsCaptureItemInterop 失败");
App::SetErrorMsg(ErrorMessages::WINRT);
App::SetErrorMsg(ErrorMessages::GRAPHICS_CAPTURE);
return false;
}
@ -68,7 +68,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
);
if (FAILED(hr)) {
SPDLOG_LOGGER_ERROR(logger, MakeComErrorMsg("创建 GraphicsCaptureItem 失败", hr));
App::SetErrorMsg(ErrorMessages::WINRT);
App::SetErrorMsg(ErrorMessages::GRAPHICS_CAPTURE);
return false;
}
@ -96,7 +96,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
_captureSession.StartCapture();
} catch (const winrt::hresult_error& e) {
SPDLOG_LOGGER_ERROR(logger, fmt::format("初始化 WinRT 失败:{}", Utils::UTF16ToUTF8(e.message())));
App::SetErrorMsg(ErrorMessages::WINRT);
App::SetErrorMsg(ErrorMessages::GRAPHICS_CAPTURE);
return false;
}