Open3D (C++ API)  0.15.1
VideoFilter.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26// ----------------------------------------------------------------------------
27// Contains source code from
28// https://github.com/mpromonet/webrtc-streamer
29//
30// This software is in the public domain, furnished "as is", without technical
31// support, and with no warranty, express or implied, as to its usefulness for
32// any purpose.
33// ----------------------------------------------------------------------------
34//
35// This is a private header. It shall be hidden from Open3D's public API. Do not
36// put this in Open3D.h.in.
37
38#pragma once
39
40#include <pc/video_track_source.h>
41
43
44namespace open3d {
45namespace visualization {
46namespace webrtc_server {
47
53template <class T>
55public:
56 static rtc::scoped_refptr<VideoFilter> Create(
57 rtc::scoped_refptr<BitmapTrackSourceInterface> video_source,
58 const std::map<std::string, std::string>& opts) {
59 std::unique_ptr<T> source = absl::WrapUnique(new T(video_source, opts));
60 if (!source) {
61 return nullptr;
62 }
63 return new rtc::RefCountedObject<VideoFilter>(std::move(source));
64 }
65
66protected:
67 explicit VideoFilter(std::unique_ptr<T> source)
68 : BitmapTrackSource(/*remote=*/false), source_(std::move(source)) {}
69
70 SourceState state() const override { return kLive; }
71 bool GetStats(Stats* stats) override {
72 bool result = false;
73 T* source = source_.get();
74 if (source) {
75 stats->input_height = source->height();
76 stats->input_width = source->width();
77 result = true;
78 }
79 return result;
80 }
81
82private:
83 rtc::VideoSourceInterface<webrtc::VideoFrame>* source() override {
84 return source_.get();
85 }
86 std::unique_ptr<T> source_;
87};
88
89} // namespace webrtc_server
90} // namespace visualization
91} // namespace open3d
VideoFilter is a templated class for video frame processing.
Definition: VideoFilter.h:54
VideoFilter(std::unique_ptr< T > source)
Definition: VideoFilter.h:67
SourceState state() const override
Definition: VideoFilter.h:70
static rtc::scoped_refptr< VideoFilter > Create(rtc::scoped_refptr< BitmapTrackSourceInterface > video_source, const std::map< std::string, std::string > &opts)
Definition: VideoFilter.h:56
bool GetStats(Stats *stats) override
Definition: VideoFilter.h:71
Definition: PinholeCameraIntrinsic.cpp:35
Definition: Device.h:138