Add FrameEncryptor/FrameDecryptor support to Objective C API for WebRTC.

This change adds bindings so that native FrameEncryptor and native FrameDecryptor
objects can be set on the objective C RTCRtpSender and RTCRtpReceiver objects.

Bug: webrtc:9681
Change-Id: Iec4006ea020d6ab6adcc0ad068dcd8fb2738063d
Reviewed-on: https://webrtc-review.googlesource.com/c/103020
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24936}
This commit is contained in:
Benjamin Wright
2018-10-02 10:20:58 -07:00
committed by Commit Bot
parent ad5465b443
commit ddf1a3e209
5 changed files with 77 additions and 0 deletions

View File

@ -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<webrtc::FrameDecryptorInterface>)frameDecryptor;
@end
NS_ASSUME_NONNULL_END

View File

@ -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<webrtc::FrameDecryptorInterface>)frameDecryptor {
_nativeRtpReceiver->SetFrameDecryptor(frameDecryptor);
}
#pragma mark - Private
- (rtc::scoped_refptr<webrtc::RtpReceiverInterface>)nativeRtpReceiver {

View File

@ -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<webrtc::FrameEncryptorInterface>)frameEncryptor;
@end
NS_ASSUME_NONNULL_END

View File

@ -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<webrtc::FrameEncryptorInterface>)frameEncryptor {
_nativeRtpSender->SetFrameEncryptor(frameEncryptor);
}
#pragma mark - Private
- (rtc::scoped_refptr<webrtc::RtpSenderInterface>)nativeRtpSender {