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

Side by Side Diff: remoting/client/rectangle_update_decoder.cc

Issue 8985007: Refactoring of the client-side input pipeline and scaling dimension management. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/rectangle_update_decoder.h" 5 #include "remoting/client/rectangle_update_decoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "remoting/base/decoder.h" 10 #include "remoting/base/decoder.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 if (!decoder_->IsReadyForData()) { 124 if (!decoder_->IsReadyForData()) {
125 // TODO(ajwong): This whole thing should move into an invalid state. 125 // TODO(ajwong): This whole thing should move into an invalid state.
126 LOG(ERROR) << "Decoder is unable to process data. Dropping packet."; 126 LOG(ERROR) << "Decoder is unable to process data. Dropping packet.";
127 return; 127 return;
128 } 128 }
129 129
130 if (decoder_->DecodePacket(packet) == Decoder::DECODE_DONE) 130 if (decoder_->DecodePacket(packet) == Decoder::DECODE_DONE)
131 SubmitToConsumer(); 131 SubmitToConsumer();
132 } 132 }
133 133
134 void RectangleUpdateDecoder::SetScaleRatios(double horizontal_ratio, 134 void RectangleUpdateDecoder::SetOutputSize(const SkISize& size) {
135 double vertical_ratio) {
136 if (message_loop_ != MessageLoop::current()) { 135 if (message_loop_ != MessageLoop::current()) {
137 message_loop_->PostTask( 136 message_loop_->PostTask(
138 FROM_HERE, base::Bind(&RectangleUpdateDecoder::SetScaleRatios, 137 FROM_HERE, base::Bind(&RectangleUpdateDecoder::SetOutputSize,
139 this, horizontal_ratio, vertical_ratio)); 138 this, size));
140 return; 139 return;
141 } 140 }
142 141
143 // TODO(wez): Refresh the frame only if the ratio has changed. 142 // TODO(wez): Refresh the frame only if the ratio has changed.
144 if (frame_) { 143 if (frame_) {
145 SkIRect frame_rect = SkIRect::MakeWH(frame_->width(), frame_->height()); 144 SkIRect frame_rect = SkIRect::MakeWH(frame_->width(), frame_->height());
146 refresh_rects_.push_back(frame_rect); 145 refresh_rects_.push_back(frame_rect);
147 } 146 }
148 147
149 // TODO(hclam): If the scale ratio has changed we should reallocate a 148 // TODO(hclam): If the scale ratio has changed we should reallocate a
150 // VideoFrame of different size. However if the scale ratio is always 149 // VideoFrame of different size. However if the scale ratio is always
151 // smaller than 1.0 we can use the same video frame. 150 // smaller than 1.0 we can use the same video frame.
152 decoder_->SetScaleRatios(horizontal_ratio, vertical_ratio); 151 if (decoder_.get()) {
153 152 decoder_->SetOutputSize(size);
154 // TODO(wez): Defer refresh, so that resize, which will affect both scale 153 RefreshFullFrame();
155 // factor and clip rect, doesn't lead to unnecessary refreshes. 154 }
156 DoRefresh();
157 } 155 }
158 156
159 void RectangleUpdateDecoder::UpdateClipRect(const SkIRect& new_clip_rect) { 157 void RectangleUpdateDecoder::UpdateClipRect(const SkIRect& new_clip_rect) {
160 if (message_loop_ != MessageLoop::current()) { 158 if (message_loop_ != MessageLoop::current()) {
161 message_loop_->PostTask( 159 message_loop_->PostTask(
162 FROM_HERE, base::Bind(&RectangleUpdateDecoder::UpdateClipRect, 160 FROM_HERE, base::Bind(&RectangleUpdateDecoder::UpdateClipRect,
163 this, new_clip_rect)); 161 this, new_clip_rect));
164 return; 162 return;
165 } 163 }
166 164
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 return; 229 return;
232 } 230 }
233 231
234 delete rects; 232 delete rects;
235 233
236 frame_is_consuming_ = false; 234 frame_is_consuming_ = false;
237 DoRefresh(); 235 DoRefresh();
238 } 236 }
239 237
240 } // namespace remoting 238 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698