| 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 548 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   559   // multiple SSRCs. |   559   // multiple SSRCs. | 
|   560   virtual bool RemoveSendStream(uint32 ssrc) = 0; |   560   virtual bool RemoveSendStream(uint32 ssrc) = 0; | 
|   561   // Creates a new incoming media stream with SSRCs and CNAME as described |   561   // Creates a new incoming media stream with SSRCs and CNAME as described | 
|   562   // by sp. |   562   // by sp. | 
|   563   virtual bool AddRecvStream(const StreamParams& sp) = 0; |   563   virtual bool AddRecvStream(const StreamParams& sp) = 0; | 
|   564   // Removes an incoming media stream. |   564   // Removes an incoming media stream. | 
|   565   // ssrc must be the first SSRC of the media stream if the stream uses |   565   // ssrc must be the first SSRC of the media stream if the stream uses | 
|   566   // multiple SSRCs. |   566   // multiple SSRCs. | 
|   567   virtual bool RemoveRecvStream(uint32 ssrc) = 0; |   567   virtual bool RemoveRecvStream(uint32 ssrc) = 0; | 
|   568  |   568  | 
|   569   // Mutes the channel. |  | 
|   570   virtual bool MuteStream(uint32 ssrc, bool on) = 0; |  | 
|   571  |  | 
|   572   // Sets the RTP extension headers and IDs to use when sending RTP. |  | 
|   573   virtual bool SetRecvRtpHeaderExtensions( |  | 
|   574       const std::vector<RtpHeaderExtension>& extensions) = 0; |  | 
|   575   virtual bool SetSendRtpHeaderExtensions( |  | 
|   576       const std::vector<RtpHeaderExtension>& extensions) = 0; |  | 
|   577   // Returns the absoulte sendtime extension id value from media channel. |   569   // Returns the absoulte sendtime extension id value from media channel. | 
|   578   virtual int GetRtpSendTimeExtnId() const { |   570   virtual int GetRtpSendTimeExtnId() const { | 
|   579     return -1; |   571     return -1; | 
|   580   } |   572   } | 
|   581   // Sets the maximum allowed bandwidth to use when sending data. |  | 
|   582   virtual bool SetMaxSendBandwidth(int bps) = 0; |  | 
|   583  |   573  | 
|   584   // Base method to send packet using NetworkInterface. |   574   // Base method to send packet using NetworkInterface. | 
|   585   bool SendPacket(rtc::Buffer* packet) { |   575   bool SendPacket(rtc::Buffer* packet) { | 
|   586     return DoSendPacket(packet, false); |   576     return DoSendPacket(packet, false); | 
|   587   } |   577   } | 
|   588  |   578  | 
|   589   bool SendRtcp(rtc::Buffer* packet) { |   579   bool SendRtcp(rtc::Buffer* packet) { | 
|   590     return DoSendPacket(packet, true); |   580     return DoSendPacket(packet, true); | 
|   591   } |   581   } | 
|   592  |   582  | 
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1066     ERROR_PLAY_DEVICE_MUTED,              // Playout muted by OS. |  1056     ERROR_PLAY_DEVICE_MUTED,              // Playout muted by OS. | 
|  1067     ERROR_PLAY_DEVICE_REMOVED,            // Playout removed while active. |  1057     ERROR_PLAY_DEVICE_REMOVED,            // Playout removed while active. | 
|  1068     ERROR_PLAY_RUNTIME_ERROR,             // Errors in voice processing. |  1058     ERROR_PLAY_RUNTIME_ERROR,             // Errors in voice processing. | 
|  1069     ERROR_PLAY_SRTP_ERROR,                // Generic SRTP failure. |  1059     ERROR_PLAY_SRTP_ERROR,                // Generic SRTP failure. | 
|  1070     ERROR_PLAY_SRTP_AUTH_FAILED,          // Failed to authenticate packets. |  1060     ERROR_PLAY_SRTP_AUTH_FAILED,          // Failed to authenticate packets. | 
|  1071     ERROR_PLAY_SRTP_REPLAY,               // Packet replay detected. |  1061     ERROR_PLAY_SRTP_REPLAY,               // Packet replay detected. | 
|  1072   }; |  1062   }; | 
|  1073  |  1063  | 
|  1074   VoiceMediaChannel() {} |  1064   VoiceMediaChannel() {} | 
|  1075   virtual ~VoiceMediaChannel() {} |  1065   virtual ~VoiceMediaChannel() {} | 
|  1076   // TODO(pthatcher): Remove SetSendCodecs, |  1066   virtual bool SetSendParameters(const AudioSendParameters& params) = 0; | 
|  1077   // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions |  1067   virtual bool SetRecvParameters(const AudioRecvParameters& params) = 0; | 
|  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   } |  | 
|  1092   // Sets the codecs/payload types to be used for incoming media. |  | 
|  1093   virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) = 0; |  | 
|  1094   // Sets the codecs/payload types to be used for outgoing media. |  | 
|  1095   virtual bool SetSendCodecs(const std::vector<AudioCodec>& codecs) = 0; |  | 
|  1096   // Starts or stops playout of received audio. |  1068   // Starts or stops playout of received audio. | 
|  1097   virtual bool SetPlayout(bool playout) = 0; |  1069   virtual bool SetPlayout(bool playout) = 0; | 
|  1098   // Starts or stops sending (and potentially capture) of local audio. |  1070   // Starts or stops sending (and potentially capture) of local audio. | 
|  1099   virtual bool SetSend(SendFlags flag) = 0; |  1071   virtual bool SetSend(SendFlags flag) = 0; | 
 |  1072   // Mutes the channel. | 
 |  1073   virtual bool MuteStream(uint32 ssrc, bool on, | 
 |  1074                           const AudioOptions* options) = 0; | 
