| 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 |