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

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

Issue 23477059: Simplify VideoEncoder interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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
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 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 scoped_ptr<VideoPacket> packet(new VideoPacket()); 288 scoped_ptr<VideoPacket> packet(new VideoPacket());
289 packet->set_flags(VideoPacket::LAST_PARTITION); 289 packet->set_flags(VideoPacket::LAST_PARTITION);
290 packet->set_client_sequence_number(sequence_number); 290 packet->set_client_sequence_number(sequence_number);
291 network_task_runner_->PostTask( 291 network_task_runner_->PostTask(
292 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this, 292 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this,
293 base::Passed(&packet))); 293 base::Passed(&packet)));
294 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release()); 294 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release());
295 return; 295 return;
296 } 296 }
297 297
298 encoder_->Encode( 298 scoped_ptr<VideoPacket> packet = encoder_->Encode(*frame);
299 frame.get(), base::Bind(&VideoScheduler::EncodedDataAvailableCallback, 299 packet->set_client_sequence_number(sequence_number);
300 this, sequence_number));
301 capture_task_runner_->DeleteSoon(FROM_HERE, frame.release());
302 }
303 300
304 void VideoScheduler::EncodedDataAvailableCallback( 301 // Destroy the frame before sending |packet| because SendVideoPacket() may
305 int64 sequence_number, 302 // trigger another frame to be captured, and the screen capturer expects the
306 scoped_ptr<VideoPacket> packet) { 303 // old frame to be freed by then.
307 DCHECK(encode_task_runner_->BelongsToCurrentThread()); 304 frame.reset();
308
309 packet->set_client_sequence_number(sequence_number);
310 305
311 bool last = (packet->flags() & VideoPacket::LAST_PACKET) != 0; 306 bool last = (packet->flags() & VideoPacket::LAST_PACKET) != 0;
312 if (last) { 307 if (last) {
313 scheduler_.RecordEncodeTime( 308 scheduler_.RecordEncodeTime(
314 base::TimeDelta::FromMilliseconds(packet->encode_time_ms())); 309 base::TimeDelta::FromMilliseconds(packet->encode_time_ms()));
315 } 310 }
316 311
317 network_task_runner_->PostTask( 312 network_task_runner_->PostTask(
318 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this, 313 FROM_HERE, base::Bind(&VideoScheduler::SendVideoPacket, this,
319 base::Passed(&packet))); 314 base::Passed(&packet)));
320 } 315 }
321 316
322 } // namespace remoting 317 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698