Index: webrtc/modules/video_coding/main/source/media_optimization.cc |
diff --git a/webrtc/modules/video_coding/main/source/media_optimization.cc b/webrtc/modules/video_coding/main/source/media_optimization.cc |
index 524a7b2b70a080279f21b8ae79b4b56471d460e9..f23755a194f59223827beb8119cfd37ea9f2ef9e 100644 |
--- a/webrtc/modules/video_coding/main/source/media_optimization.cc |
+++ b/webrtc/modules/video_coding/main/source/media_optimization.cc |
@@ -15,6 +15,7 @@ |
#include "webrtc/modules/video_coding/utility/include/frame_dropper.h" |
#include "webrtc/system_wrappers/interface/clock.h" |
#include "webrtc/system_wrappers/interface/logging.h" |
+#include "webrtc/system_wrappers/interface/metrics.h" |
namespace webrtc { |
namespace media_optimization { |
@@ -104,15 +105,35 @@ MediaOptimization::MediaOptimization(Clock* clock) |
suspension_enabled_(false), |
video_suspended_(false), |
suspension_threshold_bps_(0), |
- suspension_window_bps_(0) { |
+ suspension_window_bps_(0), |
+ sent_frames_(0), |
+ first_sent_frame_time_ms_(-1) { |
memset(send_statistics_, 0, sizeof(send_statistics_)); |
memset(incoming_frame_times_, -1, sizeof(incoming_frame_times_)); |
} |
MediaOptimization::~MediaOptimization(void) { |
+ UpdateHistograms(); |
loss_prot_logic_->Release(); |
} |
+void MediaOptimization::UpdateHistograms() { |
+ int fps = -1; |
+ { |
+ CriticalSectionScoped lock(crit_sect_.get()); |
+ if (sent_frames_ > 0) { |
+ int64_t elapsed_sec = |
+ (clock_->TimeInMilliseconds() - first_sent_frame_time_ms_) / 1000; |
+ if (elapsed_sec > metrics::kMinRunTimeInSeconds) { |
+ fps = sent_frames_ / elapsed_sec; |
+ } |
+ } |
+ } |
+ if (fps != -1) { |
+ RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.SentFramesPerSecond", fps); |
pbos-webrtc
2015/06/09 12:49:01
Can you move these histograms to SendStatisticsPro
|
+ } |
+} |
+ |
void MediaOptimization::Reset() { |
CriticalSectionScoped lock(crit_sect_.get()); |
SetEncodingDataInternal( |
@@ -381,6 +402,9 @@ int32_t MediaOptimization::UpdateWithEncodedData( |
} else { |
encoded_frame_samples_.push_back( |
EncodedFrameSample(encoded_length, timestamp, now_ms)); |
+ ++sent_frames_; |
+ if (first_sent_frame_time_ms_ == -1) |
+ first_sent_frame_time_ms_ = now_ms; |
} |
UpdateSentBitrate(now_ms); |
UpdateSentFramerate(); |