Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: remoting/client/plugin/pepper_video_renderer_3d.cc

Issue 1181743005: Report video and network stats averaged over 1s, and create corresponding UMA metrics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update stats for software-renderer as well. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/client/plugin/pepper_video_renderer_3d.h" 5 #include "remoting/client/plugin/pepper_video_renderer_3d.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/metrics/histogram_macros.h"
10 #include "base/stl_util.h" 11 #include "base/stl_util.h"
11 #include "ppapi/c/pp_codecs.h" 12 #include "ppapi/c/pp_codecs.h"
12 #include "ppapi/c/ppb_opengles2.h" 13 #include "ppapi/c/ppb_opengles2.h"
13 #include "ppapi/cpp/instance.h" 14 #include "ppapi/cpp/instance.h"
14 #include "ppapi/lib/gl/include/GLES2/gl2.h" 15 #include "ppapi/lib/gl/include/GLES2/gl2.h"
15 #include "ppapi/lib/gl/include/GLES2/gl2ext.h" 16 #include "ppapi/lib/gl/include/GLES2/gl2ext.h"
16 #include "remoting/proto/video.pb.h" 17 #include "remoting/proto/video.pb.h"
17 #include "remoting/protocol/session_config.h" 18 #include "remoting/protocol/session_config.h"
18 19
19 namespace remoting { 20 namespace remoting {
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 protocol::VideoStub* PepperVideoRenderer3D::GetVideoStub() { 185 protocol::VideoStub* PepperVideoRenderer3D::GetVideoStub() {
185 return this; 186 return this;
186 } 187 }
187 188
188 void PepperVideoRenderer3D::ProcessVideoPacket(scoped_ptr<VideoPacket> packet, 189 void PepperVideoRenderer3D::ProcessVideoPacket(scoped_ptr<VideoPacket> packet,
189 const base::Closure& done) { 190 const base::Closure& done) {
190 base::ScopedClosureRunner done_runner(done); 191 base::ScopedClosureRunner done_runner(done);
191 192
192 // Don't need to do anything if the packet is empty. Host sends empty video 193 // Don't need to do anything if the packet is empty. Host sends empty video
193 // packets when the screen is not changing. 194 // packets when the screen is not changing.
194 if (!packet->data().size()) 195 if (!packet->data().size())
Sergey Ulanov 2015/06/19 23:08:42 When a frame is empty it's currently not counted f
anandc 2015/06/20 01:31:32 Done.
195 return; 196 return;
196 197
197 // Update statistics. 198 // Update statistics and UMA histograms.
198 stats_.video_frame_rate()->Record(1); 199 stats_.video_frame_rate()->Record(1);
199 stats_.video_bandwidth()->Record(packet->data().size()); 200 stats_.video_bandwidth()->Record(packet->data().size());
200 if (packet->has_capture_time_ms()) 201 if (packet->has_capture_time_ms()) {
201 stats_.video_capture_ms()->Record(packet->capture_time_ms()); 202 stats_.video_capture_ms()->Record(packet->capture_time_ms());
202 if (packet->has_encode_time_ms()) 203 const base::TimeDelta capture_time =
204 base::TimeDelta::FromInternalValue(packet->capture_time_ms());
205 UMA_HISTOGRAM_TIMES("Chromoting.Video.CaptureLatency", capture_time);
206 }
207 if (packet->has_encode_time_ms()) {
203 stats_.video_encode_ms()->Record(packet->encode_time_ms()); 208 stats_.video_encode_ms()->Record(packet->encode_time_ms());
209 const base::TimeDelta encode_time =
210 base::TimeDelta::FromInternalValue(packet->encode_time_ms());
211 UMA_HISTOGRAM_TIMES("Chromoting.Video.EncodeLatency", encode_time);
212 }
204 if (packet->has_latest_event_timestamp() && 213 if (packet->has_latest_event_timestamp() &&
205 packet->latest_event_timestamp() > latest_input_event_timestamp_) { 214 packet->latest_event_timestamp() > latest_input_event_timestamp_) {
206 latest_input_event_timestamp_ = packet->latest_event_timestamp(); 215 latest_input_event_timestamp_ = packet->latest_event_timestamp();
207 base::TimeDelta round_trip_latency = 216 base::TimeDelta round_trip_latency =
208 base::Time::Now() - 217 base::Time::Now() -
209 base::Time::FromInternalValue(packet->latest_event_timestamp()); 218 base::Time::FromInternalValue(packet->latest_event_timestamp());
210 stats_.round_trip_ms()->Record(round_trip_latency.InMilliseconds()); 219 stats_.round_trip_ms()->Record(round_trip_latency.InMilliseconds());
220 UMA_HISTOGRAM_TIMES("Chromoting.Video.RoundTripLatency",
221 round_trip_latency);
211 } 222 }
212 223
213 bool resolution_changed = false; 224 bool resolution_changed = false;
214 225
215 if (packet->format().has_screen_width() && 226 if (packet->format().has_screen_width() &&
216 packet->format().has_screen_height()) { 227 packet->format().has_screen_height()) {
217 webrtc::DesktopSize frame_size(packet->format().screen_width(), 228 webrtc::DesktopSize frame_size(packet->format().screen_width(),
218 packet->format().screen_height()); 229 packet->format().screen_height());
219 if (!frame_size_.equals(frame_size)) { 230 if (!frame_size_.equals(frame_size)) {
220 frame_size_ = frame_size; 231 frame_size_ = frame_size;
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 gles2_if_->AttachShader(graphics_.pp_resource(), shader_program_, shader); 541 gles2_if_->AttachShader(graphics_.pp_resource(), shader_program_, shader);
531 gles2_if_->DeleteShader(graphics_.pp_resource(), shader); 542 gles2_if_->DeleteShader(graphics_.pp_resource(), shader);
532 } 543 }
533 544
534 void PepperVideoRenderer3D::CheckGLError() { 545 void PepperVideoRenderer3D::CheckGLError() {
535 GLenum error = gles2_if_->GetError(graphics_.pp_resource()); 546 GLenum error = gles2_if_->GetError(graphics_.pp_resource());
536 CHECK_EQ(error, static_cast<GLenum>(GL_NO_ERROR)) << "GL error: " << error; 547 CHECK_EQ(error, static_cast<GLenum>(GL_NO_ERROR)) << "GL error: " << error;
537 } 548 }
538 549
539 } // namespace remoting 550 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698