OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 std::string str; | 131 std::string str; |
132 if (val.IsSet()) { | 132 if (val.IsSet()) { |
133 str = key; | 133 str = key; |
134 str += ": "; | 134 str += ": "; |
135 str += val.ToString(); | 135 str += val.ToString(); |
136 str += ", "; | 136 str += ", "; |
137 } | 137 } |
138 return str; | 138 return str; |
139 } | 139 } |
140 | 140 |
| 141 template <class T> |
| 142 static std::string VectorToString(const std::vector<T>& vals) { |
| 143 std::ostringstream ost; |
| 144 ost << "["; |
| 145 for (size_t i = 0; i < vals.size(); ++i) { |
| 146 if (i > 0) { |
| 147 ost << ", "; |
| 148 } |
| 149 ost << vals[i].ToString(); |
| 150 } |
| 151 ost << "]"; |
| 152 return ost.str(); |
| 153 } |
| 154 |
141 // Options that can be applied to a VoiceMediaChannel or a VoiceMediaEngine. | 155 // Options that can be applied to a VoiceMediaChannel or a VoiceMediaEngine. |
142 // Used to be flags, but that makes it hard to selectively apply options. | 156 // Used to be flags, but that makes it hard to selectively apply options. |
143 // We are moving all of the setting of options to structs like this, | 157 // We are moving all of the setting of options to structs like this, |
144 // but some things currently still use flags. | 158 // but some things currently still use flags. |
145 struct AudioOptions { | 159 struct AudioOptions { |
146 void SetAll(const AudioOptions& change) { | 160 void SetAll(const AudioOptions& change) { |
147 echo_cancellation.SetFrom(change.echo_cancellation); | 161 echo_cancellation.SetFrom(change.echo_cancellation); |
148 auto_gain_control.SetFrom(change.auto_gain_control); | 162 auto_gain_control.SetFrom(change.auto_gain_control); |
149 rx_auto_gain_control.SetFrom(change.rx_auto_gain_control); | 163 rx_auto_gain_control.SetFrom(change.rx_auto_gain_control); |
150 noise_suppression.SetFrom(change.noise_suppression); | 164 noise_suppression.SetFrom(change.noise_suppression); |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 Settable<int> unsignalled_recv_stream_limit; | 460 Settable<int> unsignalled_recv_stream_limit; |
447 // Enable use of simulcast adapter. | 461 // Enable use of simulcast adapter. |
448 Settable<bool> use_simulcast_adapter; | 462 Settable<bool> use_simulcast_adapter; |
449 // Force screencast to use a minimum bitrate | 463 // Force screencast to use a minimum bitrate |
450 Settable<int> screencast_min_bitrate; | 464 Settable<int> screencast_min_bitrate; |
451 }; | 465 }; |
452 | 466 |
453 struct RtpHeaderExtension { | 467 struct RtpHeaderExtension { |
454 RtpHeaderExtension() : id(0) {} | 468 RtpHeaderExtension() : id(0) {} |
455 RtpHeaderExtension(const std::string& u, int i) : uri(u), id(i) {} | 469 RtpHeaderExtension(const std::string& u, int i) : uri(u), id(i) {} |
456 std::string uri; | |
457 int id; | |
458 // TODO(juberti): SendRecv direction; | |
459 | 470 |
460 bool operator==(const RtpHeaderExtension& ext) const { | 471 bool operator==(const RtpHeaderExtension& ext) const { |
461 // id is a reserved word in objective-c. Therefore the id attribute has to | 472 // id is a reserved word in objective-c. Therefore the id attribute has to |
462 // be a fully qualified name in order to compile on IOS. | 473 // be a fully qualified name in order to compile on IOS. |
463 return this->id == ext.id && | 474 return this->id == ext.id && |
464 uri == ext.uri; | 475 uri == ext.uri; |
465 } | 476 } |
| 477 |
| 478 std::string ToString() const { |
| 479 std::ostringstream ost; |
| 480 ost << "{"; |
| 481 ost << "id: , " << id; |
| 482 ost << "uri: " << uri; |
| 483 ost << "}"; |
| 484 return ost.str(); |
| 485 } |
| 486 |
| 487 std::string uri; |
| 488 int id; |
| 489 // TODO(juberti): SendRecv direction; |
466 }; | 490 }; |
467 | 491 |
468 // Returns the named header extension if found among all extensions, NULL | 492 // Returns the named header extension if found among all extensions, NULL |
469 // otherwise. | 493 // otherwise. |
470 inline const RtpHeaderExtension* FindHeaderExtension( | 494 inline const RtpHeaderExtension* FindHeaderExtension( |
471 const std::vector<RtpHeaderExtension>& extensions, | 495 const std::vector<RtpHeaderExtension>& extensions, |
472 const std::string& name) { | 496 const std::string& name) { |
473 for (std::vector<RtpHeaderExtension>::const_iterator it = extensions.begin(); | 497 for (std::vector<RtpHeaderExtension>::const_iterator it = extensions.begin(); |
474 it != extensions.end(); ++it) { | 498 it != extensions.end(); ++it) { |
475 if (it->uri == name) | 499 if (it->uri == name) |
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
978 | 1002 |
979 struct DataMediaInfo { | 1003 struct DataMediaInfo { |
980 void Clear() { | 1004 void Clear() { |
981 senders.clear(); | 1005 senders.clear(); |
982 receivers.clear(); | 1006 receivers.clear(); |
983 } | 1007 } |
984 std::vector<DataSenderInfo> senders; | 1008 std::vector<DataSenderInfo> senders; |
985 std::vector<DataReceiverInfo> receivers; | 1009 std::vector<DataReceiverInfo> receivers; |
986 }; | 1010 }; |
987 | 1011 |
| 1012 template <class Codec> |
| 1013 struct RtpParameters { |
| 1014 virtual std::string ToString() { |
| 1015 std::ostringstream ost; |
| 1016 ost << "{"; |
| 1017 ost << "codecs: " << VectorToString(codecs) << ", "; |
| 1018 ost << "extensions: " << VectorToString(extensions); |
| 1019 ost << "}"; |
| 1020 return ost.str(); |
| 1021 } |
| 1022 |
| 1023 std::vector<Codec> codecs; |
| 1024 std::vector<RtpHeaderExtension> extensions; |
| 1025 // TODO(pthatcher): Add streams. |
| 1026 }; |
| 1027 |
| 1028 template <class Codec, class Options> |
| 1029 struct RtpSendParameters : RtpParameters<Codec> { |
| 1030 std::string ToString() override { |
| 1031 std::ostringstream ost; |
| 1032 ost << "{"; |
| 1033 ost << "codecs: " << VectorToString(this->codecs) << ", "; |
| 1034 ost << "extensions: " << VectorToString(this->extensions) << ", "; |
| 1035 ost << "max_bandiwidth_bps: " << max_bandwidth_bps << ", "; |
| 1036 ost << "options: " << options.ToString(); |
| 1037 ost << "}"; |
| 1038 return ost.str(); |
| 1039 } |
| 1040 |
| 1041 int max_bandwidth_bps = -1; |
| 1042 Options options; |
| 1043 }; |
| 1044 |
| 1045 struct AudioSendParameters : RtpSendParameters<AudioCodec, AudioOptions> { |
| 1046 }; |
| 1047 |
| 1048 struct AudioRecvParameters : RtpParameters<AudioCodec> { |
| 1049 }; |
| 1050 |
988 class VoiceMediaChannel : public MediaChannel { | 1051 class VoiceMediaChannel : public MediaChannel { |
989 public: | 1052 public: |
990 enum Error { | 1053 enum Error { |
991 ERROR_NONE = 0, // No error. | 1054 ERROR_NONE = 0, // No error. |
992 ERROR_OTHER, // Other errors. | 1055 ERROR_OTHER, // Other errors. |
993 ERROR_REC_DEVICE_OPEN_FAILED = 100, // Could not open mic. | 1056 ERROR_REC_DEVICE_OPEN_FAILED = 100, // Could not open mic. |
994 ERROR_REC_DEVICE_MUTED, // Mic was muted by OS. | 1057 ERROR_REC_DEVICE_MUTED, // Mic was muted by OS. |
995 ERROR_REC_DEVICE_SILENT, // No background noise picked up. | 1058 ERROR_REC_DEVICE_SILENT, // No background noise picked up. |
996 ERROR_REC_DEVICE_SATURATION, // Mic input is clipping. | 1059 ERROR_REC_DEVICE_SATURATION, // Mic input is clipping. |
997 ERROR_REC_DEVICE_REMOVED, // Mic was removed while active. | 1060 ERROR_REC_DEVICE_REMOVED, // Mic was removed while active. |
998 ERROR_REC_RUNTIME_ERROR, // Processing is encountering errors. | 1061 ERROR_REC_RUNTIME_ERROR, // Processing is encountering errors. |
999 ERROR_REC_SRTP_ERROR, // Generic SRTP failure. | 1062 ERROR_REC_SRTP_ERROR, // Generic SRTP failure. |
1000 ERROR_REC_SRTP_AUTH_FAILED, // Failed to authenticate packets. | 1063 ERROR_REC_SRTP_AUTH_FAILED, // Failed to authenticate packets. |
1001 ERROR_REC_TYPING_NOISE_DETECTED, // Typing noise is detected. | 1064 ERROR_REC_TYPING_NOISE_DETECTED, // Typing noise is detected. |
1002 ERROR_PLAY_DEVICE_OPEN_FAILED = 200, // Could not open playout. | 1065 ERROR_PLAY_DEVICE_OPEN_FAILED = 200, // Could not open playout. |
1003 ERROR_PLAY_DEVICE_MUTED, // Playout muted by OS. | 1066 ERROR_PLAY_DEVICE_MUTED, // Playout muted by OS. |
1004 ERROR_PLAY_DEVICE_REMOVED, // Playout removed while active. | 1067 ERROR_PLAY_DEVICE_REMOVED, // Playout removed while active. |
1005 ERROR_PLAY_RUNTIME_ERROR, // Errors in voice processing. | 1068 ERROR_PLAY_RUNTIME_ERROR, // Errors in voice processing. |
1006 ERROR_PLAY_SRTP_ERROR, // Generic SRTP failure. | 1069 ERROR_PLAY_SRTP_ERROR, // Generic SRTP failure. |
1007 ERROR_PLAY_SRTP_AUTH_FAILED, // Failed to authenticate packets. | 1070 ERROR_PLAY_SRTP_AUTH_FAILED, // Failed to authenticate packets. |
1008 ERROR_PLAY_SRTP_REPLAY, // Packet replay detected. | 1071 ERROR_PLAY_SRTP_REPLAY, // Packet replay detected. |
1009 }; | 1072 }; |
1010 | 1073 |
1011 VoiceMediaChannel() {} | 1074 VoiceMediaChannel() {} |
1012 virtual ~VoiceMediaChannel() {} | 1075 virtual ~VoiceMediaChannel() {} |
| 1076 // TODO(pthatcher): Remove SetSendCodecs, |
| 1077 // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions |
| 1078 // once all implementations implement SetSendParameters. |
| 1079 virtual bool SetSendParameters(const AudioSendParameters& params) { |
| 1080 return (SetSendCodecs(params.codecs) && |
| 1081 SetSendRtpHeaderExtensions(params.extensions) && |
| 1082 SetMaxSendBandwidth(params.max_bandwidth_bps) && |
| 1083 SetOptions(params.options)); |
| 1084 } |
| 1085 // TODO(pthatcher): Remove SetRecvCodecs and |
| 1086 // SetRecvRtpHeaderExtensions once all implementations implement |
| 1087 // SetRecvParameters. |
| 1088 virtual bool SetRecvParameters(const AudioRecvParameters& params) { |
| 1089 return (SetRecvCodecs(params.codecs) && |
| 1090 SetRecvRtpHeaderExtensions(params.extensions)); |
| 1091 } |
1013 // Sets the codecs/payload types to be used for incoming media. | 1092 // Sets the codecs/payload types to be used for incoming media. |
1014 virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) = 0; | 1093 virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) = 0; |
1015 // Sets the codecs/payload types to be used for outgoing media. | 1094 // Sets the codecs/payload types to be used for outgoing media. |
1016 virtual bool SetSendCodecs(const std::vector<AudioCodec>& codecs) = 0; | 1095 virtual bool SetSendCodecs(const std::vector<AudioCodec>& codecs) = 0; |
1017 // Starts or stops playout of received audio. | 1096 // Starts or stops playout of received audio. |
1018 virtual bool SetPlayout(bool playout) = 0; | 1097 virtual bool SetPlayout(bool playout) = 0; |
1019 // Starts or stops sending (and potentially capture) of local audio. | 1098 // Starts or stops sending (and potentially capture) of local audio. |
1020 virtual bool SetSend(SendFlags flag) = 0; | 1099 virtual bool SetSend(SendFlags flag) = 0; |
1021 // Sets the renderer object to be used for the specified remote audio stream. | 1100 // Sets the renderer object to be used for the specified remote audio stream. |
1022 virtual bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer) = 0; | 1101 virtual bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer) = 0; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1058 } | 1137 } |
1059 // Sets the media options to use. | 1138 // Sets the media options to use. |
1060 virtual bool SetOptions(const AudioOptions& options) = 0; | 1139 virtual bool SetOptions(const AudioOptions& options) = 0; |
1061 virtual bool GetOptions(AudioOptions* options) const = 0; | 1140 virtual bool GetOptions(AudioOptions* options) const = 0; |
1062 | 1141 |
1063 // Signal errors from MediaChannel. Arguments are: | 1142 // Signal errors from MediaChannel. Arguments are: |
1064 // ssrc(uint32), and error(VoiceMediaChannel::Error). | 1143 // ssrc(uint32), and error(VoiceMediaChannel::Error). |
1065 sigslot::signal2<uint32, VoiceMediaChannel::Error> SignalMediaError; | 1144 sigslot::signal2<uint32, VoiceMediaChannel::Error> SignalMediaError; |
1066 }; | 1145 }; |
1067 | 1146 |
| 1147 struct VideoSendParameters : RtpSendParameters<VideoCodec, VideoOptions> { |
| 1148 }; |
| 1149 |
| 1150 struct VideoRecvParameters : RtpParameters<VideoCodec> { |
| 1151 }; |
| 1152 |
1068 class VideoMediaChannel : public MediaChannel { | 1153 class VideoMediaChannel : public MediaChannel { |
1069 public: | 1154 public: |
1070 enum Error { | 1155 enum Error { |
1071 ERROR_NONE = 0, // No error. | 1156 ERROR_NONE = 0, // No error. |
1072 ERROR_OTHER, // Other errors. | 1157 ERROR_OTHER, // Other errors. |
1073 ERROR_REC_DEVICE_OPEN_FAILED = 100, // Could not open camera. | 1158 ERROR_REC_DEVICE_OPEN_FAILED = 100, // Could not open camera. |
1074 ERROR_REC_DEVICE_NO_DEVICE, // No camera. | 1159 ERROR_REC_DEVICE_NO_DEVICE, // No camera. |
1075 ERROR_REC_DEVICE_IN_USE, // Device is in already use. | 1160 ERROR_REC_DEVICE_IN_USE, // Device is in already use. |
1076 ERROR_REC_DEVICE_REMOVED, // Device is removed. | 1161 ERROR_REC_DEVICE_REMOVED, // Device is removed. |
1077 ERROR_REC_SRTP_ERROR, // Generic sender SRTP failure. | 1162 ERROR_REC_SRTP_ERROR, // Generic sender SRTP failure. |
1078 ERROR_REC_SRTP_AUTH_FAILED, // Failed to authenticate packets. | 1163 ERROR_REC_SRTP_AUTH_FAILED, // Failed to authenticate packets. |
1079 ERROR_REC_CPU_MAX_CANT_DOWNGRADE, // Can't downgrade capture anymore. | 1164 ERROR_REC_CPU_MAX_CANT_DOWNGRADE, // Can't downgrade capture anymore. |
1080 ERROR_PLAY_SRTP_ERROR = 200, // Generic receiver SRTP failure. | 1165 ERROR_PLAY_SRTP_ERROR = 200, // Generic receiver SRTP failure. |
1081 ERROR_PLAY_SRTP_AUTH_FAILED, // Failed to authenticate packets. | 1166 ERROR_PLAY_SRTP_AUTH_FAILED, // Failed to authenticate packets. |
1082 ERROR_PLAY_SRTP_REPLAY, // Packet replay detected. | 1167 ERROR_PLAY_SRTP_REPLAY, // Packet replay detected. |
1083 }; | 1168 }; |
1084 | 1169 |
1085 VideoMediaChannel() : renderer_(NULL) {} | 1170 VideoMediaChannel() : renderer_(NULL) {} |
1086 virtual ~VideoMediaChannel() {} | 1171 virtual ~VideoMediaChannel() {} |
1087 // Allow video channel to unhook itself from an associated voice channel. | 1172 // Allow video channel to unhook itself from an associated voice channel. |
1088 virtual void DetachVoiceChannel() = 0; | 1173 virtual void DetachVoiceChannel() = 0; |
| 1174 // TODO(pthatcher): Remove SetSendCodecs, |
| 1175 // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions |
| 1176 // once all implementations implement SetSendParameters. |
| 1177 virtual bool SetSendParameters(const VideoSendParameters& params) { |
| 1178 return (SetSendCodecs(params.codecs) && |
| 1179 SetSendRtpHeaderExtensions(params.extensions) && |
| 1180 SetMaxSendBandwidth(params.max_bandwidth_bps) && |
| 1181 SetOptions(params.options)); |
| 1182 } |
| 1183 // TODO(pthatcher): Remove SetRecvCodecs and |
| 1184 // SetRecvRtpHeaderExtensions once all implementations implement |
| 1185 // SetRecvParameters. |
| 1186 virtual bool SetRecvParameters(const VideoRecvParameters& params) { |
| 1187 return (SetRecvCodecs(params.codecs) && |
| 1188 SetRecvRtpHeaderExtensions(params.extensions)); |
| 1189 } |
1089 // Sets the codecs/payload types to be used for incoming media. | 1190 // Sets the codecs/payload types to be used for incoming media. |
1090 virtual bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) = 0; | 1191 virtual bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) = 0; |
1091 // Sets the codecs/payload types to be used for outgoing media. | 1192 // Sets the codecs/payload types to be used for outgoing media. |
1092 virtual bool SetSendCodecs(const std::vector<VideoCodec>& codecs) = 0; | 1193 virtual bool SetSendCodecs(const std::vector<VideoCodec>& codecs) = 0; |
1093 // Gets the currently set codecs/payload types to be used for outgoing media. | 1194 // Gets the currently set codecs/payload types to be used for outgoing media. |
1094 virtual bool GetSendCodec(VideoCodec* send_codec) = 0; | 1195 virtual bool GetSendCodec(VideoCodec* send_codec) = 0; |
1095 // Sets the format of a specified outgoing stream. | 1196 // Sets the format of a specified outgoing stream. |
1096 virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) = 0; | 1197 virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) = 0; |
1097 // Starts or stops playout of received video. | 1198 // Starts or stops playout of received video. |
1098 virtual bool SetRender(bool render) = 0; | 1199 virtual bool SetRender(bool render) = 0; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 // TODO(pthatcher): Make these true by default? | 1283 // TODO(pthatcher): Make these true by default? |
1183 ordered(false), | 1284 ordered(false), |
1184 reliable(false), | 1285 reliable(false), |
1185 max_rtx_count(0), | 1286 max_rtx_count(0), |
1186 max_rtx_ms(0) { | 1287 max_rtx_ms(0) { |
1187 } | 1288 } |
1188 }; | 1289 }; |
1189 | 1290 |
1190 enum SendDataResult { SDR_SUCCESS, SDR_ERROR, SDR_BLOCK }; | 1291 enum SendDataResult { SDR_SUCCESS, SDR_ERROR, SDR_BLOCK }; |
1191 | 1292 |
| 1293 struct DataOptions { |
| 1294 std::string ToString() { |
| 1295 return "{}"; |
| 1296 } |
| 1297 }; |
| 1298 |
| 1299 struct DataSendParameters : RtpSendParameters<DataCodec, DataOptions> { |
| 1300 std::string ToString() { |
| 1301 std::ostringstream ost; |
| 1302 // Options and extensions aren't used. |
| 1303 ost << "{"; |
| 1304 ost << "codecs: " << VectorToString(codecs) << ", "; |
| 1305 ost << "max_bandiwidth_bps: " << max_bandwidth_bps; |
| 1306 ost << "}"; |
| 1307 return ost.str(); |
| 1308 } |
| 1309 }; |
| 1310 |
| 1311 struct DataRecvParameters : RtpParameters<DataCodec> { |
| 1312 }; |
| 1313 |
1192 class DataMediaChannel : public MediaChannel { | 1314 class DataMediaChannel : public MediaChannel { |
1193 public: | 1315 public: |
1194 enum Error { | 1316 enum Error { |
1195 ERROR_NONE = 0, // No error. | 1317 ERROR_NONE = 0, // No error. |
1196 ERROR_OTHER, // Other errors. | 1318 ERROR_OTHER, // Other errors. |
1197 ERROR_SEND_SRTP_ERROR = 200, // Generic SRTP failure. | 1319 ERROR_SEND_SRTP_ERROR = 200, // Generic SRTP failure. |
1198 ERROR_SEND_SRTP_AUTH_FAILED, // Failed to authenticate packets. | 1320 ERROR_SEND_SRTP_AUTH_FAILED, // Failed to authenticate packets. |
1199 ERROR_RECV_SRTP_ERROR, // Generic SRTP failure. | 1321 ERROR_RECV_SRTP_ERROR, // Generic SRTP failure. |
1200 ERROR_RECV_SRTP_AUTH_FAILED, // Failed to authenticate packets. | 1322 ERROR_RECV_SRTP_AUTH_FAILED, // Failed to authenticate packets. |
1201 ERROR_RECV_SRTP_REPLAY, // Packet replay detected. | 1323 ERROR_RECV_SRTP_REPLAY, // Packet replay detected. |
1202 }; | 1324 }; |
1203 | 1325 |
1204 virtual ~DataMediaChannel() {} | 1326 virtual ~DataMediaChannel() {} |
1205 | 1327 |
| 1328 // TODO(pthatcher): Remove SetSendCodecs, |
| 1329 // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions |
| 1330 // once all implementations implement SetSendParameters. |
| 1331 virtual bool SetSendParameters(const DataSendParameters& params) { |
| 1332 return (SetSendCodecs(params.codecs) && |
| 1333 SetMaxSendBandwidth(params.max_bandwidth_bps)); |
| 1334 } |
| 1335 // TODO(pthatcher): Remove SetRecvCodecs and |
| 1336 // SetRecvRtpHeaderExtensions once all implementations implement |
| 1337 // SetRecvParameters. |
| 1338 virtual bool SetRecvParameters(const DataRecvParameters& params) { |
| 1339 return SetRecvCodecs(params.codecs); |
| 1340 } |
1206 virtual bool SetSendCodecs(const std::vector<DataCodec>& codecs) = 0; | 1341 virtual bool SetSendCodecs(const std::vector<DataCodec>& codecs) = 0; |
1207 virtual bool SetRecvCodecs(const std::vector<DataCodec>& codecs) = 0; | 1342 virtual bool SetRecvCodecs(const std::vector<DataCodec>& codecs) = 0; |
1208 | 1343 |
1209 virtual bool MuteStream(uint32 ssrc, bool on) { return false; } | 1344 virtual bool MuteStream(uint32 ssrc, bool on) { return false; } |
1210 // TODO(pthatcher): Implement this. | 1345 // TODO(pthatcher): Implement this. |
1211 virtual bool GetStats(DataMediaInfo* info) { return true; } | 1346 virtual bool GetStats(DataMediaInfo* info) { return true; } |
1212 | 1347 |
1213 virtual bool SetSend(bool send) = 0; | 1348 virtual bool SetSend(bool send) = 0; |
1214 virtual bool SetReceive(bool receive) = 0; | 1349 virtual bool SetReceive(bool receive) = 0; |
1215 | 1350 |
(...skipping 11 matching lines...) Expand all Loading... |
1227 // Signal when the media channel is ready to send the stream. Arguments are: | 1362 // Signal when the media channel is ready to send the stream. Arguments are: |
1228 // writable(bool) | 1363 // writable(bool) |
1229 sigslot::signal1<bool> SignalReadyToSend; | 1364 sigslot::signal1<bool> SignalReadyToSend; |
1230 // Signal for notifying that the remote side has closed the DataChannel. | 1365 // Signal for notifying that the remote side has closed the DataChannel. |
1231 sigslot::signal1<uint32> SignalStreamClosedRemotely; | 1366 sigslot::signal1<uint32> SignalStreamClosedRemotely; |
1232 }; | 1367 }; |
1233 | 1368 |
1234 } // namespace cricket | 1369 } // namespace cricket |
1235 | 1370 |
1236 #endif // TALK_MEDIA_BASE_MEDIACHANNEL_H_ | 1371 #endif // TALK_MEDIA_BASE_MEDIACHANNEL_H_ |
OLD | NEW |