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.
5 #include "content/renderer/media/mock_media_stream_video_source.h"
8 #include "base/callback_helpers.h"
9 #include "base/location.h"
13 MockMediaStreamVideoSource::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
));
28 MockMediaStreamVideoSource::~MockMediaStreamVideoSource() {}
30 void MockMediaStreamVideoSource::StartMockedSource() {
31 DCHECK(attempted_to_start_
);
32 attempted_to_start_
= false;
33 OnStartDone(MEDIA_DEVICE_OK
);
36 void MockMediaStreamVideoSource::FailToStartMockedSource() {
37 DCHECK(attempted_to_start_
);
38 attempted_to_start_
= false;
39 OnStartDone(MEDIA_DEVICE_TRACK_START_FAILURE
);
42 void MockMediaStreamVideoSource::CompleteGetSupportedFormats() {
43 DCHECK(!formats_callback_
.is_null());
44 base::ResetAndReturn(&formats_callback_
).Run(supported_formats_
);
47 void 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
;
57 if (manual_get_supported_formats_
) {
58 formats_callback_
= callback
;
61 callback
.Run(supported_formats_
);
64 void MockMediaStreamVideoSource::StartSourceImpl(
65 const media::VideoCaptureFormat
& format
,
66 const VideoCaptureDeliverFrameCB
& frame_callback
) {
67 DCHECK(frame_callback_
.is_null());
69 attempted_to_start_
= true;
70 frame_callback_
= frame_callback
;
73 void MockMediaStreamVideoSource::StopSourceImpl() {
76 void MockMediaStreamVideoSource::DeliverVideoFrame(
77 const scoped_refptr
<media::VideoFrame
>& frame
) {
78 DCHECK(!frame_callback_
.is_null());
79 io_message_loop()->PostTask(
81 base::Bind(&MockMediaStreamVideoSource::DeliverVideoFrameOnIO
,
82 base::Unretained(this), frame
, format_
,
83 base::TimeTicks(), frame_callback_
));
86 void 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
);
94 } // namespace content