MillicastSDK 2.5.0
Loading...
Searching...
No Matches
renderer.h
Go to the documentation of this file.
1#ifndef MILLICAST_API_RENDERER_H
2#define MILLICAST_API_RENDERER_H
3
4#ifdef __cplusplus
5
13#include <cstddef> // size_t
14#include <cstdint> // uint32_t
15
16#include "frames.h"
17#include "source.h"
18
19namespace millicast {
20
21// base ///////////////////////////////////////////////////////////////////////
22
28class Renderer {
29 public:
30 Renderer() = default;
31 virtual ~Renderer() = default;
32
37 virtual void init() = 0;
38};
39
40// Video //////////////////////////////////////////////////////////////////////
41
48class VideoRenderer : public Renderer {
49 public:
50 VideoRenderer() = default;
51 ~VideoRenderer() override = default;
52
59 virtual void on_frame(const VideoFrame& frame) = 0;
60};
61
62// Audio //////////////////////////////////////////////////////////////////////
63
72class AudioRenderer {
73 public:
74 AudioRenderer() = default;
75 virtual ~AudioRenderer() = default;
76
82 virtual void on_frame(const AudioFrame& frame) = 0;
83};
84
85// decklink ///////////////////////////////////////////////////////////////////
86
94class DeckLinkRenderer : public VideoRenderer {
95 public:
96 DeckLinkRenderer() = default;
97 ~DeckLinkRenderer() override = default;
98
104 MILLICAST_API virtual void set_source(VideoSource::Ptr device) = 0;
105 MILLICAST_API virtual void stop() = 0;
106
112 MILLICAST_API static std::vector<VideoSource::Ptr> get_decklink_devices();
113
119 MILLICAST_API static DeckLinkRenderer* create();
120};
121
122// ndi ////////////////////////////////////////////////////////////////////////
123
130class NdiRenderer : public VideoRenderer {
131 public:
132 NdiRenderer() = default;
133 ~NdiRenderer() override = default;
134
142 MILLICAST_API virtual void set_name(const std::string&) = 0;
143
149 MILLICAST_API static NdiRenderer* create();
150};
151
152#if defined MILLICAST_SDK_TVOS || defined MILLICAST_SDK_IOS
153
154class MILLICAST_API IosVideoRenderer : public VideoRenderer {
155 public:
156 IosVideoRenderer() = default;
157 virtual ~IosVideoRenderer() = default;
158
159 virtual void* get_uiview() = 0;
160 virtual float width() = 0;
161 virtual float height() = 0;
162
163 static IosVideoRenderer* create();
164
165 std::function<void(float, float)> did_change_video_size;
166};
167
168#endif
169
170} // namespace millicast
171
172#endif // __cplusplus
173#endif /* MILLICAST_API_RENDERER_H */
#define MILLICAST_API
Definition exports.h:51