OLD | NEW |
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 Loading... |
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 |
OLD | NEW |