diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index 3d624c7adf..9e5f4a485c 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -859,9 +859,11 @@ if (is_ios || is_mac) { "objc/api/peerconnection/RTCRtpParameters+Private.h", "objc/api/peerconnection/RTCRtpParameters.h", "objc/api/peerconnection/RTCRtpParameters.mm", + "objc/api/peerconnection/RTCRtpReceiver+Native.h", "objc/api/peerconnection/RTCRtpReceiver+Private.h", "objc/api/peerconnection/RTCRtpReceiver.h", "objc/api/peerconnection/RTCRtpReceiver.mm", + "objc/api/peerconnection/RTCRtpSender+Native.h", "objc/api/peerconnection/RTCRtpSender+Private.h", "objc/api/peerconnection/RTCRtpSender.h", "objc/api/peerconnection/RTCRtpSender.mm", diff --git a/sdk/objc/api/peerconnection/RTCRtpReceiver+Native.h b/sdk/objc/api/peerconnection/RTCRtpReceiver+Native.h new file mode 100644 index 0000000000..33ba40bcf7 --- /dev/null +++ b/sdk/objc/api/peerconnection/RTCRtpReceiver+Native.h @@ -0,0 +1,30 @@ +/* + * Copyright 2018 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#import "RTCRtpReceiver.h" + +#include "api/crypto/framedecryptorinterface.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * This class extension exposes methods that work directly with injectable C++ components. + */ +@interface RTCRtpReceiver () + +/** Sets a user defined frame decryptor that will decrypt the entire frame. + * This will decrypt the entire frame using the user provided decryption + * mechanism regardless of whether SRTP is enabled or not. + */ +- (void)setFrameDecryptor:(rtc::scoped_refptr)frameDecryptor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/sdk/objc/api/peerconnection/RTCRtpReceiver.mm b/sdk/objc/api/peerconnection/RTCRtpReceiver.mm index 6d2048d815..4d240be62a 100644 --- a/sdk/objc/api/peerconnection/RTCRtpReceiver.mm +++ b/sdk/objc/api/peerconnection/RTCRtpReceiver.mm @@ -12,6 +12,7 @@ #import "RTCMediaStreamTrack+Private.h" #import "RTCRtpParameters+Private.h" +#import "RTCRtpReceiver+Native.h" #import "base/RTCLogging.h" #import "helpers/NSString+StdString.h" @@ -97,6 +98,12 @@ void RtpReceiverDelegateAdapter::OnFirstPacketReceived( return (NSUInteger)_nativeRtpReceiver.get(); } +#pragma mark - Native + +- (void)setFrameDecryptor:(rtc::scoped_refptr)frameDecryptor { + _nativeRtpReceiver->SetFrameDecryptor(frameDecryptor); +} + #pragma mark - Private - (rtc::scoped_refptr)nativeRtpReceiver { diff --git a/sdk/objc/api/peerconnection/RTCRtpSender+Native.h b/sdk/objc/api/peerconnection/RTCRtpSender+Native.h new file mode 100644 index 0000000000..f1d951f1c5 --- /dev/null +++ b/sdk/objc/api/peerconnection/RTCRtpSender+Native.h @@ -0,0 +1,31 @@ +/* + * Copyright 2018 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#import "RTCRtpSender.h" + +#include "api/crypto/frameencryptorinterface.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * This class extension exposes methods that work directly with injectable C++ components. + */ +@interface RTCRtpSender () + +/** Sets a defined frame encryptor that will encrypt the entire frame + * before it is sent across the network. This will encrypt the entire frame + * using the user provided encryption mechanism regardless of whether SRTP is + * enabled or not. + */ +- (void)setFrameEncryptor:(rtc::scoped_refptr)frameEncryptor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/sdk/objc/api/peerconnection/RTCRtpSender.mm b/sdk/objc/api/peerconnection/RTCRtpSender.mm index 64e9204b32..30e1bdecd5 100644 --- a/sdk/objc/api/peerconnection/RTCRtpSender.mm +++ b/sdk/objc/api/peerconnection/RTCRtpSender.mm @@ -13,6 +13,7 @@ #import "RTCDtmfSender+Private.h" #import "RTCMediaStreamTrack+Private.h" #import "RTCRtpParameters+Private.h" +#import "RTCRtpSender+Native.h" #import "base/RTCLogging.h" #import "helpers/NSString+StdString.h" @@ -79,6 +80,12 @@ return (NSUInteger)_nativeRtpSender.get(); } +#pragma mark - Native + +- (void)setFrameEncryptor:(rtc::scoped_refptr)frameEncryptor { + _nativeRtpSender->SetFrameEncryptor(frameEncryptor); +} + #pragma mark - Private - (rtc::scoped_refptr)nativeRtpSender {