| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include "webrtc/voice_engine/channel.h" | 11 #include "webrtc/voice_engine/channel.h" |
| 12 | 12 |
| 13 #include <algorithm> | 13 #include <algorithm> |
| 14 #include <map> | 14 #include <map> |
| 15 #include <string> | 15 #include <string> |
| 16 #include <utility> | 16 #include <utility> |
| 17 #include <vector> | 17 #include <vector> |
| 18 | 18 |
| 19 #include "webrtc/api/array_view.h" | 19 #include "webrtc/api/array_view.h" |
| 20 #include "webrtc/audio/utility/audio_frame_operations.h" | 20 #include "webrtc/audio/utility/audio_frame_operations.h" |
| 21 #include "webrtc/call/rtp_transport_controller_send_interface.h" | 21 #include "webrtc/call/rtp_transport_controller_send_interface.h" |
| 22 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" | 22 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
| 23 // TODO(eladalon): Remove events/* after removing the deprecated functions. |
| 24 #include "webrtc/logging/rtc_event_log/events/rtc_event_audio_network_adaptation
.h" |
| 25 #include "webrtc/logging/rtc_event_log/events/rtc_event_audio_playout.h" |
| 26 #include "webrtc/logging/rtc_event_log/events/rtc_event_audio_receive_stream_con
fig.h" |
| 27 #include "webrtc/logging/rtc_event_log/events/rtc_event_audio_send_stream_config
.h" |
| 28 #include "webrtc/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h
" |
| 29 #include "webrtc/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h" |
| 30 #include "webrtc/logging/rtc_event_log/events/rtc_event_logging_started.h" |
| 31 #include "webrtc/logging/rtc_event_log/events/rtc_event_logging_stopped.h" |
| 32 #include "webrtc/logging/rtc_event_log/events/rtc_event_probe_cluster_created.h" |
| 33 #include "webrtc/logging/rtc_event_log/events/rtc_event_probe_result_failure.h" |
| 34 #include "webrtc/logging/rtc_event_log/events/rtc_event_probe_result_success.h" |
| 35 #include "webrtc/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h" |
| 36 #include "webrtc/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h" |
| 37 #include "webrtc/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h" |
| 38 #include "webrtc/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h" |
| 39 #include "webrtc/logging/rtc_event_log/events/rtc_event_video_receive_stream_con
fig.h" |
| 40 #include "webrtc/logging/rtc_event_log/events/rtc_event_video_send_stream_config
.h" |
| 41 #include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_networ
k_adaptor_config.h" |
| 23 #include "webrtc/modules/audio_coding/codecs/audio_format_conversion.h" | 42 #include "webrtc/modules/audio_coding/codecs/audio_format_conversion.h" |
| 24 #include "webrtc/modules/audio_device/include/audio_device.h" | 43 #include "webrtc/modules/audio_device/include/audio_device.h" |
| 25 #include "webrtc/modules/audio_processing/include/audio_processing.h" | 44 #include "webrtc/modules/audio_processing/include/audio_processing.h" |
| 26 #include "webrtc/modules/include/module_common_types.h" | 45 #include "webrtc/modules/include/module_common_types.h" |
| 27 #include "webrtc/modules/pacing/packet_router.h" | 46 #include "webrtc/modules/pacing/packet_router.h" |
| 28 #include "webrtc/modules/rtp_rtcp/include/receive_statistics.h" | 47 #include "webrtc/modules/rtp_rtcp/include/receive_statistics.h" |
| 29 #include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h" | 48 #include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h" |
| 30 #include "webrtc/modules/rtp_rtcp/include/rtp_receiver.h" | 49 #include "webrtc/modules/rtp_rtcp/include/rtp_receiver.h" |
| 31 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h" | 50 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h" |
| 32 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h" | 51 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h" |
| 33 #include "webrtc/modules/utility/include/process_thread.h" | 52 #include "webrtc/modules/utility/include/process_thread.h" |
| 34 #include "webrtc/rtc_base/checks.h" | 53 #include "webrtc/rtc_base/checks.h" |
| 35 #include "webrtc/rtc_base/criticalsection.h" | 54 #include "webrtc/rtc_base/criticalsection.h" |
| 36 #include "webrtc/rtc_base/format_macros.h" | 55 #include "webrtc/rtc_base/format_macros.h" |
| 37 #include "webrtc/rtc_base/location.h" | 56 #include "webrtc/rtc_base/location.h" |
| 38 #include "webrtc/rtc_base/logging.h" | 57 #include "webrtc/rtc_base/logging.h" |
| 58 #include "webrtc/rtc_base/ptr_util.h" |
| 39 #include "webrtc/rtc_base/rate_limiter.h" | 59 #include "webrtc/rtc_base/rate_limiter.h" |
| 40 #include "webrtc/rtc_base/task_queue.h" | 60 #include "webrtc/rtc_base/task_queue.h" |
| 41 #include "webrtc/rtc_base/thread_checker.h" | 61 #include "webrtc/rtc_base/thread_checker.h" |
| 42 #include "webrtc/rtc_base/timeutils.h" | 62 #include "webrtc/rtc_base/timeutils.h" |
| 43 #include "webrtc/system_wrappers/include/field_trial.h" | 63 #include "webrtc/system_wrappers/include/field_trial.h" |
| 44 #include "webrtc/system_wrappers/include/trace.h" | 64 #include "webrtc/system_wrappers/include/trace.h" |
| 45 #include "webrtc/voice_engine/include/voe_rtp_rtcp.h" | 65 #include "webrtc/voice_engine/include/voe_rtp_rtcp.h" |
| 46 #include "webrtc/voice_engine/output_mixer.h" | 66 #include "webrtc/voice_engine/output_mixer.h" |
| 47 #include "webrtc/voice_engine/statistics.h" | 67 #include "webrtc/voice_engine/statistics.h" |
| 48 #include "webrtc/voice_engine/utility.h" | 68 #include "webrtc/voice_engine/utility.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 71 } | 91 } |
| 72 | 92 |
| 73 bool StartLogging(rtc::PlatformFile log_file, | 93 bool StartLogging(rtc::PlatformFile log_file, |
| 74 int64_t max_size_bytes) override { | 94 int64_t max_size_bytes) override { |
| 75 RTC_NOTREACHED(); | 95 RTC_NOTREACHED(); |
| 76 return false; | 96 return false; |
| 77 } | 97 } |
| 78 | 98 |
| 79 void StopLogging() override { RTC_NOTREACHED(); } | 99 void StopLogging() override { RTC_NOTREACHED(); } |
| 80 | 100 |
| 101 void Log(std::unique_ptr<RtcEvent> event) override { |
| 102 rtc::CritScope lock(&crit_); |
| 103 if (event_log_) { |
| 104 event_log_->Log(std::move(event)); |
| 105 } |
| 106 } |
| 107 |
| 81 void LogVideoReceiveStreamConfig( | 108 void LogVideoReceiveStreamConfig( |
| 82 const webrtc::rtclog::StreamConfig&) override { | 109 const webrtc::rtclog::StreamConfig&) override { |
| 83 RTC_NOTREACHED(); | 110 RTC_NOTREACHED(); |
| 84 } | 111 } |
| 85 | 112 |
| 86 void LogVideoSendStreamConfig(const webrtc::rtclog::StreamConfig&) override { | 113 void LogVideoSendStreamConfig(const webrtc::rtclog::StreamConfig&) override { |
| 87 RTC_NOTREACHED(); | 114 RTC_NOTREACHED(); |
| 88 } | 115 } |
| 89 | 116 |
| 90 void LogAudioReceiveStreamConfig( | 117 void LogAudioReceiveStreamConfig( |
| 91 const webrtc::rtclog::StreamConfig& config) override { | 118 const webrtc::rtclog::StreamConfig& config) override { |
| 92 rtc::CritScope lock(&crit_); | 119 rtc::CritScope lock(&crit_); |
| 93 if (event_log_) { | 120 if (event_log_) { |
| 94 event_log_->LogAudioReceiveStreamConfig(config); | 121 event_log_->Log(rtc::MakeUnique<RtcEventAudioReceiveStreamConfig>( |
| 122 rtc::MakeUnique<webrtc::rtclog::StreamConfig>(config))); |
| 95 } | 123 } |
| 96 } | 124 } |
| 97 | 125 |
| 98 void LogAudioSendStreamConfig( | 126 void LogAudioSendStreamConfig( |
| 99 const webrtc::rtclog::StreamConfig& config) override { | 127 const webrtc::rtclog::StreamConfig& config) override { |
| 100 rtc::CritScope lock(&crit_); | 128 rtc::CritScope lock(&crit_); |
| 101 if (event_log_) { | 129 if (event_log_) { |
| 102 event_log_->LogAudioSendStreamConfig(config); | 130 event_log_->Log(rtc::MakeUnique<RtcEventAudioSendStreamConfig>( |
| 131 rtc::MakeUnique<webrtc::rtclog::StreamConfig>(config))); |
| 103 } | 132 } |
| 104 } | 133 } |
| 105 | 134 |
| 106 void LogIncomingRtpHeader(const RtpPacketReceived& packet) override { | 135 void LogIncomingRtpHeader(const RtpPacketReceived& packet) override { |
| 107 rtc::CritScope lock(&crit_); | 136 rtc::CritScope lock(&crit_); |
| 108 if (event_log_) { | 137 if (event_log_) { |
| 109 event_log_->LogIncomingRtpHeader(packet); | 138 event_log_->Log(rtc::MakeUnique<RtcEventRtpPacketIncoming>(packet)); |
| 110 } | 139 } |
| 111 } | 140 } |
| 112 | 141 |
| 113 void LogOutgoingRtpHeader(const RtpPacketToSend& packet, | 142 void LogOutgoingRtpHeader(const RtpPacketToSend& packet, |
| 114 int probe_cluster_id) override { | 143 int probe_cluster_id) override { |
| 115 rtc::CritScope lock(&crit_); | 144 rtc::CritScope lock(&crit_); |
| 116 if (event_log_) { | 145 if (event_log_) { |
| 117 event_log_->LogOutgoingRtpHeader(packet, probe_cluster_id); | 146 event_log_->Log( |
| 147 rtc::MakeUnique<RtcEventRtpPacketOutgoing>(packet, probe_cluster_id)); |
| 118 } | 148 } |
| 119 } | 149 } |
| 120 | 150 |
| 121 void LogIncomingRtcpPacket(rtc::ArrayView<const uint8_t> packet) override { | 151 void LogIncomingRtcpPacket(rtc::ArrayView<const uint8_t> packet) override { |
| 122 rtc::CritScope lock(&crit_); | 152 rtc::CritScope lock(&crit_); |
| 123 if (event_log_) { | 153 if (event_log_) { |
| 124 event_log_->LogIncomingRtcpPacket(packet); | 154 event_log_->Log(rtc::MakeUnique<RtcEventRtcpPacketIncoming>(packet)); |
| 125 } | 155 } |
| 126 } | 156 } |
| 127 | 157 |
| 128 void LogOutgoingRtcpPacket(rtc::ArrayView<const uint8_t> packet) override { | 158 void LogOutgoingRtcpPacket(rtc::ArrayView<const uint8_t> packet) override { |
| 129 rtc::CritScope lock(&crit_); | 159 rtc::CritScope lock(&crit_); |
| 130 if (event_log_) { | 160 if (event_log_) { |
| 131 event_log_->LogOutgoingRtcpPacket(packet); | 161 event_log_->Log(rtc::MakeUnique<RtcEventRtcpPacketOutgoing>(packet)); |
| 132 } | 162 } |
| 133 } | 163 } |
| 134 | 164 |
| 135 void LogAudioPlayout(uint32_t ssrc) override { | 165 void LogAudioPlayout(uint32_t ssrc) override { |
| 136 rtc::CritScope lock(&crit_); | 166 rtc::CritScope lock(&crit_); |
| 137 if (event_log_) { | 167 if (event_log_) { |
| 138 event_log_->LogAudioPlayout(ssrc); | 168 event_log_->Log(rtc::MakeUnique<RtcEventAudioPlayout>(ssrc)); |
| 139 } | 169 } |
| 140 } | 170 } |
| 141 | 171 |
| 142 void LogLossBasedBweUpdate(int32_t bitrate_bps, | 172 void LogLossBasedBweUpdate(int32_t bitrate_bps, |
| 143 uint8_t fraction_loss, | 173 uint8_t fraction_loss, |
| 144 int32_t total_packets) override { | 174 int32_t total_packets) override { |
| 145 rtc::CritScope lock(&crit_); | 175 rtc::CritScope lock(&crit_); |
| 146 if (event_log_) { | 176 if (event_log_) { |
| 147 event_log_->LogLossBasedBweUpdate(bitrate_bps, fraction_loss, | 177 event_log_->Log(rtc::MakeUnique<RtcEventBweUpdateLossBased>( |
| 148 total_packets); | 178 bitrate_bps, fraction_loss, total_packets)); |
| 149 } | 179 } |
| 150 } | 180 } |
| 151 | 181 |
| 152 void LogDelayBasedBweUpdate(int32_t bitrate_bps, | 182 void LogDelayBasedBweUpdate(int32_t bitrate_bps, |
| 153 BandwidthUsage detector_state) override { | 183 BandwidthUsage detector_state) override { |
| 154 rtc::CritScope lock(&crit_); | 184 rtc::CritScope lock(&crit_); |
| 155 if (event_log_) { | 185 if (event_log_) { |
| 156 event_log_->LogDelayBasedBweUpdate(bitrate_bps, detector_state); | 186 event_log_->Log(rtc::MakeUnique<RtcEventBweUpdateDelayBased>( |
| 187 bitrate_bps, detector_state)); |
| 157 } | 188 } |
| 158 } | 189 } |
| 159 | 190 |
| 160 void LogAudioNetworkAdaptation( | 191 void LogAudioNetworkAdaptation( |
| 161 const AudioEncoderRuntimeConfig& config) override { | 192 const AudioEncoderRuntimeConfig& config) override { |
| 162 rtc::CritScope lock(&crit_); | 193 rtc::CritScope lock(&crit_); |
| 163 if (event_log_) { | 194 if (event_log_) { |
| 164 event_log_->LogAudioNetworkAdaptation(config); | 195 event_log_->Log(rtc::MakeUnique<RtcEventAudioNetworkAdaptation>( |
| 196 rtc::MakeUnique<AudioEncoderRuntimeConfig>(config))); |
| 165 } | 197 } |
| 166 } | 198 } |
| 167 | 199 |
| 168 void LogProbeClusterCreated(int id, | 200 void LogProbeClusterCreated(int id, |
| 169 int bitrate_bps, | 201 int bitrate_bps, |
| 170 int min_probes, | 202 int min_probes, |
| 171 int min_bytes) override { | 203 int min_bytes) override { |
| 172 rtc::CritScope lock(&crit_); | 204 rtc::CritScope lock(&crit_); |
| 173 if (event_log_) { | 205 if (event_log_) { |
| 174 event_log_->LogProbeClusterCreated(id, bitrate_bps, min_probes, | 206 event_log_->Log(rtc::MakeUnique<RtcEventProbeClusterCreated>( |
| 175 min_bytes); | 207 id, bitrate_bps, min_probes, min_bytes)); |
| 176 } | 208 } |
| 177 }; | 209 }; |
| 178 | 210 |
| 179 void LogProbeResultSuccess(int id, int bitrate_bps) override { | 211 void LogProbeResultSuccess(int id, int bitrate_bps) override { |
| 180 rtc::CritScope lock(&crit_); | 212 rtc::CritScope lock(&crit_); |
| 181 if (event_log_) { | 213 if (event_log_) { |
| 182 event_log_->LogProbeResultSuccess(id, bitrate_bps); | 214 event_log_->Log( |
| 215 rtc::MakeUnique<RtcEventProbeResultSuccess>(id, bitrate_bps)); |
| 183 } | 216 } |
| 184 }; | 217 }; |
| 185 | 218 |
| 186 void LogProbeResultFailure(int id, | 219 void LogProbeResultFailure(int id, |
| 187 ProbeFailureReason failure_reason) override { | 220 ProbeFailureReason failure_reason) override { |
| 188 rtc::CritScope lock(&crit_); | 221 rtc::CritScope lock(&crit_); |
| 189 if (event_log_) { | 222 if (event_log_) { |
| 190 event_log_->LogProbeResultFailure(id, failure_reason); | 223 event_log_->Log( |
| 224 rtc::MakeUnique<RtcEventProbeResultFailure>(id, failure_reason)); |
| 191 } | 225 } |
| 192 }; | 226 }; |
| 193 | 227 |
| 194 void SetEventLog(RtcEventLog* event_log) { | 228 void SetEventLog(RtcEventLog* event_log) { |
| 195 rtc::CritScope lock(&crit_); | 229 rtc::CritScope lock(&crit_); |
| 196 event_log_ = event_log; | 230 event_log_ = event_log; |
| 197 } | 231 } |
| 198 | 232 |
| 199 private: | 233 private: |
| 200 rtc::CriticalSection crit_; | 234 rtc::CriticalSection crit_; |
| (...skipping 2937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3138 int64_t min_rtt = 0; | 3172 int64_t min_rtt = 0; |
| 3139 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != | 3173 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != |
| 3140 0) { | 3174 0) { |
| 3141 return 0; | 3175 return 0; |
| 3142 } | 3176 } |
| 3143 return rtt; | 3177 return rtt; |
| 3144 } | 3178 } |
| 3145 | 3179 |
| 3146 } // namespace voe | 3180 } // namespace voe |
| 3147 } // namespace webrtc | 3181 } // namespace webrtc |
| OLD | NEW |