NCCallController.h 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**
  2. * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
  3. * SPDX-License-Identifier: GPL-3.0-or-later
  4. */
  5. #import <Foundation/Foundation.h>
  6. #import "NCPeerConnection.h"
  7. #import "NCRoom.h"
  8. @class NCCallController;
  9. @class RTCAudioTrack;
  10. @class RTCVideoTrack;
  11. @class NCCameraController;
  12. @class TalkActor;
  13. typedef void (^GetVideoEnabledStateCompletionBlock)(BOOL isEnabled);
  14. typedef void (^GetAudioEnabledStateCompletionBlock)(BOOL isEnabled);
  15. @protocol NCCallControllerDelegate<NSObject>
  16. - (void)callControllerDidJoinCall:(NCCallController *)callController;
  17. - (void)callControllerDidFailedJoiningCall:(NCCallController *)callController statusCode:(NSInteger)statusCode errorReason:(NSString *)errorReason;
  18. - (void)callControllerDidEndCall:(NCCallController *)callController;
  19. - (void)callController:(NCCallController *)callController peerJoined:(NCPeerConnection *)peer;
  20. - (void)callController:(NCCallController *)callController peerLeft:(NCPeerConnection *)peer;
  21. - (void)callController:(NCCallController *)callController didCreateLocalAudioTrack:(RTCAudioTrack *)audioTrack;
  22. - (void)callController:(NCCallController *)callController didCreateLocalVideoTrack:(RTCVideoTrack *)videoTrack;
  23. - (void)callController:(NCCallController *)callController didCreateCameraController:(NCCameraController *)cameraController;
  24. - (void)callController:(NCCallController *)callController userPermissionsChanged:(NSInteger)permissions;
  25. - (void)callController:(NCCallController *)callController didAddStream:(RTCMediaStream *)remoteStream ofPeer:(NCPeerConnection *)remotePeer;
  26. - (void)callController:(NCCallController *)callController didRemoveStream:(RTCMediaStream *)remoteStream ofPeer:(NCPeerConnection *)remotePeer;
  27. - (void)callController:(NCCallController *)callController iceStatusChanged:(RTCIceConnectionState)state ofPeer:(NCPeerConnection *)peer;
  28. - (void)callController:(NCCallController *)callController didAddDataChannel:(RTCDataChannel *)dataChannel;
  29. - (void)callController:(NCCallController *)callController didReceiveDataChannelMessage:(NSString *)message fromPeer:(NCPeerConnection *)peer;
  30. - (void)callController:(NCCallController *)callController didReceiveNick:(NSString *)nick fromPeer:(NCPeerConnection *)peer;
  31. - (void)callController:(NCCallController *)callController didReceiveUnshareScreenFromPeer:(NCPeerConnection *)peer;
  32. - (void)callController:(NCCallController *)callController didReceiveForceMuteActionForPeerId:(NSString *)peerId;
  33. - (void)callController:(NCCallController *)callController didReceiveReaction:(NSString *)reaction fromPeer:(NCPeerConnection *)peer;
  34. - (void)callControllerIsReconnectingCall:(NCCallController *)callController;
  35. - (void)callControllerWantsToHangUpCall:(NCCallController *)callController;
  36. - (void)callControllerDidChangeRecording:(NCCallController *)callController;
  37. - (void)callControllerDidDrawFirstLocalFrame:(NCCallController *)callController;
  38. - (void)callControllerDidChangeScreenrecording:(NCCallController *)callController;
  39. - (void)callController:(NCCallController *)callController isSwitchingToCall:(NSString *)token withAudioEnabled:(BOOL)audioEnabled andVideoEnabled:(BOOL)videoEnabled;
  40. @end
  41. @interface NCCallController : NSObject
  42. @property (nonatomic, weak) id<NCCallControllerDelegate> delegate;
  43. @property (nonatomic, strong) NCRoom *room;
  44. @property (nonatomic, copy) NSString *userSessionId;
  45. @property (nonatomic, copy) NSString *userDisplayName;
  46. @property (nonatomic, assign) BOOL disableAudioAtStart;
  47. @property (nonatomic, assign) BOOL disableVideoAtStart;
  48. @property (nonatomic, assign) BOOL silentCall;
  49. @property (nonatomic, assign) BOOL recordingConsent;
  50. @property (nonatomic, assign) BOOL screensharingActive;
  51. - (instancetype)initWithDelegate:(id<NCCallControllerDelegate>)delegate inRoom:(NCRoom *)room forAudioOnlyCall:(BOOL)audioOnly withSessionId:(NSString *)sessionId andVoiceChatMode:(BOOL)voiceChatMode;
  52. - (void)startCall;
  53. - (void)leaveCallForAll:(BOOL)allParticipants;
  54. - (void)getVideoEnabledStateWithCompletionBlock:(GetVideoEnabledStateCompletionBlock)block;
  55. - (void)getAudioEnabledStateWithCompletionBlock:(GetAudioEnabledStateCompletionBlock)block;
  56. - (void)switchCamera;
  57. - (void)enableVideo:(BOOL)enable;
  58. - (void)enableAudio:(BOOL)enable;
  59. - (void)raiseHand:(BOOL)raised;
  60. - (void)sendReaction:(NSString *)reaction;
  61. - (void)startRecording;
  62. - (void)stopRecording;
  63. - (void)startScreenshare;
  64. - (void)stopScreenshare;
  65. - (TalkActor * _Nullable)getActorFromSessionId:(NSString * _Nonnull)sessionId;
  66. - (NSString *)signalingSessionId;
  67. - (BOOL)isBackgroundBlurEnabled;
  68. - (void)enableBackgroundBlur:(BOOL)enable;
  69. - (void)stopCapturing;
  70. - (BOOL)isCameraAccessAvailable;
  71. - (BOOL)isMicrophoneAccessAvailable;
  72. - (void)willSwitchToCall:(NSString *)token;
  73. @end