(Auto)update libjingle 66294299-> 66299810

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6062 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
buildbot@webrtc.org 2014-05-06 17:12:36 +00:00
parent 150835ea34
commit 0b53bd29af
3 changed files with 39 additions and 20 deletions

View File

@ -326,11 +326,13 @@ std::string VideoCapturer::ToString(const CapturedFrame* captured_frame) const {
void VideoCapturer::GetStats(VariableInfo<int>* adapt_drops_stats,
VariableInfo<int>* effect_drops_stats,
VariableInfo<double>* frame_time_stats) {
VariableInfo<double>* frame_time_stats,
VideoFormat* last_captured_frame_format) {
talk_base::CritScope cs(&frame_stats_crit_);
GetVariableSnapshot(adapt_frame_drops_data_, adapt_drops_stats);
GetVariableSnapshot(effect_frame_drops_data_, effect_drops_stats);
GetVariableSnapshot(frame_time_data_, frame_time_stats);
*last_captured_frame_format = last_captured_frame_format_;
adapt_frame_drops_data_.Reset();
effect_frame_drops_data_.Reset();
@ -530,18 +532,7 @@ void VideoCapturer::OnFrameCaptured(VideoCapturer*,
}
SignalVideoFrame(this, adapted_frame);
double time_now = frame_length_time_reporter_.TimerNow();
if (previous_frame_time_ != 0.0) {
// Update stats protected from jmi data fetches.
talk_base::CritScope cs(&frame_stats_crit_);
adapt_frame_drops_data_.AddSample(adapt_frame_drops_);
effect_frame_drops_data_.AddSample(effect_frame_drops_);
frame_time_data_.AddSample(time_now - previous_frame_time_);
}
previous_frame_time_ = time_now;
effect_frame_drops_ = 0;
adapt_frame_drops_ = 0;
UpdateStats(captured_frame);
#endif // VIDEO_FRAME_NAME
}
@ -717,6 +708,27 @@ bool VideoCapturer::ShouldFilterFormat(const VideoFormat& format) const {
format.height > max_format_->height;
}
void VideoCapturer::UpdateStats(const CapturedFrame* captured_frame) {
// Update stats protected from fetches from different thread.
talk_base::CritScope cs(&frame_stats_crit_);
last_captured_frame_format_.width = captured_frame->width;
last_captured_frame_format_.height = captured_frame->height;
// TODO(ronghuawu): Useful to report interval as well?
last_captured_frame_format_.interval = 0;
last_captured_frame_format_.fourcc = captured_frame->fourcc;
double time_now = frame_length_time_reporter_.TimerNow();
if (previous_frame_time_ != 0.0) {
adapt_frame_drops_data_.AddSample(adapt_frame_drops_);
effect_frame_drops_data_.AddSample(effect_frame_drops_);
frame_time_data_.AddSample(time_now - previous_frame_time_);
}
previous_frame_time_ = time_now;
effect_frame_drops_ = 0;
adapt_frame_drops_ = 0;
}
template<class T>
void VideoCapturer::GetVariableSnapshot(
const talk_base::RollingAccumulator<T>& data,

View File

@ -294,7 +294,8 @@ class VideoCapturer
// should be called only periodically to log statistics.
void GetStats(VariableInfo<int>* adapt_drop_stats,
VariableInfo<int>* effect_drop_stats,
VariableInfo<double>* frame_time_stats);
VariableInfo<double>* frame_time_stats,
VideoFormat* last_captured_frame_format);
protected:
// Callback attached to SignalFrameCaptured where SignalVideoFrames is called.
@ -348,6 +349,8 @@ class VideoCapturer
// Returns true if format doesn't fulfill all applied restrictions.
bool ShouldFilterFormat(const VideoFormat& format) const;
void UpdateStats(const CapturedFrame* captured_frame);
// Helper function to save statistics on the current data from a
// RollingAccumulator into stats.
template<class T>
@ -385,6 +388,8 @@ class VideoCapturer
talk_base::RollingAccumulator<int> effect_frame_drops_data_;
double previous_frame_time_;
talk_base::RollingAccumulator<double> frame_time_data_;
// The captured frame format before potential adapation.
VideoFormat last_captured_frame_format_;
talk_base::CriticalSection crit_;
VideoProcessors video_processors_;

View File

@ -2381,20 +2381,22 @@ bool WebRtcVideoMediaChannel::GetStats(const StatsOptions& options,
sinfo.packets_lost = -1;
sinfo.fraction_lost = -1;
sinfo.rtt_ms = -1;
sinfo.input_frame_width = static_cast<int>(channel_stream_info->width());
sinfo.input_frame_height =
static_cast<int>(channel_stream_info->height());
VideoCapturer* video_capturer = send_channel->video_capturer();
if (video_capturer) {
VideoFormat last_captured_frame_format;
video_capturer->GetStats(&sinfo.adapt_frame_drops,
&sinfo.effects_frame_drops,
&sinfo.capturer_frame_time);
&sinfo.capturer_frame_time,
&last_captured_frame_format);
sinfo.input_frame_width = last_captured_frame_format.width;
sinfo.input_frame_height = last_captured_frame_format.height;
} else {
sinfo.input_frame_width = 0;
sinfo.input_frame_height = 0;
}
webrtc::VideoCodec vie_codec;
// TODO(ronghuawu): Add unit tests to cover the new send stats:
// send_frame_width/height.
if (!video_capturer || video_capturer->IsMuted()) {
sinfo.send_frame_width = 0;
sinfo.send_frame_height = 0;