blob: 5f46ab831891bf243a82cba0173fc94e526f31d2 [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
11#import "RTCMediaSource.h"
12
13#import "webrtc/api/objc/RTCMediaSource+Private.h"
14
15@implementation RTCMediaSource {
16 rtc::scoped_refptr<webrtc::MediaSourceInterface> _nativeMediaSource;
17}
18
19- (RTCSourceState)state {
20 return [[self class] sourceStateForNativeState:_nativeMediaSource->state()];
21}
22
23- (NSString *)description {
24 return [NSString stringWithFormat:@"RTCMediaSource:\n%@",
25 [[self class] stringForState:self.state]];
26}
27
28#pragma mark - Private
29
30- (rtc::scoped_refptr<webrtc::MediaSourceInterface>)nativeMediaSource {
31 return _nativeMediaSource;
32}
33
34- (instancetype)initWithNativeMediaSource:
35 (rtc::scoped_refptr<webrtc::MediaSourceInterface>)nativeMediaSource {
36 NSParameterAssert(nativeMediaSource);
37 if (self = [super init]) {
38 _nativeMediaSource = nativeMediaSource;
39 }
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