diff options
author | pbos@webrtc.org <pbos@webrtc.org> | 2015-01-15 10:09:39 +0000 |
---|---|---|
committer | pbos@webrtc.org <pbos@webrtc.org> | 2015-01-15 10:09:39 +0000 |
commit | 32e852858101c3565cfc79cdda9310a3336d95a0 (patch) | |
tree | 23b9794fc68619ee646d3f86a9e65683364fb3ab | |
parent | 1f67b53c888c6305b60fba327c0a422c8884ff53 (diff) | |
download | webrtc-32e852858101c3565cfc79cdda9310a3336d95a0.tar.gz |
Log configs when creating video streams in Call.
Adds VideoReceiveStream::Config::ToString and logs configs in both
Call::CreateVideoSendStream and Call::CreateVideoReceiverStream.
R=mflodman@webrtc.org
BUG=1667
Review URL: https://webrtc-codereview.appspot.com/41519004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8075 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | webrtc/video/call.cc | 3 | ||||
-rw-r--r-- | webrtc/video/video_receive_stream.cc | 75 | ||||
-rw-r--r-- | webrtc/video/video_send_stream.cc | 56 | ||||
-rw-r--r-- | webrtc/video_receive_stream.h | 7 | ||||
-rw-r--r-- | webrtc/video_send_stream.h | 2 |
5 files changed, 103 insertions, 40 deletions
diff --git a/webrtc/video/call.cc b/webrtc/video/call.cc index 15cc835aa4..0ed412d5a8 100644 --- a/webrtc/video/call.cc +++ b/webrtc/video/call.cc @@ -22,6 +22,7 @@ #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" +#include "webrtc/system_wrappers/interface/logging.h" #include "webrtc/system_wrappers/interface/rw_lock_wrapper.h" #include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/system_wrappers/interface/trace.h" @@ -219,6 +220,7 @@ PacketReceiver* Call::Receiver() { return this; } VideoSendStream* Call::CreateVideoSendStream( const VideoSendStream::Config& config, const VideoEncoderConfig& encoder_config) { + LOG(LS_INFO) << "CreateVideoSendStream: " << config.ToString(); assert(config.rtp.ssrcs.size() > 0); // TODO(mflodman): Base the start bitrate on a current bandwidth estimate, if @@ -274,6 +276,7 @@ void Call::DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) { VideoReceiveStream* Call::CreateVideoReceiveStream( const VideoReceiveStream::Config& config) { + LOG(LS_INFO) << "CreateVideoReceiveStream: " << config.ToString(); VideoReceiveStream* receive_stream = new VideoReceiveStream(video_engine_, config, diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc index 73f6e7c830..489fbc596b 100644 --- a/webrtc/video/video_receive_stream.cc +++ b/webrtc/video/video_receive_stream.cc @@ -31,6 +31,74 @@ #include "webrtc/video_receive_stream.h" namespace webrtc { +std::string VideoReceiveStream::Decoder::ToString() const { + std::stringstream ss; + ss << "{decoder: " << (decoder != NULL ? "(VideoDecoder)" : "NULL"); + ss << ", payload_type: " << payload_type; + ss << ", payload_name: " << payload_name; + ss << ", is_renderer: " << (is_renderer ? "yes" : "no"); + ss << ", expected_delay_ms: " << expected_delay_ms; + ss << '}'; + + return ss.str(); +} + +std::string VideoReceiveStream::Config::ToString() const { + std::stringstream ss; + ss << "{decoders: ["; + for (size_t i = 0; i < decoders.size(); ++i) { + ss << decoders[i].ToString(); + if (i != decoders.size() - 1) + ss << ", "; + } + ss << ']'; + ss << ", rtp: " << rtp.ToString(); + ss << ", renderer: " << (renderer != NULL ? "(renderer)" : "NULL"); + ss << ", render_delay_ms: " << render_delay_ms; + ss << ", audio_channel_id: " << audio_channel_id; + ss << ", pre_decode_callback: " + << (pre_decode_callback != NULL ? "(EncodedFrameObserver)" : "NULL"); + ss << ", pre_render_callback: " + << (pre_render_callback != NULL ? "(I420FrameCallback)" : "NULL"); + ss << ", target_delay_ms: " << target_delay_ms; + ss << '}'; + + return ss.str(); +} + +std::string VideoReceiveStream::Config::Rtp::ToString() const { + std::stringstream ss; + ss << "{remote_ssrc: " << remote_ssrc; + ss << ", local_ssrc: " << local_ssrc; + ss << ", rtcp_mode: " << (rtcp_mode == newapi::kRtcpCompound + ? "kRtcpCompound" + : "kRtcpReducedSize"); + ss << ", rtcp_xr: "; + ss << "{receiver_reference_time_report: " + << (rtcp_xr.receiver_reference_time_report ? "on" : "off"); + ss << '}'; + ss << ", remb: " << (remb ? "on" : "off"); + ss << ", nack: {rtp_history_ms: " << nack.rtp_history_ms << '}'; + ss << ", fec: " << fec.ToString(); + ss << ", rtx: {"; + for (auto& kv : rtx) { + ss << kv.first << " -> "; + ss << "{ssrc: " << kv.second.ssrc; + ss << ", payload_type: " << kv.second.payload_type; + ss << '}'; + } + ss << '}'; + ss << ", extensions: ["; + for (size_t i = 0; i < extensions.size(); ++i) { + ss << extensions[i].ToString(); + if (i != extensions.size() - 1) + ss << ", "; + } + ss << ']'; + ss << '}'; + return ss.str(); +} + namespace internal { namespace { VideoCodec CreateDecoderVideoCodec(const VideoReceiveStream::Decoder& decoder) { @@ -173,11 +241,8 @@ VideoReceiveStream::VideoReceiveStream(webrtc::VideoEngine* video_engine, for (size_t i = 0; i < config_.decoders.size(); ++i) { const Decoder& decoder = config_.decoders[i]; if (external_codec_->RegisterExternalReceiveCodec( - channel_, - decoder.payload_type, - decoder.decoder, - decoder.renderer, - decoder.expected_delay_ms) != 0) { + channel_, decoder.payload_type, decoder.decoder, + decoder.is_renderer, decoder.expected_delay_ms) != 0) { // TODO(pbos): Abort gracefully? Can this be a runtime error? abort(); } diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc index e61f5a2ee5..c9aefba02a 100644 --- a/webrtc/video/video_send_stream.cc +++ b/webrtc/video/video_send_stream.cc @@ -33,8 +33,7 @@ VideoSendStream::Config::EncoderSettings::ToString() const { std::stringstream ss; ss << "{payload_name: " << payload_name; ss << ", payload_type: " << payload_type; - if (encoder != NULL) - ss << ", encoder: " << (encoder != NULL ? "(encoder)" : "NULL"); + ss << ", encoder: " << (encoder != NULL ? "(VideoEncoder)" : "NULL"); ss << '}'; return ss.str(); } @@ -42,13 +41,13 @@ VideoSendStream::Config::EncoderSettings::ToString() const { std::string VideoSendStream::Config::Rtp::Rtx::ToString() const { std::stringstream ss; - ss << "{ssrcs: {"; + ss << "{ssrcs: ["; for (size_t i = 0; i < ssrcs.size(); ++i) { ss << ssrcs[i]; if (i != ssrcs.size() - 1) - ss << "}, {"; + ss << ", "; } - ss << '}'; + ss << ']'; ss << ", payload_type: " << payload_type; ss << '}'; @@ -57,32 +56,26 @@ std::string VideoSendStream::Config::Rtp::Rtx::ToString() std::string VideoSendStream::Config::Rtp::ToString() const { std::stringstream ss; - ss << "{ssrcs: {"; + ss << "{ssrcs: ["; for (size_t i = 0; i < ssrcs.size(); ++i) { ss << ssrcs[i]; if (i != ssrcs.size() - 1) - ss << "}, {"; + ss << ", "; } - ss << '}'; - + ss << ']'; ss << ", max_packet_size: " << max_packet_size; - - ss << ", extensions: {"; + ss << ", extensions: ["; for (size_t i = 0; i < extensions.size(); ++i) { ss << extensions[i].ToString(); if (i != extensions.size() - 1) - ss << "}, {"; + ss << ", "; } - ss << '}'; + ss << ']'; - if (nack.rtp_history_ms != 0) - ss << ", nack.rtp_history_ms: " << nack.rtp_history_ms; - if (fec.ulpfec_payload_type != -1 || fec.red_payload_type != -1) - ss << ", fec: " << fec.ToString(); - if (rtx.payload_type != 0 || !rtx.ssrcs.empty()) - ss << ", rtx: " << rtx.ToString(); - if (c_name != "") - ss << ", c_name: " << c_name; + ss << ", nack: {rtp_history_ms: " << nack.rtp_history_ms << '}'; + ss << ", fec: " << fec.ToString(); + ss << ", rtx: " << rtx.ToString(); + ss << ", c_name: " << c_name; ss << '}'; return ss.str(); } @@ -91,17 +84,16 @@ std::string VideoSendStream::Config::ToString() const { std::stringstream ss; ss << "{encoder_settings: " << encoder_settings.ToString(); ss << ", rtp: " << rtp.ToString(); - if (pre_encode_callback != NULL) - ss << ", (pre_encode_callback)"; - if (post_encode_callback != NULL) - ss << ", (post_encode_callback)"; - if (local_renderer != NULL) { - ss << ", (local_renderer, render_delay_ms: " << render_delay_ms << ")"; - } - if (target_delay_ms > 0) - ss << ", target_delay_ms: " << target_delay_ms; - if (suspend_below_min_bitrate) - ss << ", suspend_below_min_bitrate: on"; + ss << ", pre_encode_callback: " + << (pre_encode_callback != NULL ? "(I420FrameCallback)" : "NULL"); + ss << ", post_encode_callback: " + << (post_encode_callback != NULL ? "(EncodedFrameObserver)" : "NULL"); + ss << "local_renderer: " << (local_renderer != NULL ? "(VideoRenderer)" + : "NULL"); + ss << ", render_delay_ms: " << render_delay_ms; + ss << ", target_delay_ms: " << target_delay_ms; + ss << ", suspend_below_min_bitrate: " << (suspend_below_min_bitrate ? "on" + : "off"); ss << '}'; return ss.str(); } diff --git a/webrtc/video_receive_stream.h b/webrtc/video_receive_stream.h index a8620d98c3..5722c33145 100644 --- a/webrtc/video_receive_stream.h +++ b/webrtc/video_receive_stream.h @@ -39,8 +39,9 @@ class VideoReceiveStream { Decoder() : decoder(NULL), payload_type(0), - renderer(false), + is_renderer(false), expected_delay_ms(0) {} + std::string ToString() const; // The actual decoder instance. VideoDecoder* decoder; @@ -54,7 +55,7 @@ class VideoReceiveStream { std::string payload_name; // 'true' if the decoder handles rendering as well. - bool renderer; + bool is_renderer; // The expected delay for decoding and rendering, i.e. the frame will be // delivered this many milliseconds, if possible, earlier than the ideal @@ -89,6 +90,7 @@ class VideoReceiveStream { pre_decode_callback(NULL), pre_render_callback(NULL), target_delay_ms(0) {} + std::string ToString() const; // Decoders for every payload that we can receive. std::vector<Decoder> decoders; @@ -100,6 +102,7 @@ class VideoReceiveStream { local_ssrc(0), rtcp_mode(newapi::kRtcpReducedSize), remb(true) {} + std::string ToString() const; // Synchronization source (stream identifier) to be received. uint32_t remote_ssrc; diff --git a/webrtc/video_send_stream.h b/webrtc/video_send_stream.h index 269fda0276..7483ceb160 100644 --- a/webrtc/video_send_stream.h +++ b/webrtc/video_send_stream.h @@ -70,7 +70,7 @@ class VideoSendStream { // Uninitialized VideoEncoder instance to be used for encoding. Will be // initialized from inside the VideoSendStream. - webrtc::VideoEncoder* encoder; + VideoEncoder* encoder; } encoder_settings; static const size_t kDefaultMaxPacketSize = 1500 - 40; // TCP over IPv4. |