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

Side by Side Diff: remoting/host/video_scheduler.cc

Issue 15994021: Fix VideoScheduler to set client_sequence_number in video packets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
« no previous file with comments | « remoting/host/video_scheduler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/host/video_scheduler.h" 5 #include "remoting/host/video_scheduler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 if (!cursor_stub_) 271 if (!cursor_stub_)
272 return; 272 return;
273 273
274 cursor_stub_->SetCursorShape(*cursor_shape); 274 cursor_stub_->SetCursorShape(*cursor_shape);
275 } 275 }
276 276
277 // Encoder thread -------------------------------------------------------------- 277 // Encoder thread --------------------------------------------------------------
278 278
279 void VideoScheduler::EncodeFrame( 279 void VideoScheduler::EncodeFrame(
280 scoped_ptr<webrtc::DesktopFrame> frame, 280 scoped_ptr<webrtc::DesktopFrame> frame,
281 int sequence_number) { 281 int64 sequence_number) {
282 DCHECK(encode_task_runner_->BelongsToCurrentThread()); 282 DCHECK(encode_task_runner_->BelongsToCurrentThread());
283 283
284 // If there is nothing to encode then send an empty keep-alive packet. 284 // If there is nothing to encode then send an empty keep-alive packet.
285 if (!frame || frame->updated_region().is_empty()) { 285 if (!frame || frame->updated_region().is_empty()) {
286 scoped_ptr<VideoPacket> packet(new VideoPacket()); 286 scoped_ptr<VideoPacket> packet(new VideoPacket());
287 packet->set_flags(VideoPacket::LAST_PARTITION); 287 packet->set_flags(VideoPacket::LAST_PARTITION);
288 packet->set_sequence_number(sequence_number); 288 packet->set_client_sequence_number(sequence_number);
289 network_task_runner_->PostTask( 289 network_task_runner_->PostTask(
290 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this, 290 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this,
291 base::Passed(&packet))); 291 base::Passed(&packet)));
292 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release()); 292 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release());
293 return; 293 return;
294 } 294 }
295 295
296 encoder_->Encode( 296 encoder_->Encode(
297 frame.get(), base::Bind(&VideoScheduler::EncodedDataAvailableCallback, 297 frame.get(), base::Bind(&VideoScheduler::EncodedDataAvailableCallback,
298 this, sequence_number)); 298 this, sequence_number));
299 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release()); 299 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release());
300 } 300 }
301 301
302 void VideoScheduler::EncodedDataAvailableCallback( 302 void VideoScheduler::EncodedDataAvailableCallback(
303 int sequence_number, 303 int64 sequence_number,
304 scoped_ptr<VideoPacket> packet) { 304 scoped_ptr<VideoPacket> packet) {
305 DCHECK(encode_task_runner_->BelongsToCurrentThread()); 305 DCHECK(encode_task_runner_->BelongsToCurrentThread());
306 306
307 packet->set_sequence_number(sequence_number); 307 packet->set_client_sequence_number(sequence_number);
308 308
309 bool last = (packet->flags() & VideoPacket::LAST_PACKET) != 0; 309 bool last = (packet->flags() & VideoPacket::LAST_PACKET) != 0;
310 if (last) { 310 if (last) {
311 scheduler_.RecordEncodeTime( 311 scheduler_.RecordEncodeTime(
312 base::TimeDelta::FromMilliseconds(packet->encode_time_ms())); 312 base::TimeDelta::FromMilliseconds(packet->encode_time_ms()));
313 } 313 }
314 314
315 network_task_runner_->PostTask( 315 network_task_runner_->PostTask(
316 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this, 316 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this,
317 base::Passed(&packet))); 317 base::Passed(&packet)));
318 } 318 }
319 319
320 } // namespace remoting 320 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/video_scheduler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698