|  1100   // Sets the renderer object to be used for the specified remote audio stream. |  1075   // Sets the renderer object to be used for the specified remote audio stream. | 
|  1101   virtual bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer) = 0; |  1076   virtual bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer) = 0; | 
|  1102   // Sets the renderer object to be used for the specified local audio stream. |  1077   // Sets the renderer object to be used for the specified local audio stream. | 
|  1103   virtual bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer) = 0; |  1078   virtual bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer) = 0; | 
|  1104   // Gets current energy levels for all incoming streams. |  1079   // Gets current energy levels for all incoming streams. | 
|  1105   virtual bool GetActiveStreams(AudioInfo::StreamList* actives) = 0; |  1080   virtual bool GetActiveStreams(AudioInfo::StreamList* actives) = 0; | 
|  1106   // Get the current energy level of the stream sent to the speaker. |  1081   // Get the current energy level of the stream sent to the speaker. | 
|  1107   virtual int GetOutputLevel() = 0; |  1082   virtual int GetOutputLevel() = 0; | 
|  1108   // Get the time in milliseconds since last recorded keystroke, or negative. |  1083   // Get the time in milliseconds since last recorded keystroke, or negative. | 
|  1109   virtual int GetTimeSinceLastTyping() = 0; |  1084   virtual int GetTimeSinceLastTyping() = 0; | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
|  1128   // DTMF event 0-9, *, #, A-D. |  1103   // DTMF event 0-9, *, #, A-D. | 
|  1129   virtual bool InsertDtmf(uint32 ssrc, int event, int duration, int flags) = 0; |  1104   virtual bool InsertDtmf(uint32 ssrc, int event, int duration, int flags) = 0; | 
|  1130   // Gets quality stats for the channel. |  1105   // Gets quality stats for the channel. | 
|  1131   virtual bool GetStats(VoiceMediaInfo* info) = 0; |  1106   virtual bool GetStats(VoiceMediaInfo* info) = 0; | 
|  1132   // Gets last reported error for this media channel. |  1107   // Gets last reported error for this media channel. | 
|  1133   virtual void GetLastMediaError(uint32* ssrc, |  1108   virtual void GetLastMediaError(uint32* ssrc, | 
|  1134                                  VoiceMediaChannel::Error* error) { |  1109                                  VoiceMediaChannel::Error* error) { | 
|  1135     ASSERT(error != NULL); |  1110     ASSERT(error != NULL); | 
|  1136     *error = ERROR_NONE; |  1111     *error = ERROR_NONE; | 
|  1137   } |  1112   } | 
|  1138   // Sets the media options to use. |  1113   // Gets the media options to use. | 
|  1139   virtual bool SetOptions(const AudioOptions& options) = 0; |  | 
|  1140   virtual bool GetOptions(AudioOptions* options) const = 0; |  1114   virtual bool GetOptions(AudioOptions* options) const = 0; | 
|  1141  |  1115  | 
|  1142   // Signal errors from MediaChannel.  Arguments are: |  1116   // Signal errors from MediaChannel.  Arguments are: | 
|  1143   //     ssrc(uint32), and error(VoiceMediaChannel::Error). |  1117   //     ssrc(uint32), and error(VoiceMediaChannel::Error). | 
|  1144   sigslot::signal2<uint32, VoiceMediaChannel::Error> SignalMediaError; |  1118   sigslot::signal2<uint32, VoiceMediaChannel::Error> SignalMediaError; | 
|  1145 }; |  1119 }; | 
|  1146  |  1120  | 
|  1147 struct VideoSendParameters : RtpSendParameters<VideoCodec, VideoOptions> { |  1121 struct VideoSendParameters : RtpSendParameters<VideoCodec, VideoOptions> { | 
|  1148 }; |  1122 }; | 
|  1149  |  1123  | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|  1164     ERROR_REC_CPU_MAX_CANT_DOWNGRADE,     // Can't downgrade capture anymore. |  1138     ERROR_REC_CPU_MAX_CANT_DOWNGRADE,     // Can't downgrade capture anymore. | 
|  1165     ERROR_PLAY_SRTP_ERROR = 200,          // Generic receiver SRTP failure. |  1139     ERROR_PLAY_SRTP_ERROR = 200,          // Generic receiver SRTP failure. | 
|  1166     ERROR_PLAY_SRTP_AUTH_FAILED,          // Failed to authenticate packets. |  1140     ERROR_PLAY_SRTP_AUTH_FAILED,          // Failed to authenticate packets. | 
|  1167     ERROR_PLAY_SRTP_REPLAY,               // Packet replay detected. |  1141     ERROR_PLAY_SRTP_REPLAY,               // Packet replay detected. | 
|  1168   }; |  1142   }; | 
|  1169  |  1143  | 
|  1170   VideoMediaChannel() : renderer_(NULL) {} |  1144   VideoMediaChannel() : renderer_(NULL) {} | 
|  1171   virtual ~VideoMediaChannel() {} |  1145   virtual ~VideoMediaChannel() {} | 
|  1172   // Allow video channel to unhook itself from an associated voice channel. |  1146   // Allow video channel to unhook itself from an associated voice channel. | 
|  1173   virtual void DetachVoiceChannel() = 0; |  1147   virtual void DetachVoiceChannel() = 0; | 
|  1174   // TODO(pthatcher): Remove SetSendCodecs, |  1148   virtual bool SetSendParameters(const VideoSendParameters& params) = 0; | 
|  1175   // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions |  1149   virtual bool SetRecvParameters(const VideoRecvParameters& params) = 0; | 
|  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   } |  | 
|  1190   // Sets the codecs/payload types to be used for incoming media. |  | 
|  1191   virtual bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) = 0; |  | 
|  1192   // Sets the codecs/payload types to be used for outgoing media. |  | 
|  1193   virtual bool SetSendCodecs(const std::vector<VideoCodec>& codecs) = 0; |  | 
|  1194   // Gets the currently set codecs/payload types to be used for outgoing media. |  1150   // Gets the currently set codecs/payload types to be used for outgoing media. | 
|  1195   virtual bool GetSendCodec(VideoCodec* send_codec) = 0; |  1151   virtual bool GetSendCodec(VideoCodec* send_codec) = 0; | 
|  1196   // Sets the format of a specified outgoing stream. |  1152   // Sets the format of a specified outgoing stream. | 
|  1197   virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) = 0; |  1153   virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) = 0; | 
|  1198   // Starts or stops playout of received video. |  1154   // Starts or stops playout of received video. | 
|  1199   virtual bool SetRender(bool render) = 0; |  1155   virtual bool SetRender(bool render) = 0; | 
|  1200   // Starts or stops transmission (and potentially capture) of local video. |  1156   // Starts or stops transmission (and potentially capture) of local video. | 
|  1201   virtual bool SetSend(bool send) = 0; |  1157   virtual bool SetSend(bool send) = 0; | 
 |  1158   // Mutes the channel. | 
 |  1159   virtual bool MuteStream(uint32 ssrc, bool on, | 
 |  1160                           const VideoOptions* options) = 0; | 
