Use common desktop_capturer code on Windows.

This commit is contained in:
John Preston 2021-04-19 19:41:14 +04:00
parent fb49b0ca27
commit 9ff6b57b94
4 changed files with 47 additions and 29 deletions

View file

@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "webrtc/webrtc_media_devices.h"
#include "webrtc/webrtc_create_adm.h"
#include <tgcalls/desktop_capturer/DesktopCaptureSourceManager.h>
#include <tgcalls/group/GroupInstanceCustomImpl.h>
#include <tgcalls/VideoCaptureInterface.h>
#include <tgcalls/StaticThreads.h>
@ -409,8 +410,14 @@ void GroupCall::switchToScreenSharing() {
if (isScreenSharing()) {
return;
}
_videoDeviceId = "desktop_capturer_screen_0";
_videoCapture->switchToDevice(_videoDeviceId.toStdString());
auto manager = tgcalls::DesktopCaptureSourceManager(
tgcalls::DesktopCaptureType::Screen);
const auto sources = manager.sources();
if (!sources.empty()) {
const auto key = sources.front().deviceIdKey();
_videoDeviceId = QString::fromStdString(key);
_videoCapture->switchToDevice(_videoDeviceId.toStdString());
}
}
void GroupCall::setScheduledDate(TimeId date) {

View file

@ -12,6 +12,28 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <VersionHelpers.h>
#include <QtCore/QSysInfo>
#include <d3d11.h>
HRESULT WINAPI D3D11CreateDevice(
_In_opt_ IDXGIAdapter* pAdapter,
D3D_DRIVER_TYPE DriverType,
HMODULE Software,
UINT Flags,
_In_reads_opt_(FeatureLevels) CONST D3D_FEATURE_LEVEL* pFeatureLevels,
UINT FeatureLevels,
UINT SDKVersion,
_COM_Outptr_opt_ ID3D11Device** ppDevice,
_Out_opt_ D3D_FEATURE_LEVEL* pFeatureLevel,
_COM_Outptr_opt_ ID3D11DeviceContext** ppImmediateContext) {
return S_FALSE;
}
HRESULT WINAPI CreateDXGIFactory1(
REFIID riid,
_COM_Outptr_ void **ppFactory) {
return S_FALSE;
}
namespace Platform {
namespace Dlls {

@ -1 +1 @@
Subproject commit 01c03d7b4cfd7c02c79bab32cc2e688316d1a450
Subproject commit 0f608993f7a5c9af093f6a7bf21c3b4cd0735ecc

View file

@ -58,15 +58,11 @@ PRIVATE
# Desktop capturer
desktop_capturer/DesktopCaptureSource.h
desktop_capturer/DesktopCaptureSource.mm
desktop_capturer/DesktopCaptureSource.cpp
desktop_capturer/DesktopCaptureSourceHelper.h
desktop_capturer/DesktopCaptureSourceHelper.mm
desktop_capturer/DesktopCaptureSourceHelper.cpp
desktop_capturer/DesktopCaptureSourceManager.h
desktop_capturer/DesktopCaptureSourceManager.mm
desktop_capturer/DesktopCaptureSourceView.h
desktop_capturer/DesktopCaptureSourceView.mm
desktop_capturer/DesktopSharingCapturer.h
desktop_capturer/DesktopSharingCapturer.mm
desktop_capturer/DesktopCaptureSourceManager.cpp
# Group calls
group/GroupInstanceCustomImpl.cpp
@ -91,6 +87,10 @@ PRIVATE
# iOS / macOS
platform/darwin/DarwinInterface.h
platform/darwin/DarwinInterface.mm
platform/darwin/DesktopCaptureSourceView.h
platform/darwin/DesktopCaptureSourceView.mm
platform/darwin/DesktopSharingCapturer.h
platform/darwin/DesktopSharingCapturer.mm
platform/darwin/GLVideoView.h
platform/darwin/GLVideoView.mm
platform/darwin/GLVideoViewMac.h
@ -123,8 +123,6 @@ PRIVATE
# POSIX
# Teleram Desktop
platform/tdesktop/DesktopCapturer.cpp
platform/tdesktop/DesktopCapturer.h
platform/tdesktop/DesktopInterface.cpp
platform/tdesktop/DesktopInterface.h
platform/tdesktop/VideoCapturerInterfaceImpl.cpp
@ -167,6 +165,10 @@ elseif (APPLE)
WEBRTC_MAC
)
remove_target_sources(lib_tgcalls ${tgcalls_loc}
platform/darwin/DesktopCaptureSourceView.h
platform/darwin/DesktopCaptureSourceView.mm
platform/darwin/DesktopSharingCapturer.h
platform/darwin/DesktopSharingCapturer.mm
platform/darwin/GLVideoView.h
platform/darwin/GLVideoView.mm
platform/darwin/GLVideoViewMac.h
@ -179,10 +181,12 @@ elseif (APPLE)
platform/darwin/VideoMetalViewMac.mm
platform/tdesktop/DesktopInterface.cpp
platform/tdesktop/DesktopInterface.h
platform/tdesktop/VideoCapturerTrackSource.cpp
platform/tdesktop/VideoCapturerTrackSource.h
platform/tdesktop/VideoCapturerInterfaceImpl.cpp
platform/tdesktop/VideoCapturerInterfaceImpl.h
platform/tdesktop/VideoCapturerTrackSource.cpp
platform/tdesktop/VideoCapturerTrackSource.h
platform/tdesktop/VideoCameraCapturer.cpp
platform/tdesktop/VideoCameraCapturer.h
)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_compile_definitions(lib_tgcalls
@ -191,22 +195,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
)
endif()
if (NOT APPLE)
remove_target_sources(lib_tgcalls ${tgcalls_loc}
desktop_capturer/DesktopCaptureSource.h
desktop_capturer/DesktopCaptureSource.mm
desktop_capturer/DesktopCaptureSourceHelper.h
desktop_capturer/DesktopCaptureSourceHelper.mm
desktop_capturer/DesktopCaptureSourceManager.h
desktop_capturer/DesktopCaptureSourceManager.mm
desktop_capturer/DesktopSharingCapturer.h
desktop_capturer/DesktopSharingCapturer.mm
)
endif()
remove_target_sources(lib_tgcalls ${tgcalls_loc}
desktop_capturer/DesktopCaptureSourceView.h
desktop_capturer/DesktopCaptureSourceView.mm
platform/android/AndroidContext.cpp
platform/android/AndroidContext.h
platform/android/AndroidInterface.cpp