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_media_devices.h"
#include "webrtc/webrtc_create_adm.h" #include "webrtc/webrtc_create_adm.h"
#include <tgcalls/desktop_capturer/DesktopCaptureSourceManager.h>
#include <tgcalls/group/GroupInstanceCustomImpl.h> #include <tgcalls/group/GroupInstanceCustomImpl.h>
#include <tgcalls/VideoCaptureInterface.h> #include <tgcalls/VideoCaptureInterface.h>
#include <tgcalls/StaticThreads.h> #include <tgcalls/StaticThreads.h>
@ -409,8 +410,14 @@ void GroupCall::switchToScreenSharing() {
if (isScreenSharing()) { if (isScreenSharing()) {
return; return;
} }
_videoDeviceId = "desktop_capturer_screen_0"; auto manager = tgcalls::DesktopCaptureSourceManager(
_videoCapture->switchToDevice(_videoDeviceId.toStdString()); 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) { void GroupCall::setScheduledDate(TimeId date) {

View file

@ -12,6 +12,28 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <VersionHelpers.h> #include <VersionHelpers.h>
#include <QtCore/QSysInfo> #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 Platform {
namespace Dlls { namespace Dlls {

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

View file

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