mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Make it work
This commit is contained in:
parent
17fd673361
commit
b4823562a2
@ -15,40 +15,124 @@ optimization_flags = select({
|
|||||||
|
|
||||||
enable_x264 = False
|
enable_x264 = False
|
||||||
|
|
||||||
|
sources = glob([
|
||||||
|
"Sources/**/*.m",
|
||||||
|
"Sources/**/*.mm",
|
||||||
|
"Sources/**/*.h",
|
||||||
|
"tgcalls/tgcalls/**/*.h",
|
||||||
|
"tgcalls/tgcalls/**/*.hpp",
|
||||||
|
"tgcalls/tgcalls/**/*.cpp",
|
||||||
|
"tgcalls/tgcalls/**/*.mm",
|
||||||
|
"tgcalls/tgcalls/**/*.m",
|
||||||
|
], exclude = [
|
||||||
|
"tgcalls/tgcalls/legacy/**",
|
||||||
|
"tgcalls/tgcalls/platform/tdesktop/**",
|
||||||
|
"tgcalls/tgcalls/platform/android/**",
|
||||||
|
"tgcalls/tgcalls/platform/windows/**",
|
||||||
|
"tgcalls/tgcalls/platform/uwp/**",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/SQueue*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/macOS/**",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoSampleBufferViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/GLVideoView.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/ScreenCapturer.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/DesktopSharingCapturer.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceView.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/TGCMIODevice.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/TGCMIOCapturer.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoCMIOCapture.*",
|
||||||
|
"tgcalls/tgcalls/desktop_capturer/**",
|
||||||
|
])
|
||||||
|
|
||||||
|
sources = glob([
|
||||||
|
"Sources/**/*.m",
|
||||||
|
"Sources/**/*.mm",
|
||||||
|
"Sources/**/*.h",
|
||||||
|
"tgcalls/tgcalls/**/*.h",
|
||||||
|
"tgcalls/tgcalls/**/*.hpp",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/**/*.cpp",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/**/*.m",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/**/*.mm",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/**/*.cc",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/**/*.c",
|
||||||
|
"tgcalls/tgcalls/third-party/**/*.cpp",
|
||||||
|
"tgcalls/tgcalls/utils/**/*.cpp",
|
||||||
|
], exclude = [
|
||||||
|
"tgcalls/tgcalls/legacy/**",
|
||||||
|
"tgcalls/tgcalls/platform/tdesktop/**",
|
||||||
|
"tgcalls/tgcalls/platform/android/**",
|
||||||
|
"tgcalls/tgcalls/platform/windows/**",
|
||||||
|
"tgcalls/tgcalls/platform/uwp/**",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/SQueue*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/macOS/**",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoSampleBufferViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/GLVideoView.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/ScreenCapturer.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/DesktopSharingCapturer.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceViewMac.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceView.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/TGCMIODevice.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/TGCMIOCapturer.*",
|
||||||
|
"tgcalls/tgcalls/platform/darwin/VideoCMIOCapture.*",
|
||||||
|
"tgcalls/tgcalls/desktop_capturer/**",
|
||||||
|
]) + [
|
||||||
|
"tgcalls/tgcalls/Manager.cpp",
|
||||||
|
"tgcalls/tgcalls/MediaManager.cpp",
|
||||||
|
"tgcalls/tgcalls/AudioDeviceHelper.cpp",
|
||||||
|
"tgcalls/tgcalls/ChannelManager.cpp",
|
||||||
|
"tgcalls/tgcalls/CodecSelectHelper.cpp",
|
||||||
|
"tgcalls/tgcalls/CryptoHelper.cpp",
|
||||||
|
"tgcalls/tgcalls/EncryptedConnection.cpp",
|
||||||
|
"tgcalls/tgcalls/FakeAudioDeviceModule.cpp",
|
||||||
|
"tgcalls/tgcalls/FakeVideoTrackSource.cpp",
|
||||||
|
"tgcalls/tgcalls/FieldTrialsConfig.cpp",
|
||||||
|
"tgcalls/tgcalls/Instance.cpp",
|
||||||
|
"tgcalls/tgcalls/InstanceImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/LogSinkImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/Message.cpp",
|
||||||
|
"tgcalls/tgcalls/NetworkManager.cpp",
|
||||||
|
"tgcalls/tgcalls/SctpDataChannelProviderInterfaceImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/StaticThreads.cpp",
|
||||||
|
"tgcalls/tgcalls/ThreadLocalObject.cpp",
|
||||||
|
"tgcalls/tgcalls/TurnCustomizerImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/VideoCaptureInterface.cpp",
|
||||||
|
"tgcalls/tgcalls/VideoCaptureInterfaceImpl.cpp",
|
||||||
|
|
||||||
|
"tgcalls/tgcalls/group/AudioStreamingPart.cpp",
|
||||||
|
"tgcalls/tgcalls/group/AudioStreamingPartInternal.cpp",
|
||||||
|
"tgcalls/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp",
|
||||||
|
"tgcalls/tgcalls/group/AVIOContextImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/group/GroupInstanceCustomImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/group/GroupJoinPayloadInternal.cpp",
|
||||||
|
"tgcalls/tgcalls/group/GroupNetworkManager.cpp",
|
||||||
|
"tgcalls/tgcalls/group/StreamingMediaContext.cpp",
|
||||||
|
"tgcalls/tgcalls/group/VideoStreamingPart.cpp",
|
||||||
|
|
||||||
|
"tgcalls/tgcalls/v2/ContentNegotiation.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/DirectNetworkingImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/ExternalSignalingConnection.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/InstanceV2Impl.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/InstanceV2ReferenceImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/NativeNetworkingImpl.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/ReflectorPort.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/ReflectorRelayPortFactory.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/Signaling.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/SignalingConnection.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/SignalingEncryption.cpp",
|
||||||
|
"tgcalls/tgcalls/v2/SignalingSctpConnection.cpp",
|
||||||
|
]
|
||||||
|
|
||||||
objc_library(
|
objc_library(
|
||||||
name = "TgVoipWebrtc",
|
name = "TgVoipWebrtc",
|
||||||
enable_modules = True,
|
enable_modules = True,
|
||||||
module_name = "TgVoipWebrtc",
|
module_name = "TgVoipWebrtc",
|
||||||
srcs = glob([
|
srcs = sources,
|
||||||
"Sources/**/*.m",
|
|
||||||
"Sources/**/*.mm",
|
|
||||||
"Sources/**/*.h",
|
|
||||||
"tgcalls/tgcalls/**/*.h",
|
|
||||||
"tgcalls/tgcalls/**/*.hpp",
|
|
||||||
"tgcalls/tgcalls/**/*.cpp",
|
|
||||||
"tgcalls/tgcalls/**/*.mm",
|
|
||||||
"tgcalls/tgcalls/**/*.m",
|
|
||||||
], exclude = [
|
|
||||||
"tgcalls/tgcalls/legacy/**",
|
|
||||||
"tgcalls/tgcalls/platform/tdesktop/**",
|
|
||||||
"tgcalls/tgcalls/platform/android/**",
|
|
||||||
"tgcalls/tgcalls/platform/windows/**",
|
|
||||||
"tgcalls/tgcalls/platform/uwp/**",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/SQueue*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/macOS/**",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/VideoSampleBufferViewMac.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/ScreenCapturer.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/DesktopSharingCapturer.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceViewMac.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceView.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/TGCMIODevice.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/TGCMIOCapturer.*",
|
|
||||||
"tgcalls/tgcalls/platform/darwin/VideoCMIOCapture.*",
|
|
||||||
"tgcalls/tgcalls/desktop_capturer/**",
|
|
||||||
]),
|
|
||||||
hdrs = glob([
|
hdrs = glob([
|
||||||
"PublicHeaders/**/*.h",
|
"PublicHeaders/**/*.h",
|
||||||
]),
|
]),
|
||||||
@ -123,6 +207,7 @@ objc_library(
|
|||||||
"-DWEBRTC_MAC",
|
"-DWEBRTC_MAC",
|
||||||
"-DWEBRTC_POSIX",
|
"-DWEBRTC_POSIX",
|
||||||
"-DRTC_ENABLE_VP9",
|
"-DRTC_ENABLE_VP9",
|
||||||
|
"-DRTC_ENABLE_H265",
|
||||||
"-DTGVOIP_NAMESPACE=tgvoip_webrtc",
|
"-DTGVOIP_NAMESPACE=tgvoip_webrtc",
|
||||||
"-std=c++17",
|
"-std=c++17",
|
||||||
],
|
],
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#import "InstanceImpl.h"
|
#import "InstanceImpl.h"
|
||||||
#import "v2/InstanceV2Impl.h"
|
#import "v2/InstanceV2Impl.h"
|
||||||
#import "v2/InstanceV2ReferenceImpl.h"
|
#import "v2/InstanceV2ReferenceImpl.h"
|
||||||
#import "v2_4_0_0/InstanceV2_4_0_0Impl.h"
|
//#import "v2_4_0_0/InstanceV2_4_0_0Impl.h"
|
||||||
#include "StaticThreads.h"
|
#include "StaticThreads.h"
|
||||||
|
|
||||||
#import "VideoCaptureInterface.h"
|
#import "VideoCaptureInterface.h"
|
||||||
@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
#import "platform/darwin/VideoMetalView.h"
|
#import "platform/darwin/VideoMetalView.h"
|
||||||
#import "platform/darwin/GLVideoView.h"
|
|
||||||
#import "platform/darwin/VideoSampleBufferView.h"
|
#import "platform/darwin/VideoSampleBufferView.h"
|
||||||
#import "platform/darwin/VideoCaptureView.h"
|
#import "platform/darwin/VideoCaptureView.h"
|
||||||
#import "platform/darwin/CustomExternalCapturer.h"
|
#import "platform/darwin/CustomExternalCapturer.h"
|
||||||
@ -281,52 +280,6 @@ private:
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface GLVideoView (VideoViewImpl) <OngoingCallThreadLocalContextWebrtcVideoView, OngoingCallThreadLocalContextWebrtcVideoViewImpl>
|
|
||||||
|
|
||||||
@property (nonatomic, readwrite) OngoingCallVideoOrientationWebrtc orientation;
|
|
||||||
@property (nonatomic, readonly) CGFloat aspect;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation GLVideoView (VideoViewImpl)
|
|
||||||
|
|
||||||
- (OngoingCallVideoOrientationWebrtc)orientation {
|
|
||||||
return (OngoingCallVideoOrientationWebrtc)self.internalOrientation;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (CGFloat)aspect {
|
|
||||||
return self.internalAspect;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setOrientation:(OngoingCallVideoOrientationWebrtc)orientation {
|
|
||||||
[self setInternalOrientation:(int)orientation];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setOnOrientationUpdated:(void (^ _Nullable)(OngoingCallVideoOrientationWebrtc, CGFloat))onOrientationUpdated {
|
|
||||||
if (onOrientationUpdated) {
|
|
||||||
[self internalSetOnOrientationUpdated:^(int value, CGFloat aspect) {
|
|
||||||
onOrientationUpdated((OngoingCallVideoOrientationWebrtc)value, aspect);
|
|
||||||
}];
|
|
||||||
} else {
|
|
||||||
[self internalSetOnOrientationUpdated:nil];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setOnIsMirroredUpdated:(void (^ _Nullable)(bool))onIsMirroredUpdated {
|
|
||||||
if (onIsMirroredUpdated) {
|
|
||||||
[self internalSetOnIsMirroredUpdated:^(bool value) {
|
|
||||||
onIsMirroredUpdated(value);
|
|
||||||
}];
|
|
||||||
} else {
|
|
||||||
[self internalSetOnIsMirroredUpdated:nil];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)updateIsEnabled:(bool)__unused isEnabled {
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface VideoSampleBufferView (VideoViewImpl) <OngoingCallThreadLocalContextWebrtcVideoView, OngoingCallThreadLocalContextWebrtcVideoViewImpl>
|
@interface VideoSampleBufferView (VideoViewImpl) <OngoingCallThreadLocalContextWebrtcVideoView, OngoingCallThreadLocalContextWebrtcVideoViewImpl>
|
||||||
|
|
||||||
@property (nonatomic, readwrite) OngoingCallVideoOrientationWebrtc orientation;
|
@property (nonatomic, readwrite) OngoingCallVideoOrientationWebrtc orientation;
|
||||||
@ -828,54 +781,25 @@ tgcalls::VideoCaptureInterfaceObject *GetVideoCaptureAssumingSameThread(tgcalls:
|
|||||||
}
|
}
|
||||||
std::shared_ptr<tgcalls::VideoCaptureInterface> interface = strongSelf->_interface;
|
std::shared_ptr<tgcalls::VideoCaptureInterface> interface = strongSelf->_interface;
|
||||||
|
|
||||||
/*if (false && requestClone) {
|
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
||||||
VideoSampleBufferView *remoteRenderer = [[VideoSampleBufferView alloc] initWithFrame:CGRectZero];
|
remoteRenderer.videoContentMode = UIViewContentModeScaleAspectFill;
|
||||||
remoteRenderer.videoContentMode = UIViewContentModeScaleAspectFill;
|
|
||||||
|
|
||||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
VideoMetalView *cloneRenderer = nil;
|
||||||
interface->setOutput(sink);
|
if (requestClone) {
|
||||||
|
cloneRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
||||||
VideoSampleBufferView *cloneRenderer = nil;
|
|
||||||
if (requestClone) {
|
|
||||||
cloneRenderer = [[VideoSampleBufferView alloc] initWithFrame:CGRectZero];
|
|
||||||
cloneRenderer.videoContentMode = UIViewContentModeScaleAspectFill;
|
|
||||||
#ifdef WEBRTC_IOS
|
#ifdef WEBRTC_IOS
|
||||||
[remoteRenderer setCloneTarget:cloneRenderer];
|
cloneRenderer.videoContentMode = UIViewContentModeScaleToFill;
|
||||||
#endif
|
[remoteRenderer setClone:cloneRenderer];
|
||||||
}
|
|
||||||
|
|
||||||
completion(remoteRenderer, cloneRenderer);
|
|
||||||
} else */if ([VideoMetalView isSupported]) {
|
|
||||||
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
|
||||||
remoteRenderer.videoContentMode = UIViewContentModeScaleAspectFill;
|
|
||||||
|
|
||||||
VideoMetalView *cloneRenderer = nil;
|
|
||||||
if (requestClone) {
|
|
||||||
cloneRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
|
||||||
#ifdef WEBRTC_IOS
|
|
||||||
cloneRenderer.videoContentMode = UIViewContentModeScaleToFill;
|
|
||||||
[remoteRenderer setClone:cloneRenderer];
|
|
||||||
#else
|
#else
|
||||||
cloneRenderer.videoContentMode = kCAGravityResizeAspectFill;
|
cloneRenderer.videoContentMode = kCAGravityResizeAspectFill;
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
|
||||||
|
|
||||||
interface->setOutput(sink);
|
|
||||||
|
|
||||||
completion(remoteRenderer, cloneRenderer);
|
|
||||||
} else {
|
|
||||||
GLVideoView *remoteRenderer = [[GLVideoView alloc] initWithFrame:CGRectZero];
|
|
||||||
#ifndef WEBRTC_IOS
|
|
||||||
remoteRenderer.videoContentMode = UIViewContentModeScaleAspectFill;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
|
||||||
interface->setOutput(sink);
|
|
||||||
|
|
||||||
completion(remoteRenderer, nil);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
||||||
|
|
||||||
|
interface->setOutput(sink);
|
||||||
|
|
||||||
|
completion(remoteRenderer, cloneRenderer);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1039,7 +963,7 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
|||||||
static dispatch_once_t onceToken;
|
static dispatch_once_t onceToken;
|
||||||
dispatch_once(&onceToken, ^{
|
dispatch_once(&onceToken, ^{
|
||||||
tgcalls::Register<tgcalls::InstanceImpl>();
|
tgcalls::Register<tgcalls::InstanceImpl>();
|
||||||
tgcalls::Register<tgcalls::InstanceV2_4_0_0Impl>();
|
//tgcalls::Register<tgcalls::InstanceV2_4_0_0Impl>();
|
||||||
tgcalls::Register<tgcalls::InstanceV2Impl>();
|
tgcalls::Register<tgcalls::InstanceV2Impl>();
|
||||||
tgcalls::Register<tgcalls::InstanceV2ReferenceImpl>();
|
tgcalls::Register<tgcalls::InstanceV2ReferenceImpl>();
|
||||||
});
|
});
|
||||||
@ -1612,36 +1536,22 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
|||||||
if (_tgVoip) {
|
if (_tgVoip) {
|
||||||
__weak OngoingCallThreadLocalContextWebrtc *weakSelf = self;
|
__weak OngoingCallThreadLocalContextWebrtc *weakSelf = self;
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
if ([VideoMetalView isSupported]) {
|
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
||||||
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
|
||||||
#if TARGET_OS_IPHONE
|
#if TARGET_OS_IPHONE
|
||||||
remoteRenderer.videoContentMode = UIViewContentModeScaleToFill;
|
remoteRenderer.videoContentMode = UIViewContentModeScaleToFill;
|
||||||
#else
|
#else
|
||||||
remoteRenderer.videoContentMode = UIViewContentModeScaleAspect;
|
remoteRenderer.videoContentMode = UIViewContentModeScaleAspect;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
||||||
__strong OngoingCallThreadLocalContextWebrtc *strongSelf = weakSelf;
|
__strong OngoingCallThreadLocalContextWebrtc *strongSelf = weakSelf;
|
||||||
if (strongSelf) {
|
if (strongSelf) {
|
||||||
[remoteRenderer setOrientation:strongSelf->_remoteVideoOrientation];
|
[remoteRenderer setOrientation:strongSelf->_remoteVideoOrientation];
|
||||||
strongSelf->_currentRemoteVideoRenderer = remoteRenderer;
|
strongSelf->_currentRemoteVideoRenderer = remoteRenderer;
|
||||||
strongSelf->_tgVoip->setIncomingVideoOutput(sink);
|
strongSelf->_tgVoip->setIncomingVideoOutput(sink);
|
||||||
}
|
|
||||||
|
|
||||||
completion(remoteRenderer);
|
|
||||||
} else {
|
|
||||||
GLVideoView *remoteRenderer = [[GLVideoView alloc] initWithFrame:CGRectZero];
|
|
||||||
|
|
||||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
|
||||||
__strong OngoingCallThreadLocalContextWebrtc *strongSelf = weakSelf;
|
|
||||||
if (strongSelf) {
|
|
||||||
[remoteRenderer setOrientation:strongSelf->_remoteVideoOrientation];
|
|
||||||
strongSelf->_currentRemoteVideoRenderer = remoteRenderer;
|
|
||||||
strongSelf->_tgVoip->setIncomingVideoOutput(sink);
|
|
||||||
}
|
|
||||||
|
|
||||||
completion(remoteRenderer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
completion(remoteRenderer);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2248,14 +2158,14 @@ audioDevice:(SharedCallAudioDevice * _Nullable)audioDevice {
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
completion(remoteRenderer, cloneRenderer);
|
completion(remoteRenderer, cloneRenderer);
|
||||||
} else if ([VideoMetalView isSupported]) {
|
} else {
|
||||||
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
||||||
#ifdef WEBRTC_IOS
|
#ifdef WEBRTC_IOS
|
||||||
remoteRenderer.videoContentMode = UIViewContentModeScaleToFill;
|
remoteRenderer.videoContentMode = UIViewContentModeScaleToFill;
|
||||||
#else
|
#else
|
||||||
remoteRenderer.videoContentMode = kCAGravityResizeAspectFill;
|
remoteRenderer.videoContentMode = kCAGravityResizeAspectFill;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VideoMetalView *cloneRenderer = nil;
|
VideoMetalView *cloneRenderer = nil;
|
||||||
if (requestClone) {
|
if (requestClone) {
|
||||||
cloneRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
cloneRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
||||||
@ -2280,19 +2190,6 @@ audioDevice:(SharedCallAudioDevice * _Nullable)audioDevice {
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
completion(remoteRenderer, cloneRenderer);
|
completion(remoteRenderer, cloneRenderer);
|
||||||
} else {
|
|
||||||
GLVideoView *remoteRenderer = [[GLVideoView alloc] initWithFrame:CGRectZero];
|
|
||||||
// [remoteRenderer setVideoContentMode:kCAGravityResizeAspectFill];
|
|
||||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
|
||||||
|
|
||||||
[queue dispatch:^{
|
|
||||||
__strong GroupCallThreadLocalContext *strongSelf = weakSelf;
|
|
||||||
if (strongSelf && strongSelf->_instance) {
|
|
||||||
strongSelf->_instance->addIncomingVideoOutput(endpointId.UTF8String, sink);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
|
|
||||||
completion(remoteRenderer, nil);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 564c632f9368409870631d3cef75a7fc4070d45b
|
Subproject commit 8ec8837f169a3594ad457c8ee47f9ecb4d576275
|
31
third-party/webrtc/BUILD
vendored
31
third-party/webrtc/BUILD
vendored
@ -2816,22 +2816,51 @@ webrtc_sources = [
|
|||||||
"modules/rtp_rtcp/include/recovered_packet_receiver.h",
|
"modules/rtp_rtcp/include/recovered_packet_receiver.h",
|
||||||
"modules/rtp_rtcp/source/flexfec_03_header_reader_writer.h",
|
"modules/rtp_rtcp/source/flexfec_03_header_reader_writer.h",
|
||||||
"modules/rtp_rtcp/source/leb128.h",
|
"modules/rtp_rtcp/source/leb128.h",
|
||||||
|
"modules/rtp_rtcp/source/leb128.cc",
|
||||||
"modules/video_capture/raw_video_sink_interface.h",
|
"modules/video_capture/raw_video_sink_interface.h",
|
||||||
"modules/video_coding/timing/decode_time_percentile_filter.h",
|
"modules/video_coding/timing/decode_time_percentile_filter.h",
|
||||||
"rtc_base/bitrate_tracker.h",
|
"rtc_base/bitrate_tracker.h",
|
||||||
|
"rtc_base/bitrate_tracker.cc",
|
||||||
"rtc_base/numerics/sequence_number_unwrapper.h",
|
"rtc_base/numerics/sequence_number_unwrapper.h",
|
||||||
"rtc_base/strings/str_join.h",
|
"rtc_base/strings/str_join.h",
|
||||||
"video/frame_dumping_encoder.h",
|
"video/frame_dumping_encoder.h",
|
||||||
"api/enable_media.h",
|
"api/enable_media.h",
|
||||||
|
"api/enable_media.cc",
|
||||||
"logging/rtc_event_log/events/rtc_event_neteq_set_minimum_delay.h",
|
"logging/rtc_event_log/events/rtc_event_neteq_set_minimum_delay.h",
|
||||||
"modules/audio_processing/agc2/speech_level_estimator.h",
|
"modules/audio_processing/agc2/speech_level_estimator.h",
|
||||||
"p2p/base/stun_dictionary.h",
|
"p2p/base/stun_dictionary.h",
|
||||||
"pc/media_factory.h",
|
"pc/media_factory.h",
|
||||||
"rtc_base/frequency_tracker.h",
|
"rtc_base/frequency_tracker.h",
|
||||||
|
"rtc_base/frequency_tracker.cc",
|
||||||
"api/environment/environment_factory.h",
|
"api/environment/environment_factory.h",
|
||||||
|
"api/environment/environment_factory.cc",
|
||||||
"modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate.h",
|
"modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate.h",
|
||||||
"modules/video_coding/timing/inter_frame_delay_variation_calculator.h",
|
"modules/video_coding/timing/inter_frame_delay_variation_calculator.h",
|
||||||
"video/receive_statistics_proxy.h",
|
"video/receive_statistics_proxy.h",
|
||||||
|
"api/video_codecs/h265_profile_tier_level.cc",
|
||||||
|
"modules/rtp_rtcp/source/rtp_packetizer_h265.cc",
|
||||||
|
"api/rtp_sender_interface.cc",
|
||||||
|
"modules/audio_processing/agc2/speech_level_estimator.cc",
|
||||||
|
"modules/rtp_rtcp/source/flexfec_03_header_reader_writer.cc",
|
||||||
|
"modules/audio_processing/agc2/input_volume_controller.cc",
|
||||||
|
"modules/audio_processing/agc2/input_volume_stats_reporter.cc",
|
||||||
|
"media/base/media_channel_impl.cc",
|
||||||
|
"p2p/base/stun_dictionary.cc",
|
||||||
|
"call/create_call.cc",
|
||||||
|
"modules/rtp_rtcp/source/frame_object.cc",
|
||||||
|
"modules/video_coding/timing/decode_time_percentile_filter.cc",
|
||||||
|
"logging/rtc_event_log/events/rtc_event_neteq_set_minimum_delay.cc",
|
||||||
|
"modules/video_coding/timing/inter_frame_delay_variation_calculator.cc",
|
||||||
|
"video/frame_dumping_encoder.cc",
|
||||||
|
"modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate.cc",
|
||||||
|
"video/receive_statistics_proxy.cc",
|
||||||
|
"modules/rtp_rtcp/source/video_rtp_depacketizer_h265.h",
|
||||||
|
"modules/rtp_rtcp/source/video_rtp_depacketizer_h265.cc",
|
||||||
|
"modules/video_coding/codecs/h265/include/h265_globals.h",
|
||||||
|
"modules/rtp_rtcp/source/rtp_format_h265.h",
|
||||||
|
"modules/rtp_rtcp/source/rtp_format_h265.cc",
|
||||||
|
"modules/video_coding/h265_vps_sps_pps_tracker.h",
|
||||||
|
"modules/video_coding/h265_vps_sps_pps_tracker.cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
ios_objc_sources = [
|
ios_objc_sources = [
|
||||||
@ -3120,6 +3149,7 @@ common_flags = [
|
|||||||
"-DWEBRTC_POSIX",
|
"-DWEBRTC_POSIX",
|
||||||
"-DHAVE_WEBRTC_VIDEO",
|
"-DHAVE_WEBRTC_VIDEO",
|
||||||
"-DRTC_ENABLE_VP9",
|
"-DRTC_ENABLE_VP9",
|
||||||
|
"-DRTC_ENABLE_H265",
|
||||||
"-DWEBRTC_USE_H264",
|
"-DWEBRTC_USE_H264",
|
||||||
"-DHAVE_SCTP",
|
"-DHAVE_SCTP",
|
||||||
"-DWEBRTC_HAVE_DCSCTP",
|
"-DWEBRTC_HAVE_DCSCTP",
|
||||||
@ -3328,6 +3358,7 @@ dcsctp_sources = [ "webrtc/net/dcsctp/" + path for path in [
|
|||||||
"packet/chunk/data_common.h",
|
"packet/chunk/data_common.h",
|
||||||
"packet/chunk/forward_tsn_common.h",
|
"packet/chunk/forward_tsn_common.h",
|
||||||
"packet/parameter/zero_checksum_acceptable_chunk_parameter.h",
|
"packet/parameter/zero_checksum_acceptable_chunk_parameter.h",
|
||||||
|
"packet/parameter/zero_checksum_acceptable_chunk_parameter.cc",
|
||||||
|
|
||||||
"rx/data_tracker.cc",
|
"rx/data_tracker.cc",
|
||||||
"rx/reassembly_queue.cc",
|
"rx/reassembly_queue.cc",
|
||||||
|
2
third-party/webrtc/webrtc
vendored
2
third-party/webrtc/webrtc
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 6b419a0536b1a0ccfff3682f997c6f19bcbd9bd8
|
Subproject commit 94a1503c3d426e29ec8676a0caa994e98ed61205
|
Loading…
x
Reference in New Issue
Block a user