|  1202   // Sets the renderer object to be used for the specified stream. |  1161   // Sets the renderer object to be used for the specified stream. | 
|  1203   // If SSRC is 0, the renderer is used for the 'default' stream. |  1162   // If SSRC is 0, the renderer is used for the 'default' stream. | 
|  1204   virtual bool SetRenderer(uint32 ssrc, VideoRenderer* renderer) = 0; |  1163   virtual bool SetRenderer(uint32 ssrc, VideoRenderer* renderer) = 0; | 
|  1205   // If |ssrc| is 0, replace the default capturer (engine capturer) with |  1164   // If |ssrc| is 0, replace the default capturer (engine capturer) with | 
|  1206   // |capturer|. If |ssrc| is non zero create a new stream with |ssrc| as SSRC. |  1165   // |capturer|. If |ssrc| is non zero create a new stream with |ssrc| as SSRC. | 
|  1207   virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) = 0; |  1166   virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) = 0; | 
|  1208   // Gets quality stats for the channel. |  1167   // Gets quality stats for the channel. | 
|  1209   virtual bool GetStats(VideoMediaInfo* info) = 0; |  1168   virtual bool GetStats(VideoMediaInfo* info) = 0; | 
|  1210   // Send an intra frame to the receivers. |  1169   // Send an intra frame to the receivers. | 
|  1211   virtual bool SendIntraFrame() = 0; |  1170   virtual bool SendIntraFrame() = 0; | 
|  1212   // Reuqest each of the remote senders to send an intra frame. |  1171   // Reuqest each of the remote senders to send an intra frame. | 
|  1213   virtual bool RequestIntraFrame() = 0; |  1172   virtual bool RequestIntraFrame() = 0; | 
|  1214   // Sets the media options to use. |  1173   // Gets the media options to use. | 
|  1215   virtual bool SetOptions(const VideoOptions& options) = 0; |  | 
|  1216   virtual bool GetOptions(VideoOptions* options) const = 0; |  1174   virtual bool GetOptions(VideoOptions* options) const = 0; | 
|  1217   virtual void UpdateAspectRatio(int ratio_w, int ratio_h) = 0; |  1175   virtual void UpdateAspectRatio(int ratio_w, int ratio_h) = 0; | 
|  1218  |  1176  | 
|  1219   // Signal errors from MediaChannel.  Arguments are: |  1177   // Signal errors from MediaChannel.  Arguments are: | 
|  1220   //     ssrc(uint32), and error(VideoMediaChannel::Error). |  1178   //     ssrc(uint32), and error(VideoMediaChannel::Error). | 
|  1221   sigslot::signal2<uint32, Error> SignalMediaError; |  1179   sigslot::signal2<uint32, Error> SignalMediaError; | 
|  1222  |  1180  | 
|  1223  protected: |  1181  protected: | 
|  1224   VideoRenderer *renderer_; |  1182   VideoRenderer *renderer_; | 
|  1225 }; |  1183 }; | 
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1318     ERROR_OTHER,                          // Other errors. |  1276     ERROR_OTHER,                          // Other errors. | 
|  1319     ERROR_SEND_SRTP_ERROR = 200,          // Generic SRTP failure. |  1277     ERROR_SEND_SRTP_ERROR = 200,          // Generic SRTP failure. | 
|  1320     ERROR_SEND_SRTP_AUTH_FAILED,          // Failed to authenticate packets. |  1278     ERROR_SEND_SRTP_AUTH_FAILED,          // Failed to authenticate packets. | 
|  1321     ERROR_RECV_SRTP_ERROR,                // Generic SRTP failure. |  1279     ERROR_RECV_SRTP_ERROR,                // Generic SRTP failure. | 
|  1322     ERROR_RECV_SRTP_AUTH_FAILED,          // Failed to authenticate packets. |  1280     ERROR_RECV_SRTP_AUTH_FAILED,          // Failed to authenticate packets. | 
|  1323     ERROR_RECV_SRTP_REPLAY,               // Packet replay detected. |  1281     ERROR_RECV_SRTP_REPLAY,               // Packet replay detected. | 
|  1324   }; |  1282   }; | 
|  1325  |  1283  | 
|  1326   virtual ~DataMediaChannel() {} |  1284   virtual ~DataMediaChannel() {} | 
|  1327  |  1285  | 
|  1328   // TODO(pthatcher): Remove SetSendCodecs, |  1286   virtual bool SetSendParameters(const DataSendParameters& params) = 0; | 
|  1329   // SetSendRtpHeaderExtensions, SetMaxSendBandwidth, and SetOptions |  1287   virtual bool SetRecvParameters(const DataRecvParameters& params) = 0; | 
|  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   } |  | 
|  1341   virtual bool SetSendCodecs(const std::vector<DataCodec>& codecs) = 0; |  | 
|  1342   virtual bool SetRecvCodecs(const std::vector<DataCodec>& codecs) = 0; |  | 
|  1343  |  1288  | 
|  1344   virtual bool MuteStream(uint32 ssrc, bool on) { return false; } |  | 
|  1345   // TODO(pthatcher): Implement this. |  1289   // TODO(pthatcher): Implement this. | 
|  1346   virtual bool GetStats(DataMediaInfo* info) { return true; } |  1290   virtual bool GetStats(DataMediaInfo* info) { return true; } | 
|  1347  |  1291  | 
|  1348   virtual bool SetSend(bool send) = 0; |  1292   virtual bool SetSend(bool send) = 0; | 
|  1349   virtual bool SetReceive(bool receive) = 0; |  1293   virtual bool SetReceive(bool receive) = 0; | 
|  1350  |  1294  | 
|  1351   virtual bool SendData( |  1295   virtual bool SendData( | 
|  1352       const SendDataParams& params, |  1296       const SendDataParams& params, | 
|  1353       const rtc::Buffer& payload, |  1297       const rtc::Buffer& payload, | 
|  1354       SendDataResult* result = NULL) = 0; |  1298       SendDataResult* result = NULL) = 0; | 
|  1355   // Signals when data is received (params, data, len) |  1299   // Signals when data is received (params, data, len) | 
|  1356   sigslot::signal3<const ReceiveDataParams&, |  1300   sigslot::signal3<const ReceiveDataParams&, | 
|  1357                    const char*, |  1301                    const char*, | 
|  1358                    size_t> SignalDataReceived; |  1302                    size_t> SignalDataReceived; | 
|  1359   // Signal errors from MediaChannel.  Arguments are: |  1303   // Signal errors from MediaChannel.  Arguments are: | 
|  1360   //     ssrc(uint32), and error(DataMediaChannel::Error). |  1304   //     ssrc(uint32), and error(DataMediaChannel::Error). | 
|  1361   sigslot::signal2<uint32, DataMediaChannel::Error> SignalMediaError; |  1305   sigslot::signal2<uint32, DataMediaChannel::Error> SignalMediaError; | 
|  1362   // Signal when the media channel is ready to send the stream. Arguments are: |  1306   // Signal when the media channel is ready to send the stream. Arguments are: | 
|  1363   //     writable(bool) |  1307   //     writable(bool) | 
|  1364   sigslot::signal1<bool> SignalReadyToSend; |  1308   sigslot::signal1<bool> SignalReadyToSend; | 
|  1365   // Signal for notifying that the remote side has closed the DataChannel. |  1309   // Signal for notifying that the remote side has closed the DataChannel. | 
|  1366   sigslot::signal1<uint32> SignalStreamClosedRemotely; |  1310   sigslot::signal1<uint32> SignalStreamClosedRemotely; | 
|  1367 }; |  1311 }; | 
|  1368  |  1312  | 
|  1369 }  // namespace cricket |  1313 }  // namespace cricket | 
|  1370  |  1314  | 
|  1371 #endif  // TALK_MEDIA_BASE_MEDIACHANNEL_H_ |  1315 #endif  // TALK_MEDIA_BASE_MEDIACHANNEL_H_ | 
| OLD | NEW |