| OLD | NEW |
| 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 "content/renderer/media/media_stream_video_capturer_source.h" | 5 #include "content/renderer/media/media_stream_video_capturer_source.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 | 328 |
| 329 class FakeMediaStreamVideoSink : public MediaStreamVideoSink { | 329 class FakeMediaStreamVideoSink : public MediaStreamVideoSink { |
| 330 public: | 330 public: |
| 331 FakeMediaStreamVideoSink(base::TimeTicks* capture_time, | 331 FakeMediaStreamVideoSink(base::TimeTicks* capture_time, |
| 332 media::VideoFrameMetadata* metadata, | 332 media::VideoFrameMetadata* metadata, |
| 333 base::Closure got_frame_cb) | 333 base::Closure got_frame_cb) |
| 334 : capture_time_(capture_time), | 334 : capture_time_(capture_time), |
| 335 metadata_(metadata), | 335 metadata_(metadata), |
| 336 got_frame_cb_(got_frame_cb) {} | 336 got_frame_cb_(got_frame_cb) {} |
| 337 | 337 |
| 338 void ConnectToTrack(const blink::WebMediaStreamTrack& track) { |
| 339 MediaStreamVideoSink::ConnectToTrack( |
| 340 track, |
| 341 base::Bind(&FakeMediaStreamVideoSink::OnVideoFrame, |
| 342 base::Unretained(this))); |
| 343 } |
| 344 |
| 345 void DisconnectFromTrack() { |
| 346 MediaStreamVideoSink::DisconnectFromTrack(); |
| 347 } |
| 348 |
| 338 void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame, | 349 void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame, |
| 339 base::TimeTicks capture_time) { | 350 base::TimeTicks capture_time) { |
| 340 *capture_time_ = capture_time; | 351 *capture_time_ = capture_time; |
| 341 metadata_->Clear(); | 352 metadata_->Clear(); |
| 342 base::DictionaryValue tmp; | 353 base::DictionaryValue tmp; |
| 343 frame->metadata()->MergeInternalValuesInto(&tmp); | 354 frame->metadata()->MergeInternalValuesInto(&tmp); |
| 344 metadata_->MergeInternalValuesFrom(tmp); | 355 metadata_->MergeInternalValuesFrom(tmp); |
| 345 base::ResetAndReturn(&got_frame_cb_).Run(); | 356 base::ResetAndReturn(&got_frame_cb_).Run(); |
| 346 } | 357 } |
| 347 | 358 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 370 running_cb.Run(true); | 381 running_cb.Run(true); |
| 371 | 382 |
| 372 base::RunLoop run_loop; | 383 base::RunLoop run_loop; |
| 373 base::TimeTicks reference_capture_time = | 384 base::TimeTicks reference_capture_time = |
| 374 base::TimeTicks::FromInternalValue(60013); | 385 base::TimeTicks::FromInternalValue(60013); |
| 375 base::TimeTicks capture_time; | 386 base::TimeTicks capture_time; |
| 376 media::VideoFrameMetadata metadata; | 387 media::VideoFrameMetadata metadata; |
| 377 FakeMediaStreamVideoSink fake_sink( | 388 FakeMediaStreamVideoSink fake_sink( |
| 378 &capture_time, &metadata, | 389 &capture_time, &metadata, |
| 379 media::BindToCurrentLoop(run_loop.QuitClosure())); | 390 media::BindToCurrentLoop(run_loop.QuitClosure())); |
| 380 FakeMediaStreamVideoSink::AddToVideoTrack( | 391 fake_sink.ConnectToTrack(track); |
| 381 &fake_sink, base::Bind(&FakeMediaStreamVideoSink::OnVideoFrame, | |
| 382 base::Unretained(&fake_sink)), | |
| 383 track); | |
| 384 const scoped_refptr<media::VideoFrame> frame = | 392 const scoped_refptr<media::VideoFrame> frame = |
| 385 media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)); | 393 media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)); |
| 386 frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, 30.0); | 394 frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, 30.0); |
| 387 child_process_->io_task_runner()->PostTask( | 395 child_process_->io_task_runner()->PostTask( |
| 388 FROM_HERE, base::Bind(deliver_frame_cb, frame, reference_capture_time)); | 396 FROM_HERE, base::Bind(deliver_frame_cb, frame, reference_capture_time)); |
| 389 run_loop.Run(); | 397 run_loop.Run(); |
| 390 FakeMediaStreamVideoSink::RemoveFromVideoTrack(&fake_sink, track); | 398 fake_sink.DisconnectFromTrack(); |
| 391 EXPECT_EQ(reference_capture_time, capture_time); | 399 EXPECT_EQ(reference_capture_time, capture_time); |
| 392 double metadata_value; | 400 double metadata_value; |
| 393 EXPECT_TRUE(metadata.GetDouble(media::VideoFrameMetadata::FRAME_RATE, | 401 EXPECT_TRUE(metadata.GetDouble(media::VideoFrameMetadata::FRAME_RATE, |
| 394 &metadata_value)); | 402 &metadata_value)); |
| 395 EXPECT_EQ(30.0, metadata_value); | 403 EXPECT_EQ(30.0, metadata_value); |
| 396 } | 404 } |
| 397 | 405 |
| 398 } // namespace content | 406 } // namespace content |
| OLD | NEW |