OLD | NEW |
| (Empty) |
1 /* | |
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 "RTCMediaConstraints.h" | |
12 | |
13 #import "webrtc/api/objc/RTCMediaConstraints+Private.h" | |
14 #import "webrtc/base/objc/NSString+StdString.h" | |
15 | |
16 namespace webrtc { | |
17 | |
18 MediaConstraints::~MediaConstraints() {} | |
19 | |
20 MediaConstraints::MediaConstraints() {} | |
21 | |
22 MediaConstraints::MediaConstraints( | |
23 const MediaConstraintsInterface::Constraints& mandatory, | |
24 const MediaConstraintsInterface::Constraints& optional) | |
25 : mandatory_(mandatory), optional_(optional) {} | |
26 | |
27 const MediaConstraintsInterface::Constraints& | |
28 MediaConstraints::GetMandatory() const { | |
29 return mandatory_; | |
30 } | |
31 | |
32 const MediaConstraintsInterface::Constraints& | |
33 MediaConstraints::GetOptional() const { | |
34 return optional_; | |
35 } | |
36 | |
37 } // namespace webrtc | |
38 | |
39 | |
40 @implementation RTCMediaConstraints { | |
41 NSDictionary<NSString *, NSString *> *_mandatory; | |
42 NSDictionary<NSString *, NSString *> *_optional; | |
43 } | |
44 | |
45 - (instancetype)initWithMandatoryConstraints: | |
46 (NSDictionary<NSString *, NSString *> *)mandatory | |
47 optionalConstraints: | |
48 (NSDictionary<NSString *, NSString *> *)optional { | |
49 if (self = [super init]) { | |
50 _mandatory = [[NSDictionary alloc] initWithDictionary:mandatory | |
51 copyItems:YES]; | |
52 _optional = [[NSDictionary alloc] initWithDictionary:optional | |
53 copyItems:YES]; | |
54 } | |
55 return self; | |
56 } | |
57 | |
58 - (NSString *)description { | |
59 return [NSString stringWithFormat:@"RTCMediaConstraints:\n%@\n%@", | |
60 _mandatory, | |
61 _optional]; | |
62 } | |
63 | |
64 #pragma mark - Private | |
65 | |
66 - (rtc::scoped_ptr<webrtc::MediaConstraints>)nativeConstraints { | |
67 webrtc::MediaConstraintsInterface::Constraints mandatory = | |
68 [[self class] nativeConstraintsForConstraints:_mandatory]; | |
69 webrtc::MediaConstraintsInterface::Constraints optional = | |
70 [[self class] nativeConstraintsForConstraints:_optional]; | |
71 | |
72 webrtc::MediaConstraints *nativeConstraints = | |
73 new webrtc::MediaConstraints(mandatory, optional); | |
74 return rtc::scoped_ptr<webrtc::MediaConstraints>(nativeConstraints); | |
75 } | |
76 | |
77 + (webrtc::MediaConstraintsInterface::Constraints) | |
78 nativeConstraintsForConstraints: | |
79 (NSDictionary<NSString *, NSString *> *)constraints { | |
80 webrtc::MediaConstraintsInterface::Constraints nativeConstraints; | |
81 for (NSString *key in constraints) { | |
82 NSAssert([key isKindOfClass:[NSString class]], | |
83 @"%@ is not an NSString.", key); | |
84 NSString *value = [constraints objectForKey:key]; | |
85 NSAssert([value isKindOfClass:[NSString class]], | |
86 @"%@ is not an NSString.", value); | |
87 nativeConstraints.push_back(webrtc::MediaConstraintsInterface::Constraint( | |
88 key.stdString, value.stdString)); | |
89 } | |
90 return nativeConstraints; | |
91 } | |
92 | |
93 @end | |
OLD | NEW |