diff --git a/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm b/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm index 29afc81f14..059dfd2fb7 100644 --- a/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm +++ b/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm @@ -20,6 +20,7 @@ #else #import "platform/darwin/VideoMetalView.h" #import "platform/darwin/GLVideoView.h" +#import "platform/darwin/VideoSampleBufferView.h" #import "platform/darwin/CustomExternalCapturer.h" #endif @@ -145,6 +146,49 @@ @end +@interface VideoSampleBufferView (VideoViewImpl) + +@property (nonatomic, readwrite) OngoingCallVideoOrientationWebrtc orientation; +@property (nonatomic, readonly) CGFloat aspect; + +@end + +@implementation VideoSampleBufferView (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]; + } +} + +@end + @interface OngoingCallThreadLocalContextVideoCapturer () { bool _keepLandscape; std::shared_ptr> _croppingBuffer; @@ -1228,7 +1272,7 @@ private: id queue = _queue; dispatch_async(dispatch_get_main_queue(), ^{ if ([VideoMetalView isSupported]) { - VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero]; + VideoSampleBufferView *remoteRenderer = [[VideoSampleBufferView alloc] initWithFrame:CGRectZero]; #if TARGET_OS_IPHONE remoteRenderer.videoContentMode = UIViewContentModeScaleToFill; #else diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index e66d8a025c..75eec7a938 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit e66d8a025c9a5c6b1097c0017af18ff6a085d8e9 +Subproject commit 75eec7a93832688e87d9134e4a314393009ad38f diff --git a/third-party/libvpx/libvpx b/third-party/libvpx/libvpx index 4808d831db..66c1ff6850 160000 --- a/third-party/libvpx/libvpx +++ b/third-party/libvpx/libvpx @@ -1 +1 @@ -Subproject commit 4808d831dbc4e9ff83fa0efe11207bc135c6d6f5 +Subproject commit 66c1ff6850fd53bcf5c17247569bea1d700d6247 diff --git a/third-party/webrtc/BUILD b/third-party/webrtc/BUILD index 0f53ad90b8..bd96583280 100644 --- a/third-party/webrtc/BUILD +++ b/third-party/webrtc/BUILD @@ -1,6 +1,18 @@ webrtc_source_dir = "webrtc" +config_setting( + name = "debug_build", + values = { + "compilation_mode": "dbg", + }, +) + +optimization_flags = select({ + ":debug_build": ["-Os"], + "//conditions:default": [], +}) + rnnoise_sources = [ "dependencies/third_party/rnnoise/src/" + x for x in [ "rnn_vad_weights.cc", "rnn_vad_weights.h", @@ -3318,7 +3330,7 @@ cc_library( "-D__Userspace_os_Darwin", "-DPACKAGE_VERSION=''", "-DHAVE_SCTP", - ] + arch_specific_cflags, + ] + arch_specific_cflags + optimization_flags, visibility = ["//visibility:public"], ) @@ -3396,7 +3408,7 @@ cc_library( "-DHAVE_UNISTD_H", "-DPACKAGE_STRING='\"\"'", "-DHAVE_SCTP", - ] + arch_specific_cflags, + ] + arch_specific_cflags + optimization_flags, deps = [ "//third-party/boringssl:crypto", "//third-party/boringssl:ssl", @@ -3443,7 +3455,7 @@ cc_library( "-Ithird-party/webrtc/dependencies/base/third_party/libevent", "-Ithird-party/webrtc/dependencies", "-Ithird-party/webrtc/" + webrtc_source_dir, - ] + arch_specific_cflags, + ] + arch_specific_cflags + optimization_flags, visibility = ["//visibility:public"], ) @@ -3521,7 +3533,7 @@ cc_library( copts = [ "-ffp-contract=fast", "-Ithird-party/webrtc/dependencies/third_party/libyuv/include", - ] + arch_specific_cflags, + ] + arch_specific_cflags + optimization_flags, visibility = ["//visibility:public"], ) @@ -3565,7 +3577,7 @@ objc_library( "-D__Userspace_os_Darwin", "-DPACKAGE_VERSION='\"\"'", "-DHAVE_SCTP", - ] + arch_specific_cflags, + ] + arch_specific_cflags + optimization_flags, deps = [ "//third-party/boringssl:crypto", "//third-party/boringssl:ssl",