mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-06 21:22:44 +00:00
[skip ci]
This commit is contained in:
@@ -308,7 +308,7 @@ private final class CallSessionContext {
|
||||
}
|
||||
|
||||
private func selectVersionOnAccept(localVersions: [CallSessionManagerImplementationVersion], remoteVersions: [String]) -> [String]? {
|
||||
let filteredVersions = localVersions.map(\.version).filter(remoteVersions.contains)
|
||||
let filteredVersions = localVersions.map({ $0.version }).filter(remoteVersions.contains)
|
||||
if filteredVersions.isEmpty {
|
||||
return nil
|
||||
} else {
|
||||
@@ -626,7 +626,7 @@ private final class CallSessionManagerContext {
|
||||
if let context = self.contexts[internalId] {
|
||||
switch context.state {
|
||||
case let .ringing(id, accessHash, gAHash, b, remoteVersions):
|
||||
let acceptVersions = self.versions.map(\.version)
|
||||
let acceptVersions = self.versions.map({ $0.version })
|
||||
context.state = .accepting(id: id, accessHash: accessHash, gAHash: gAHash, b: b, disposable: (acceptCallSession(postbox: self.postbox, network: self.network, stableId: id, accessHash: accessHash, b: b, maxLayer: self.maxLayer, versions: acceptVersions) |> deliverOn(self.queue)).start(next: { [weak self] result in
|
||||
if let strongSelf = self, let context = strongSelf.contexts[internalId] {
|
||||
if case .accepting = context.state {
|
||||
|
||||
@@ -87,7 +87,7 @@ typedef NS_ENUM(int32_t, OngoingCallDataSavingWebrtc) {
|
||||
|
||||
@property (nonatomic, readonly) OngoingCallVideoOrientationWebrtc orientation;
|
||||
|
||||
- (void)setOnFirstFrameReceived:(void (^ _Nullable)())onFirstFrameReceived;
|
||||
- (void)setOnFirstFrameReceived:(void (^ _Nullable)(float))onFirstFrameReceived;
|
||||
- (void)setOnOrientationUpdated:(void (^ _Nullable)(OngoingCallVideoOrientationWebrtc))onOrientationUpdated;
|
||||
- (void)setOnIsMirroredUpdated:(void (^ _Nullable)(bool))onIsMirroredUpdated;
|
||||
|
||||
@@ -111,7 +111,7 @@ typedef NS_ENUM(int32_t, OngoingCallDataSavingWebrtc) {
|
||||
+ (int32_t)maxLayer;
|
||||
+ (NSArray<NSString *> * _Nonnull)versionsWithIncludeReference:(bool)includeReference;
|
||||
|
||||
@property (nonatomic, copy) void (^ _Nullable stateChanged)(OngoingCallStateWebrtc, OngoingCallVideoStateWebrtc, OngoingCallRemoteVideoStateWebrtc);
|
||||
@property (nonatomic, copy) void (^ _Nullable stateChanged)(OngoingCallStateWebrtc, OngoingCallVideoStateWebrtc, OngoingCallRemoteVideoStateWebrtc, float);
|
||||
@property (nonatomic, copy) void (^ _Nullable signalBarsChanged)(int32_t);
|
||||
|
||||
- (instancetype _Nonnull)initWithVersion:(NSString * _Nonnull)version queue:(id<OngoingCallThreadLocalContextQueueWebrtc> _Nonnull)queue proxy:(VoipProxyServerWebrtc * _Nullable)proxy networkType:(OngoingCallNetworkTypeWebrtc)networkType dataSaving:(OngoingCallDataSavingWebrtc)dataSaving derivedState:(NSData * _Nonnull)derivedState key:(NSData * _Nonnull)key isOutgoing:(bool)isOutgoing primaryConnection:(OngoingCallConnectionDescriptionWebrtc * _Nonnull)primaryConnection alternativeConnections:(NSArray<OngoingCallConnectionDescriptionWebrtc *> * _Nonnull)alternativeConnections maxLayer:(int32_t)maxLayer allowP2P:(BOOL)allowP2P logPath:(NSString * _Nonnull)logPath sendSignalingData:(void (^ _Nonnull)(NSData * _Nonnull))sendSignalingData videoCapturer:(OngoingCallThreadLocalContextVideoCapturer * _Nullable)videoCapturer preferredAspectRatio:(float)preferredAspectRatio enableHighBitrateVideoCalls:(bool)enableHighBitrateVideoCalls;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#import "platform/darwin/VideoMetalViewMac.h"
|
||||
#define GLVideoView VideoMetalView
|
||||
#define UIViewContentModeScaleAspectFill kCAGravityResizeAspectFill
|
||||
#define UIViewContentModeScaleAspect kCAGravityResizeAspect
|
||||
|
||||
#else
|
||||
#import "platform/darwin/VideoMetalView.h"
|
||||
#import "platform/darwin/GLVideoView.h"
|
||||
@@ -219,6 +221,9 @@
|
||||
NSData *_lastDerivedState;
|
||||
|
||||
void (^_sendSignalingData)(NSData *);
|
||||
|
||||
float _remotePreferredAspectRatio;
|
||||
|
||||
}
|
||||
|
||||
- (void)controllerStateChanged:(tgcalls::State)state videoState:(OngoingCallVideoStateWebrtc)videoState;
|
||||
@@ -313,6 +318,7 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
||||
_callRingTimeout = 90.0;
|
||||
_callConnectTimeout = 30.0;
|
||||
_callPacketTimeout = 10.0;
|
||||
_remotePreferredAspectRatio = 0;
|
||||
_networkType = networkType;
|
||||
_sendSignalingData = [sendSignalingData copy];
|
||||
_videoCapturer = videoCapturer;
|
||||
@@ -452,12 +458,23 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
||||
if (strongSelf->_remoteVideoState != remoteVideoState) {
|
||||
strongSelf->_remoteVideoState = remoteVideoState;
|
||||
if (strongSelf->_stateChanged) {
|
||||
strongSelf->_stateChanged(strongSelf->_state, strongSelf->_videoState, strongSelf->_remoteVideoState);
|
||||
strongSelf->_stateChanged(strongSelf->_state, strongSelf->_videoState, strongSelf->_remoteVideoState, strongSelf->_remotePreferredAspectRatio);
|
||||
}
|
||||
}
|
||||
}
|
||||
}];
|
||||
},
|
||||
.remotePrefferedAspectRatioUpdated = [weakSelf, queue](float value) {
|
||||
[queue dispatch:^{
|
||||
__strong OngoingCallThreadLocalContextWebrtc *strongSelf = weakSelf;
|
||||
if (strongSelf) {
|
||||
strongSelf->_remotePreferredAspectRatio = value;
|
||||
if (strongSelf->_stateChanged) {
|
||||
strongSelf->_stateChanged(strongSelf->_state, strongSelf->_videoState, strongSelf->_remoteVideoState, strongSelf->_remotePreferredAspectRatio);
|
||||
}
|
||||
}
|
||||
}];
|
||||
},
|
||||
.signalingDataEmitted = [weakSelf, queue](const std::vector<uint8_t> &data) {
|
||||
NSData *mappedData = [[NSData alloc] initWithBytes:data.data() length:data.size()];
|
||||
[queue dispatch:^{
|
||||
@@ -565,7 +582,7 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
||||
_videoState = videoState;
|
||||
|
||||
if (_stateChanged) {
|
||||
_stateChanged(_state, _videoState, _remoteVideoState);
|
||||
_stateChanged(_state, _videoState, _remoteVideoState, _remotePreferredAspectRatio);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -586,6 +603,7 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)addSignalingData:(NSData *)data {
|
||||
if (_tgVoip) {
|
||||
std::vector<uint8_t> mappedData;
|
||||
@@ -616,7 +634,7 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if ([VideoMetalView isSupported]) {
|
||||
VideoMetalView *remoteRenderer = [[VideoMetalView alloc] initWithFrame:CGRectZero];
|
||||
remoteRenderer.videoContentMode = UIViewContentModeScaleAspectFill;
|
||||
remoteRenderer.videoContentMode = UIViewContentModeScaleAspect;
|
||||
|
||||
std::shared_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> sink = [remoteRenderer getSink];
|
||||
__strong OngoingCallThreadLocalContextWebrtc *strongSelf = weakSelf;
|
||||
|
||||
Reference in New Issue
Block a user