Open3D (C++ API)
0.19.0
Toggle main menu visibility
Loading...
Searching...
No Matches
cpp
open3d
visualization
webrtc_server
ImageCapturer.h
Go to the documentation of this file.
1
// ----------------------------------------------------------------------------
2
// - Open3D: www.open3d.org -
3
// ----------------------------------------------------------------------------
4
// Copyright (c) 2018-2024 www.open3d.org
5
// SPDX-License-Identifier: MIT
6
// ----------------------------------------------------------------------------
7
//
8
// This is a private header. It shall be hidden from Open3D's public API. Do not
9
// put this in Open3D.h.in.
10
11
#pragma once
12
13
#include <api/video/i420_buffer.h>
14
#include <libyuv/convert.h>
15
#include <libyuv/video_common.h>
16
#include <media/base/video_broadcaster.h>
17
#include <media/base/video_common.h>
18
19
#include <memory>
20
21
#include "
open3d/core/Tensor.h
"
22
#include "
open3d/utility/Logging.h
"
23
#include "
open3d/visualization/webrtc_server/BitmapTrackSource.h
"
24
25
namespace
open3d
{
26
namespace
visualization
{
27
namespace
webrtc_server
{
28
29
class
ImageCapturer
:
public
rtc::VideoSourceInterface<webrtc::VideoFrame> {
30
public
:
31
ImageCapturer
(
const
std::string& url_,
32
const
std::map<std::string, std::string>& opts);
33
virtual
~ImageCapturer
();
34
35
static
ImageCapturer
*
Create
(
36
const
std::string& url,
37
const
std::map<std::string, std::string>& opts);
38
39
ImageCapturer
(
const
std::map<std::string, std::string>& opts);
40
41
virtual
void
AddOrUpdateSink
(
42
rtc::VideoSinkInterface<webrtc::VideoFrame>* sink,
43
const
rtc::VideoSinkWants& wants)
override
;
44
45
virtual
void
RemoveSink
(
46
rtc::VideoSinkInterface<webrtc::VideoFrame>* sink)
override
;
47
48
void
OnCaptureResult
(
const
std::shared_ptr<core::Tensor>& frame);
49
50
protected
:
51
int
width_
;
52
int
height_
;
53
rtc::VideoBroadcaster
broadcaster_
;
54
};
55
56
class
ImageTrackSource
:
public
BitmapTrackSource
{
57
public
:
58
static
rtc::scoped_refptr<BitmapTrackSourceInterface>
Create
(
59
const
std::string& window_uid,
60
const
std::map<std::string, std::string>& opts) {
61
std::unique_ptr<ImageCapturer> capturer =
62
absl::WrapUnique(
ImageCapturer::Create
(window_uid, opts));
63
if
(!capturer) {
64
return
nullptr
;
65
}
66
rtc::scoped_refptr<BitmapTrackSourceInterface> video_source =
67
new
rtc::RefCountedObject<ImageTrackSource>(
68
std::move(capturer));
69
return
video_source;
70
}
71
72
void
OnFrame
(
const
std::shared_ptr<core::Tensor>& frame)
final
override
{
73
capturer_->OnCaptureResult(frame);
74
}
75
76
protected
:
77
explicit
ImageTrackSource
(std::unique_ptr<ImageCapturer> capturer)
78
:
BitmapTrackSource
(
/*remote=*/
false), capturer_(
std
::move(capturer)) {}
79
80
private
:
81
rtc::VideoSourceInterface<webrtc::VideoFrame>*
source
()
override
{
82
return
capturer_.get();
83
}
84
std::unique_ptr<ImageCapturer> capturer_;
85
};
86
87
}
// namespace webrtc_server
88
}
// namespace visualization
89
}
// namespace open3d
BitmapTrackSource.h
Logging.h
Tensor.h
open3d::visualization::webrtc_server::BitmapTrackSource::BitmapTrackSource
BitmapTrackSource(bool remote)
Definition
BitmapTrackSource.cpp:28
open3d::visualization::webrtc_server::BitmapTrackSource::source
virtual rtc::VideoSourceInterface< webrtc::VideoFrame > * source()=0
open3d::visualization::webrtc_server::ImageCapturer::width_
int width_
Definition
ImageCapturer.h:51
open3d::visualization::webrtc_server::ImageCapturer::height_
int height_
Definition
ImageCapturer.h:52
open3d::visualization::webrtc_server::ImageCapturer::RemoveSink
virtual void RemoveSink(rtc::VideoSinkInterface< webrtc::VideoFrame > *sink) override
Definition
ImageCapturer.cpp:103
open3d::visualization::webrtc_server::ImageCapturer::AddOrUpdateSink
virtual void AddOrUpdateSink(rtc::VideoSinkInterface< webrtc::VideoFrame > *sink, const rtc::VideoSinkWants &wants) override
Definition
ImageCapturer.cpp:97
open3d::visualization::webrtc_server::ImageCapturer::~ImageCapturer
virtual ~ImageCapturer()
Definition
ImageCapturer.cpp:29
open3d::visualization::webrtc_server::ImageCapturer::Create
static ImageCapturer * Create(const std::string &url, const std::map< std::string, std::string > &opts)
Definition
ImageCapturer.cpp:31
open3d::visualization::webrtc_server::ImageCapturer::OnCaptureResult
void OnCaptureResult(const std::shared_ptr< core::Tensor > &frame)
Definition
ImageCapturer.cpp:48
open3d::visualization::webrtc_server::ImageCapturer::ImageCapturer
ImageCapturer(const std::string &url_, const std::map< std::string, std::string > &opts)
Definition
ImageCapturer.cpp:25
open3d::visualization::webrtc_server::ImageCapturer::broadcaster_
rtc::VideoBroadcaster broadcaster_
Definition
ImageCapturer.h:53
open3d::visualization::webrtc_server::ImageTrackSource::OnFrame
void OnFrame(const std::shared_ptr< core::Tensor > &frame) final override
Definition
ImageCapturer.h:72
open3d::visualization::webrtc_server::ImageTrackSource::Create
static rtc::scoped_refptr< BitmapTrackSourceInterface > Create(const std::string &window_uid, const std::map< std::string, std::string > &opts)
Definition
ImageCapturer.h:58
open3d::visualization::webrtc_server::ImageTrackSource::ImageTrackSource
ImageTrackSource(std::unique_ptr< ImageCapturer > capturer)
Definition
ImageCapturer.h:77
open3d::visualization::webrtc_server
Definition
BitmapTrackSource.cpp:26
open3d::visualization
Definition
ModelIO.h:14
open3d
Definition
PinholeCameraIntrinsic.cpp:16
std
Definition
Device.h:111
Generated by
1.17.0