Index: webrtc/video/call.cc |
diff --git a/webrtc/video/call.cc b/webrtc/video/call.cc |
index a2f07aa590f24e20e09e90db512517cd167bf881..5bd879e0e845e731213ea33fa99ab58a62b9ad00 100644 |
--- a/webrtc/video/call.cc |
+++ b/webrtc/video/call.cc |
@@ -32,8 +32,10 @@ |
#include "webrtc/system_wrappers/interface/trace.h" |
#include "webrtc/system_wrappers/interface/trace_event.h" |
#include "webrtc/video/audio_receive_stream.h" |
+#include "webrtc/video/rtc_event_log.h" |
#include "webrtc/video/video_receive_stream.h" |
#include "webrtc/video/video_send_stream.h" |
+#include "webrtc/voice_engine/include/voe_base.h" |
namespace webrtc { |
@@ -143,6 +145,8 @@ class Call : public webrtc::Call, public PacketReceiver { |
VideoSendStream::RtpStateMap suspended_video_send_ssrcs_; |
+ RtcEventLog* event_log_; |
+ |
DISALLOW_COPY_AND_ASSIGN(Call); |
}; |
} // namespace internal |
@@ -172,6 +176,11 @@ Call::Call(const Call::Config& config) |
DCHECK_GE(config.bitrate_config.max_bitrate_bps, |
config.bitrate_config.start_bitrate_bps); |
} |
+ if (config.voice_engine) { |
+ VoEBase* voe_base = VoEBase::GetInterface(config.voice_engine); |
+ event_log_ = voe_base->GetEventLog(); |
+ voe_base->Release(); |
terelius
2015/07/30 12:34:43
I don't understand what 'sub-API' means in the doc
ivoc
2015/07/30 15:10:23
Good point on null pointer, I added a check.
Abo
|
+ } |
Trace::CreateTrace(); |
module_process_thread_->Start(); |
@@ -268,6 +277,9 @@ webrtc::VideoSendStream* Call::CreateVideoSendStream( |
} |
video_send_streams_.insert(send_stream); |
+ if (event_log_) |
+ event_log_->LogVideoSendStreamConfig(config); |
+ |
if (!network_enabled_) |
send_stream->SignalNetworkState(kNetworkDown); |
return send_stream; |
@@ -334,6 +346,9 @@ webrtc::VideoReceiveStream* Call::CreateVideoReceiveStream( |
if (!network_enabled_) |
receive_stream->SignalNetworkState(kNetworkDown); |
+ if (event_log_) |
+ event_log_->LogVideoReceiveStreamConfig(config); |
+ |
return receive_stream; |
} |
@@ -495,15 +510,21 @@ PacketReceiver::DeliveryStatus Call::DeliverRtcp(MediaType media_type, |
if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { |
ReadLockScoped read_lock(*receive_crit_); |
for (VideoReceiveStream* stream : video_receive_streams_) { |
- if (stream->DeliverRtcp(packet, length)) |
+ if (stream->DeliverRtcp(packet, length)) { |
rtcp_delivered = true; |
+ if (event_log_) |
+ event_log_->LogRtcpPacket(true, media_type, packet, length); |
+ } |
} |
} |
if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { |
ReadLockScoped read_lock(*send_crit_); |
for (VideoSendStream* stream : video_send_streams_) { |
- if (stream->DeliverRtcp(packet, length)) |
+ if (stream->DeliverRtcp(packet, length)) { |
rtcp_delivered = true; |
+ if (event_log_) |
+ event_log_->LogRtcpPacket(false, media_type, packet, length); |
+ } |
} |
} |
return rtcp_delivered ? DELIVERY_OK : DELIVERY_PACKET_ERROR; |
@@ -518,6 +539,10 @@ PacketReceiver::DeliveryStatus Call::DeliverRtp(MediaType media_type, |
uint32_t ssrc = ByteReader<uint32_t>::ReadBigEndian(&packet[8]); |
+ // TODO(ivoc): This should be updated once the splitting of the header is done |
+ // in the RtcEventLog. |
+ if (event_log_) |
+ event_log_->LogRtpHeader(true, media_type, packet, 20, length); |
ReadLockScoped read_lock(*receive_crit_); |
if (media_type == MediaType::ANY || media_type == MediaType::AUDIO) { |
auto it = audio_receive_ssrcs_.find(ssrc); |