blob: 816b44744fc2acc35e6d9e62119fab5702331552 [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:36 +00001/*
kjellanderb24317b2016-02-10 07:54:43 -08002 * Copyright 2012 The WebRTC project authors. All Rights Reserved.
henrike@webrtc.org28e20752013-07-10 00:45:36 +00003 *
kjellanderb24317b2016-02-10 07:54:43 -08004 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
henrike@webrtc.org28e20752013-07-10 00:45:36 +00009 */
10
Henrik Kjellander15583c12016-02-10 10:53:12 +010011#ifndef WEBRTC_API_TEST_FAKEVIDEOTRACKRENDERER_H_
12#define WEBRTC_API_TEST_FAKEVIDEOTRACKRENDERER_H_
henrike@webrtc.org28e20752013-07-10 00:45:36 +000013
Henrik Kjellander15583c12016-02-10 10:53:12 +010014#include "webrtc/api/mediastreaminterface.h"
kjellandera96e2d72016-02-04 23:52:28 -080015#include "webrtc/media/base/fakevideorenderer.h"
henrike@webrtc.org28e20752013-07-10 00:45:36 +000016
17namespace webrtc {
18
19class FakeVideoTrackRenderer : public VideoRendererInterface {
20 public:
guoweis@webrtc.org00c509a2015-03-12 21:37:26 +000021 FakeVideoTrackRenderer(VideoTrackInterface* video_track)
Magnus Jedvertc2db8102015-09-09 21:26:04 +020022 : video_track_(video_track), last_frame_(NULL) {
henrike@webrtc.org28e20752013-07-10 00:45:36 +000023 video_track_->AddRenderer(this);
24 }
25 ~FakeVideoTrackRenderer() {
26 video_track_->RemoveRenderer(this);
27 }
28
guoweis@webrtc.org00c509a2015-03-12 21:37:26 +000029 virtual void RenderFrame(const cricket::VideoFrame* video_frame) override {
30 last_frame_ = const_cast<cricket::VideoFrame*>(video_frame);
Magnus Jedvertc2db8102015-09-09 21:26:04 +020031 fake_renderer_.RenderFrame(video_frame);
guoweis@webrtc.orgf9a75d92015-03-10 06:37:00 +000032 }
guoweis@webrtc.org0ad48932015-03-10 02:42:50 +000033
henrike@webrtc.org28e20752013-07-10 00:45:36 +000034 int errors() const { return fake_renderer_.errors(); }
35 int width() const { return fake_renderer_.width(); }
36 int height() const { return fake_renderer_.height(); }
nisse81354f52016-01-19 00:23:24 -080037 bool black_frame() const { return fake_renderer_.black_frame(); }
38
henrike@webrtc.org28e20752013-07-10 00:45:36 +000039 int num_rendered_frames() const {
40 return fake_renderer_.num_rendered_frames();
41 }
guoweis@webrtc.org00c509a2015-03-12 21:37:26 +000042 const cricket::VideoFrame* last_frame() const { return last_frame_; }
henrike@webrtc.org28e20752013-07-10 00:45:36 +000043
44 private:
45 cricket::FakeVideoRenderer fake_renderer_;
buildbot@webrtc.orgd4e598d2014-07-29 17:36:52 +000046 rtc::scoped_refptr<VideoTrackInterface> video_track_;
guoweis@webrtc.org00c509a2015-03-12 21:37:26 +000047
48 // Weak reference for frame pointer comparison only.
49 cricket::VideoFrame* last_frame_;
henrike@webrtc.org28e20752013-07-10 00:45:36 +000050};
51
52} // namespace webrtc
53
Henrik Kjellander15583c12016-02-10 10:53:12 +010054#endif // WEBRTC_API_TEST_FAKEVIDEOTRACKRENDERER_H_