Implement RtpCodecParameters::parameters

This will return all the fmtp parameters for the codecs, except for
DTMF codes that don't fit the key=value pattern.

Bug: webrtc:7112
Change-Id: I06a203ff64df2c3bc9bc2082cd0f374718b23510
Reviewed-on: https://webrtc-review.googlesource.com/71801
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23250}
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm
index 1a3bcf4..b6baee6 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm
@@ -41,6 +41,7 @@
 @synthesize kind = _kind;
 @synthesize clockRate = _clockRate;
 @synthesize numChannels = _numChannels;
+@synthesize parameters = _parameters;
 
 - (instancetype)init {
   return [super init];
@@ -68,6 +69,12 @@
     if (nativeParameters.num_channels) {
       _numChannels = [NSNumber numberWithInt:*nativeParameters.num_channels];
     }
+    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
+    for (const auto &parameter : nativeParameters.parameters) {
+      [parameters setObject:[NSString stringForStdString:parameter.second]
+                     forKey:[NSString stringForStdString:parameter.first]];
+    }
+    _parameters = parameters;
   }
   return self;
 }
@@ -91,6 +98,11 @@
   if (_numChannels != nil) {
     parameters.num_channels = rtc::Optional<int>(_numChannels.intValue);
   }
+  for (NSString *paramKey in _parameters.allKeys) {
+    std::string key = [NSString stdStringForString:paramKey];
+    std::string value = [NSString stdStringForString:_parameters[paramKey]];
+    parameters.parameters[key] = value;
+  }
   return parameters;
 }