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

Side by Side Diff: content/renderer/media/media_stream_video_capturer_source_unittest.cc

Issue 1849003002: Add video frame refresh to MediaStream and VideoCapture stacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nick's PS3 comments (moving non-observer impl out of MSVideoSink interface). Created 4 years, 8 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
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698