1#ifndef MILLICAST_API_PUBLISHER_H
2#define MILLICAST_API_PUBLISHER_H
25enum class ScalabilityMode {
64struct PublisherCredentials {
68 std::string stream_name;
79struct PublisherOption :
public Client::Option {
82 std::optional<std::string> source_id;
87 std::optional<std::string>
89 std::optional<std::string>
96 bool simulcast{
false};
98 std::optional<ScalabilityMode> svc_mode;
103 bool record_stream{
false};
105 std::optional<int> priority;
114 using Credentials = PublisherCredentials;
115 using Option = PublisherOption;
117 struct FirstViewerActive {
118 std::string description;
121 struct LastViewerInactive {
122 std::string description;
134 virtual Promise<void> publish(
135 std::optional<PublisherOption>&& options = std::nullopt) = 0;
142 virtual Promise<void> unpublish() = 0;
149 [[nodiscard]]
virtual Promise<bool> is_publishing()
const = 0;
156 virtual Promise<void> set_credentials(PublisherCredentials&& creds) = 0;
162 [[nodiscard]]
virtual Promise<PublisherCredentials> get_credentials()
166 virtual Promise<void> add_track(std::weak_ptr<Track> track) = 0;
169 virtual Promise<void> add_track(std::weak_ptr<VideoTrack> track) = 0;
172 virtual Promise<void> add_track(std::weak_ptr<AudioTrack> track) = 0;
175 virtual Promise<void> clear_tracks() = 0;
186 virtual Promise<void> set_frame_metadata_handler(
187 EncodedVideoFrameCallback&& callback) = 0;
193 static std::unique_ptr<Publisher> create();
199 virtual Promise<void> record() = 0;
205 virtual Promise<void> unrecord() = 0;
212 virtual EventConnectionPtr add_event_handler(
213 EventHandler<FirstViewerActive>&& handler) = 0;
220 virtual EventConnectionPtr add_event_handler(
221 EventHandler<LastViewerInactive>&& handler) = 0;
229 virtual EventConnectionPtr add_event_handler(
230 EventHandler<StatsEvent>&& handler) = 0;
238 virtual EventConnectionPtr add_event_handler(
239 EventHandler<ViewerCount>&& handler) = 0;
246 virtual EventConnectionPtr add_event_handler(
247 EventHandler<SignalingError>&& handler) = 0;
254 virtual EventConnectionPtr add_event_handler(
255 EventHandler<HttpConnectionError>&& handler) = 0;
262 virtual EventConnectionPtr add_event_handler(
263 EventHandler<WebsocketState>&& handler) = 0;
271 virtual EventConnectionPtr add_event_handler(
272 EventHandler<PeerConnectionState>&& handler) = 0;
#define MILLICAST_API
Definition exports.h:51