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_sink.h"
6
7#include "media/base/bind_to_current_loop.h"
8
9namespace content {
10
11MockMediaStreamVideoSink::MockMediaStreamVideoSink()
12    : number_of_frames_(0),
13      enabled_(true),
14      format_(media::VideoFrame::UNKNOWN),
15      state_(blink::WebMediaStreamSource::ReadyStateLive),
16      weak_factory_(this) {
17}
18
19MockMediaStreamVideoSink::~MockMediaStreamVideoSink() {
20}
21
22VideoCaptureDeliverFrameCB
23MockMediaStreamVideoSink::GetDeliverFrameCB() {
24  return media::BindToCurrentLoop(
25      base::Bind(
26          &MockMediaStreamVideoSink::DeliverVideoFrame,
27          weak_factory_.GetWeakPtr()));
28}
29
30void MockMediaStreamVideoSink::DeliverVideoFrame(
31    const scoped_refptr<media::VideoFrame>& frame,
32    const media::VideoCaptureFormat& format,
33    const base::TimeTicks& estimated_capture_time) {
34  last_frame_ = frame;
35  ++number_of_frames_;
36  format_ = frame->format();
37  frame_size_ = frame->natural_size();
38  OnVideoFrame();
39}
40
41void MockMediaStreamVideoSink::OnReadyStateChanged(
42    blink::WebMediaStreamSource::ReadyState state) {
43  state_ = state;
44}
45
46void MockMediaStreamVideoSink::OnEnabledChanged(bool enabled) {
47  enabled_ = enabled;
48}
49
50}  // namespace content
51