blob: 33d99a2668ac2c50af4ef8d70a84987fdfff6601 [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:361/*
kjellander1afca732016-02-08 04:46:452 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
henrike@webrtc.org28e20752013-07-10 00:45:363 *
kjellander1afca732016-02-08 04:46:454 * 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:369 */
10
Steve Anton10542f22019-01-11 17:11:0011#ifndef MEDIA_BASE_FAKE_VIDEO_RENDERER_H_
12#define MEDIA_BASE_FAKE_VIDEO_RENDERER_H_
henrike@webrtc.org28e20752013-07-10 00:45:3613
Yves Gerey3e707812018-11-28 15:47:4914#include <stdint.h>
15
Mirko Bonadeid9708072019-01-25 19:26:4816#include "api/scoped_refptr.h"
Mirko Bonadei92ea95e2017-09-15 04:47:3117#include "api/video/video_frame.h"
Yves Gerey3e707812018-11-28 15:47:4918#include "api/video/video_frame_buffer.h"
19#include "api/video/video_rotation.h"
Niels Möllerc6ce9c52018-05-11 09:15:3020#include "api/video/video_sink_interface.h"
Markus Handell1e257ca2020-07-07 13:43:1121#include "rtc_base/synchronization/mutex.h"
henrike@webrtc.org28e20752013-07-10 00:45:3622
23namespace cricket {
24
25// Faked video renderer that has a callback for actions on rendering.
nisseacd935b2016-11-11 11:55:1326class FakeVideoRenderer : public rtc::VideoSinkInterface<webrtc::VideoFrame> {
henrike@webrtc.org28e20752013-07-10 00:45:3627 public:
Mirko Bonadei17aff352018-07-26 10:20:4028 FakeVideoRenderer();
henrike@webrtc.org28e20752013-07-10 00:45:3629
Mirko Bonadei17aff352018-07-26 10:20:4030 void OnFrame(const webrtc::VideoFrame& frame) override;
henrike@webrtc.org28e20752013-07-10 00:45:3631
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5832 int width() const {
Markus Handell1e257ca2020-07-07 13:43:1133 webrtc::MutexLock lock(&mutex_);
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5834 return width_;
35 }
36 int height() const {
Markus Handell1e257ca2020-07-07 13:43:1137 webrtc::MutexLock lock(&mutex_);
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5838 return height_;
39 }
Ilya Nikolaevskiy2ebf5232019-05-13 14:13:3640
perkjcaafdba2016-03-20 14:34:2941 webrtc::VideoRotation rotation() const {
Markus Handell1e257ca2020-07-07 13:43:1142 webrtc::MutexLock lock(&mutex_);
Pera5092412016-02-12 12:30:5743 return rotation_;
44 }
perkjd6c39542016-03-17 09:35:2345
nisse306d52b2016-09-06 14:52:4046 int64_t timestamp_us() const {
Markus Handell1e257ca2020-07-07 13:43:1147 webrtc::MutexLock lock(&mutex_);
nisse306d52b2016-09-06 14:52:4048 return timestamp_us_;
perkjd6c39542016-03-17 09:35:2349 }
Ilya Nikolaevskiy2ebf5232019-05-13 14:13:3650
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5851 int num_rendered_frames() const {
Markus Handell1e257ca2020-07-07 13:43:1152 webrtc::MutexLock lock(&mutex_);
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5853 return num_rendered_frames_;
54 }
Ilya Nikolaevskiy2ebf5232019-05-13 14:13:3655
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5856 bool black_frame() const {
Markus Handell1e257ca2020-07-07 13:43:1157 webrtc::MutexLock lock(&mutex_);
henrika@webrtc.orgaebb1ad2014-01-14 10:00:5858 return black_frame_;
59 }
henrike@webrtc.org28e20752013-07-10 00:45:3660
henrike@webrtc.org28e20752013-07-10 00:45:3661 private:
Mirko Bonadei17aff352018-07-26 10:20:4062 int width_ = 0;
63 int height_ = 0;
64 webrtc::VideoRotation rotation_ = webrtc::kVideoRotation_0;
65 int64_t timestamp_us_ = 0;
66 int num_rendered_frames_ = 0;
67 bool black_frame_ = false;
Markus Handell1e257ca2020-07-07 13:43:1168 mutable webrtc::Mutex mutex_;
henrike@webrtc.org28e20752013-07-10 00:45:3669};
70
71} // namespace cricket
72
Steve Anton10542f22019-01-11 17:11:0073#endif // MEDIA_BASE_FAKE_VIDEO_RENDERER_H_