blob: 3d413dc16013d6eb902bf42f692e556b25840d22 [file] [log] [blame]
skvlad79b4b872016-04-08 17:28:55 -07001/*
2 * Copyright 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
tkchin9eeb6242016-04-27 01:54:20 -070011#import "RTCRtpSender+Private.h"
skvlad79b4b872016-04-08 17:28:55 -070012
skvladf3569c82016-04-29 15:30:16 -070013#import "NSString+StdString.h"
tkchin9eeb6242016-04-27 01:54:20 -070014#import "RTCMediaStreamTrack+Private.h"
15#import "RTCRtpParameters+Private.h"
skvladf3569c82016-04-29 15:30:16 -070016#import "WebRTC/RTCLogging.h"
skvlad79b4b872016-04-08 17:28:55 -070017
18#include "webrtc/api/mediastreaminterface.h"
skvlad79b4b872016-04-08 17:28:55 -070019
20@implementation RTCRtpSender {
21 rtc::scoped_refptr<webrtc::RtpSenderInterface> _nativeRtpSender;
22}
23
24- (instancetype)initWithNativeRtpSender:
25 (rtc::scoped_refptr<webrtc::RtpSenderInterface>)nativeRtpSender {
skvladf3569c82016-04-29 15:30:16 -070026 NSParameterAssert(nativeRtpSender);
skvlad79b4b872016-04-08 17:28:55 -070027 if (self = [super init]) {
28 _nativeRtpSender = nativeRtpSender;
skvladf3569c82016-04-29 15:30:16 -070029 RTCLogInfo(@"RTCRtpSender(%p): created sender: %@", self, self.description);
skvlad79b4b872016-04-08 17:28:55 -070030 }
31 return self;
32}
33
skvladf3569c82016-04-29 15:30:16 -070034- (NSString *)senderId {
35 return [NSString stringForStdString:_nativeRtpSender->id()];
36}
37
skvlad79b4b872016-04-08 17:28:55 -070038- (RTCRtpParameters *)parameters {
39 return [[RTCRtpParameters alloc]
40 initWithNativeParameters:_nativeRtpSender->GetParameters()];
41}
42
skvladf3569c82016-04-29 15:30:16 -070043- (void)setParameters:(RTCRtpParameters *)parameters {
44 if (!_nativeRtpSender->SetParameters(parameters.nativeParameters)) {
45 RTCLogError(@"RTCRtpSender(%p): Failed to set parameters: %@", self,
46 parameters);
47 }
skvlad79b4b872016-04-08 17:28:55 -070048}
49
50- (RTCMediaStreamTrack *)track {
51 rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> nativeTrack(
52 _nativeRtpSender->track());
53 if (nativeTrack) {
54 return [[RTCMediaStreamTrack alloc] initWithNativeTrack:nativeTrack];
55 }
56 return nil;
57}
58
skvladf3569c82016-04-29 15:30:16 -070059- (void)setTrack:(RTCMediaStreamTrack *)track {
60 if (!_nativeRtpSender->SetTrack(track.nativeTrack)) {
61 RTCLogError(@"RTCRtpSender(%p): Failed to set track %@", self, track);
62 }
63}
64
65- (NSString *)description {
66 return [NSString stringWithFormat:@"RTCRtpSender {\n senderId: %@\n}",
67 self.senderId];
68}
69
skvlad79b4b872016-04-08 17:28:55 -070070@end