blob: 8e9c39d3ddc02ce6458cb3714f1aebbf14eeef31 [file] [log] [blame]
Jon Hjellef6c318e2016-01-11 14:39:01 -08001/*
2 * Copyright 2015 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
Jon Hjelle065aacc2016-01-20 13:25:44 -080011#import "RTCVideoSource.h"
Jon Hjellef6c318e2016-01-11 14:39:01 -080012
Jon Hjelle065aacc2016-01-20 13:25:44 -080013#import "webrtc/api/objc/RTCVideoSource+Private.h"
Jon Hjellef6c318e2016-01-11 14:39:01 -080014
Jon Hjelle065aacc2016-01-20 13:25:44 -080015@implementation RTCVideoSource {
perkja3ede6c2016-03-08 01:27:48 +010016 rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> _nativeVideoSource;
Jon Hjellef6c318e2016-01-11 14:39:01 -080017}
18
19- (RTCSourceState)state {
Jon Hjelle065aacc2016-01-20 13:25:44 -080020 return [[self class] sourceStateForNativeState:_nativeVideoSource->state()];
Jon Hjellef6c318e2016-01-11 14:39:01 -080021}
22
23- (NSString *)description {
Jon Hjelle065aacc2016-01-20 13:25:44 -080024 return [NSString stringWithFormat:@"RTCVideoSource:\n%@",
Jon Hjellef6c318e2016-01-11 14:39:01 -080025 [[self class] stringForState:self.state]];
26}
27
28#pragma mark - Private
29
perkja3ede6c2016-03-08 01:27:48 +010030- (rtc::scoped_refptr<webrtc::VideoTrackSourceInterface>)nativeVideoSource {
Jon Hjelle065aacc2016-01-20 13:25:44 -080031 return _nativeVideoSource;
Jon Hjellef6c318e2016-01-11 14:39:01 -080032}
33
Jon Hjelle065aacc2016-01-20 13:25:44 -080034- (instancetype)initWithNativeVideoSource:
perkja3ede6c2016-03-08 01:27:48 +010035 (rtc::scoped_refptr<webrtc::VideoTrackSourceInterface>)nativeVideoSource {
Jon Hjelle065aacc2016-01-20 13:25:44 -080036 NSParameterAssert(nativeVideoSource);
Jon Hjellef6c318e2016-01-11 14:39:01 -080037 if (self = [super init]) {
Jon Hjelle065aacc2016-01-20 13:25:44 -080038 _nativeVideoSource = nativeVideoSource;
Jon Hjellef6c318e2016-01-11 14:39:01 -080039 }
40 return self;
41}
42
43+ (webrtc::MediaSourceInterface::SourceState)nativeSourceStateForState:
44 (RTCSourceState)state {
45 switch (state) {
46 case RTCSourceStateInitializing:
47 return webrtc::MediaSourceInterface::kInitializing;
48 case RTCSourceStateLive:
49 return webrtc::MediaSourceInterface::kLive;
50 case RTCSourceStateEnded:
51 return webrtc::MediaSourceInterface::kEnded;
52 case RTCSourceStateMuted:
53 return webrtc::MediaSourceInterface::kMuted;
54 }
55}
56
57+ (RTCSourceState)sourceStateForNativeState:
58 (webrtc::MediaSourceInterface::SourceState)nativeState {
59 switch (nativeState) {
60 case webrtc::MediaSourceInterface::kInitializing:
61 return RTCSourceStateInitializing;
62 case webrtc::MediaSourceInterface::kLive:
63 return RTCSourceStateLive;
64 case webrtc::MediaSourceInterface::kEnded:
65 return RTCSourceStateEnded;
66 case webrtc::MediaSourceInterface::kMuted:
67 return RTCSourceStateMuted;
68 }
69}
70
71+ (NSString *)stringForState:(RTCSourceState)state {
72 switch (state) {
73 case RTCSourceStateInitializing:
74 return @"Initializing";
75 case RTCSourceStateLive:
76 return @"Live";
77 case RTCSourceStateEnded:
78 return @"Ended";
79 case RTCSourceStateMuted:
80 return @"Muted";
81 }
82}
83
84@end