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

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

Issue 2113523007: More cleanups in FrameStats (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix android Created 4 years, 5 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 <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 15 matching lines...) Expand all
26 // The implementation here requires that the decoder allocates at least 3 26 // The implementation here requires that the decoder allocates at least 3
27 // pictures. PPB_VideoDecoder didn't support this parameter prior to 27 // pictures. PPB_VideoDecoder didn't support this parameter prior to
28 // 1.1, so we have to pass 0 for backwards compatibility with older versions of 28 // 1.1, so we have to pass 0 for backwards compatibility with older versions of
29 // the browser. Currently all API implementations allocate more than 3 buffers 29 // the browser. Currently all API implementations allocate more than 3 buffers
30 // by default. 30 // by default.
31 const uint32_t kMinimumPictureCount = 3; 31 const uint32_t kMinimumPictureCount = 3;
32 32
33 class PepperVideoRenderer3D::FrameTracker { 33 class PepperVideoRenderer3D::FrameTracker {
34 public: 34 public:
35 FrameTracker(std::unique_ptr<VideoPacket> packet, 35 FrameTracker(std::unique_ptr<VideoPacket> packet,
36 protocol::PerformanceTracker* perf_tracker, 36 protocol::FrameStatsConsumer* stats_consumer,
37 const base::Closure& done) 37 const base::Closure& done)
38 : packet_(std::move(packet)), perf_tracker_(perf_tracker), done_(done) { 38 : packet_(std::move(packet)),
39 stats_ = protocol::FrameStats::GetForVideoPacket(*packet_); 39 stats_consumer_(stats_consumer),
40 done_(done) {
41 stats_.host_stats = protocol::HostFrameStats::GetForVideoPacket(*packet_);
42 stats_.client_stats.time_received = base::TimeTicks::Now();
40 } 43 }
41 44
42 ~FrameTracker() { 45 ~FrameTracker() {
43 if (perf_tracker_) 46 if (stats_consumer_)
44 perf_tracker_->RecordVideoFrameStats(stats_); 47 stats_consumer_->OnVideoFrameStats(stats_);
45 if (!done_.is_null()) 48 if (!done_.is_null())
46 done_.Run(); 49 done_.Run();
47 } 50 }
48 51
49 void OnDecoded() { stats_.time_decoded = base::TimeTicks::Now(); } 52 void OnDecoded() {
50 void OnRendered() { stats_.time_rendered = base::TimeTicks::Now(); } 53 stats_.client_stats.time_decoded = base::TimeTicks::Now();
54 }
55 void OnRendered() {
56 stats_.client_stats.time_rendered = base::TimeTicks::Now();
57 }
51 58
52 VideoPacket* packet() { return packet_.get(); } 59 VideoPacket* packet() { return packet_.get(); }
53 60
54 private: 61 private:
55 std::unique_ptr<VideoPacket> packet_; 62 std::unique_ptr<VideoPacket> packet_;
56 protocol::PerformanceTracker* perf_tracker_; 63 protocol::FrameStatsConsumer* stats_consumer_;
57 protocol::FrameStats stats_; 64 protocol::FrameStats stats_;
58 base::Closure done_; 65 base::Closure done_;
59 }; 66 };
60 67
61 class PepperVideoRenderer3D::Picture { 68 class PepperVideoRenderer3D::Picture {
62 public: 69 public:
63 Picture(pp::VideoDecoder* decoder, PP_VideoPicture picture) 70 Picture(pp::VideoDecoder* decoder, PP_VideoPicture picture)
64 : decoder_(decoder), picture_(picture) {} 71 : decoder_(decoder), picture_(picture) {}
65 ~Picture() { decoder_->RecyclePicture(picture_); } 72 ~Picture() { decoder_->RecyclePicture(picture_); }
66 73
(...skipping 30 matching lines...) Expand all
97 force_repaint_ = true; 104 force_repaint_ = true;
98 PaintIfNeeded(); 105 PaintIfNeeded();
99 } 106 }
100 107
101 void PepperVideoRenderer3D::EnableDebugDirtyRegion(bool enable) { 108 void PepperVideoRenderer3D::EnableDebugDirtyRegion(bool enable) {
102 debug_dirty_region_ = enable; 109 debug_dirty_region_ = enable;
103 } 110 }
104 111
105 bool PepperVideoRenderer3D::Initialize( 112 bool PepperVideoRenderer3D::Initialize(
106 const ClientContext& context, 113 const ClientContext& context,
107 protocol::PerformanceTracker* perf_tracker) { 114 protocol::FrameStatsConsumer* stats_consumer) {
108 perf_tracker_ = perf_tracker; 115 stats_consumer_ = stats_consumer;
109 116
110 const int32_t context_attributes[] = { 117 const int32_t context_attributes[] = {
111 PP_GRAPHICS3DATTRIB_ALPHA_SIZE, 8, 118 PP_GRAPHICS3DATTRIB_ALPHA_SIZE, 8,
112 PP_GRAPHICS3DATTRIB_BLUE_SIZE, 8, 119 PP_GRAPHICS3DATTRIB_BLUE_SIZE, 8,
113 PP_GRAPHICS3DATTRIB_GREEN_SIZE, 8, 120 PP_GRAPHICS3DATTRIB_GREEN_SIZE, 8,
114 PP_GRAPHICS3DATTRIB_RED_SIZE, 8, 121 PP_GRAPHICS3DATTRIB_RED_SIZE, 8,
115 PP_GRAPHICS3DATTRIB_DEPTH_SIZE, 0, 122 PP_GRAPHICS3DATTRIB_DEPTH_SIZE, 0,
116 PP_GRAPHICS3DATTRIB_STENCIL_SIZE, 0, 123 PP_GRAPHICS3DATTRIB_STENCIL_SIZE, 0,
117 PP_GRAPHICS3DATTRIB_SAMPLES, 0, 124 PP_GRAPHICS3DATTRIB_SAMPLES, 0,
118 PP_GRAPHICS3DATTRIB_SAMPLE_BUFFERS, 0, 125 PP_GRAPHICS3DATTRIB_SAMPLE_BUFFERS, 0,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 return this; 198 return this;
192 } 199 }
193 200
194 protocol::FrameConsumer* PepperVideoRenderer3D::GetFrameConsumer() { 201 protocol::FrameConsumer* PepperVideoRenderer3D::GetFrameConsumer() {
195 // GetFrameConsumer() is used only for WebRTC-based connections which are not 202 // GetFrameConsumer() is used only for WebRTC-based connections which are not
196 // supported by the plugin. 203 // supported by the plugin.
197 NOTREACHED(); 204 NOTREACHED();
198 return nullptr; 205 return nullptr;
199 } 206 }
200 207
208 protocol::FrameStatsConsumer* PepperVideoRenderer3D::GetFrameStatsConsumer() {
209 return stats_consumer_;
210 }
211
201 void PepperVideoRenderer3D::ProcessVideoPacket( 212 void PepperVideoRenderer3D::ProcessVideoPacket(
202 std::unique_ptr<VideoPacket> packet, 213 std::unique_ptr<VideoPacket> packet,
203 const base::Closure& done) { 214 const base::Closure& done) {
204 VideoPacket* packet_ptr = packet.get(); 215 VideoPacket* packet_ptr = packet.get();
205 std::unique_ptr<FrameTracker> frame_tracker( 216 std::unique_ptr<FrameTracker> frame_tracker(
206 new FrameTracker(std::move(packet), perf_tracker_, done)); 217 new FrameTracker(std::move(packet), stats_consumer_, done));
207 218
208 // Don't need to do anything if the packet is empty. Host sends empty video 219 // Don't need to do anything if the packet is empty. Host sends empty video
209 // packets when the screen is not changing. 220 // packets when the screen is not changing.
210 if (!packet_ptr->data().size()) 221 if (!packet_ptr->data().size())
211 return; 222 return;
212 223
213 if (!frame_received_) { 224 if (!frame_received_) {
214 event_handler_->OnVideoFirstFrameReceived(); 225 event_handler_->OnVideoFirstFrameReceived();
215 frame_received_ = true; 226 frame_received_ = true;
216 } 227 }
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 gles2_if_->AttachShader(graphics_.pp_resource(), shader_program_, shader); 530 gles2_if_->AttachShader(graphics_.pp_resource(), shader_program_, shader);
520 gles2_if_->DeleteShader(graphics_.pp_resource(), shader); 531 gles2_if_->DeleteShader(graphics_.pp_resource(), shader);
521 } 532 }
522 533
523 void PepperVideoRenderer3D::CheckGLError() { 534 void PepperVideoRenderer3D::CheckGLError() {
524 GLenum error = gles2_if_->GetError(graphics_.pp_resource()); 535 GLenum error = gles2_if_->GetError(graphics_.pp_resource());
525 CHECK_EQ(error, static_cast<GLenum>(GL_NO_ERROR)) << "GL error: " << error; 536 CHECK_EQ(error, static_cast<GLenum>(GL_NO_ERROR)) << "GL error: " << error;
526 } 537 }
527 538
528 } // namespace remoting 539 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/plugin/pepper_video_renderer_3d.h ('k') | remoting/client/software_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698