blob: 7fb17ca7d23d1c14896cd525afbc9a1bdfc5fbdb [file] [log] [blame]
Anders Carlsson7bca8ca2018-08-30 09:30:29 +02001/*
2 * Copyright 2017 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 "RTCVideoCodecInfo.h"
12
13@implementation RTCVideoCodecInfo
14
15@synthesize name = _name;
16@synthesize parameters = _parameters;
17
18- (instancetype)initWithName:(NSString *)name {
19 return [self initWithName:name parameters:nil];
20}
21
22- (instancetype)initWithName:(NSString *)name
23 parameters:(nullable NSDictionary<NSString *, NSString *> *)parameters {
24 if (self = [super init]) {
25 _name = name;
26 _parameters = (parameters ? parameters : @{});
27 }
28
29 return self;
30}
31
32- (BOOL)isEqualToCodecInfo:(RTCVideoCodecInfo *)info {
33 if (!info ||
34 ![self.name isEqualToString:info.name] ||
35 ![self.parameters isEqualToDictionary:info.parameters]) {
36 return NO;
37 }
38 return YES;
39}
40
41- (BOOL)isEqual:(id)object {
42 if (self == object)
43 return YES;
44 if (![object isKindOfClass:[self class]])
45 return NO;
46 return [self isEqualToCodecInfo:object];
47}
48
49- (NSUInteger)hash {
50 return [self.name hash] ^ [self.parameters hash];
51}
52
53#pragma mark - NSCoding
54
55- (instancetype)initWithCoder:(NSCoder *)decoder {
56 return [self initWithName:[decoder decodeObjectForKey:@"name"]
57 parameters:[decoder decodeObjectForKey:@"parameters"]];
58}
59
60- (void)encodeWithCoder:(NSCoder *)encoder {
61 [encoder encodeObject:_name forKey:@"name"];
62 [encoder encodeObject:_parameters forKey:@"parameters"];
63}
64
65@end