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 3// found in the LICENSE file. 4 5#include "content/renderer/media/mock_media_stream_video_source.h" 6 7#include "base/bind.h" 8#include "base/callback_helpers.h" 9#include "base/location.h" 10 11namespace content { 12 13MockMediaStreamVideoSource::MockMediaStreamVideoSource( 14 bool manual_get_supported_formats) 15 : manual_get_supported_formats_(manual_get_supported_formats), 16 max_requested_height_(0), 17 max_requested_width_(0), 18 max_requested_frame_rate_(0.0), 19 attempted_to_start_(false) { 20 supported_formats_.push_back( 21 media::VideoCaptureFormat( 22 gfx::Size(MediaStreamVideoSource::kDefaultWidth, 23 MediaStreamVideoSource::kDefaultHeight), 24 MediaStreamVideoSource::kDefaultFrameRate, 25 media::PIXEL_FORMAT_I420)); 26} 27 28MockMediaStreamVideoSource::~MockMediaStreamVideoSource() {} 29 30void MockMediaStreamVideoSource::StartMockedSource() { 31 DCHECK(attempted_to_start_); 32 attempted_to_start_ = false; 33 OnStartDone(MEDIA_DEVICE_OK); 34} 35 36void MockMediaStreamVideoSource::FailToStartMockedSource() { 37 DCHECK(attempted_to_start_); 38 attempted_to_start_ = false; 39 OnStartDone(MEDIA_DEVICE_TRACK_START_FAILURE); 40} 41 42void MockMediaStreamVideoSource::CompleteGetSupportedFormats() { 43 DCHECK(!formats_callback_.is_null()); 44 base::ResetAndReturn(&formats_callback_).Run(supported_formats_); 45} 46 47void MockMediaStreamVideoSource::GetCurrentSupportedFormats( 48 int max_requested_height, 49 int max_requested_width, 50 double max_requested_frame_rate, 51 const VideoCaptureDeviceFormatsCB& callback) { 52 DCHECK(formats_callback_.is_null()); 53 max_requested_height_ = max_requested_height; 54 max_requested_width_ = max_requested_width; 55 max_requested_frame_rate_ = max_requested_frame_rate; 56 57 if (manual_get_supported_formats_) { 58 formats_callback_ = callback; 59 return; 60 } 61 callback.Run(supported_formats_); 62} 63 64void MockMediaStreamVideoSource::StartSourceImpl( 65 const media::VideoCaptureFormat& format, 66 const VideoCaptureDeliverFrameCB& frame_callback) { 67 DCHECK(frame_callback_.is_null()); 68 format_ = format; 69 attempted_to_start_ = true; 70 frame_callback_ = frame_callback; 71} 72 73void MockMediaStreamVideoSource::StopSourceImpl() { 74} 75 76void MockMediaStreamVideoSource::DeliverVideoFrame( 77 const scoped_refptr<media::VideoFrame>& frame) { 78 DCHECK(!frame_callback_.is_null()); 79 io_message_loop()->PostTask( 80 FROM_HERE, 81 base::Bind(&MockMediaStreamVideoSource::DeliverVideoFrameOnIO, 82 base::Unretained(this), frame, format_, 83 base::TimeTicks(), frame_callback_)); 84} 85 86void MockMediaStreamVideoSource::DeliverVideoFrameOnIO( 87 const scoped_refptr<media::VideoFrame>& frame, 88 media::VideoCaptureFormat format, 89 const base::TimeTicks& estimated_capture_time, 90 const VideoCaptureDeliverFrameCB& frame_callback) { 91 frame_callback.Run(frame, format, estimated_capture_time); 92} 93 94} // namespace content 95