1#ifndef MILLICAST_API_TRACK_H
2#define MILLICAST_API_TRACK_H
43 [[nodiscard]]
virtual const std::string&
id()
const = 0;
50 [[nodiscard]]
virtual const std::string&
kind()
const = 0;
151#ifndef MC_DISABLE_COPY_AND_ASSIGN
152#define MC_DISABLE_COPY_AND_ASSIGN(Klass) \
153 Klass(Klass&&) = delete; \
154 Klass(const Klass&) = delete; \
155 Klass& operator=(Klass&&) = delete; \
156 Klass& operator=(const Klass&) = delete
160class RtsRemoteVideoTrack;
161class RtsRemoteAudioTrack;
162class WebrtcRemoteAudioTrack;
163class WebrtcRemoteVideoTrack;
216 std::optional<std::string>
mid;
383 std::optional<int> target_fps{};
386 std::optional<int> target_width{};
465 [[nodiscard]]
virtual const std::optional<std::string>&
source_id()
const = 0;
538 operator bool() const noexcept {
539 return encodingId || spatialLayerId || temporalLayerId ||
540 maxSpatialLayerId || maxTemporalLayerId;
574 const Layer& layer = {},
575 bool promote =
false) = 0;
649 bool promote =
false) = 0;
660 const std::shared_ptr<VideoRenderer>& renderer) = 0;
The AudioRenderer class is responsible for rendering audio in a specific way in your application.
Definition renderer.h:70
The AudioTrack class.
Definition track.h:122
virtual void set_volume(double volume)=0
Set the track's volume.
~AudioTrack() override=default
virtual void add_renderer(AudioRenderer *renderer)=0
Add an audio renderer to render this track. Several renderers can be added to the track....
virtual void remove_renderer(AudioRenderer *renderer)=0
Remove a renderer from the renderer list.
RtsRemoteAudioTrack()=default
MC_DISABLE_COPY_AND_ASSIGN(RtsRemoteAudioTrack)
virtual Promise< void > set_volume(double volume)=0
virtual Promise< void > enable()=0
virtual Promise< void > disable()=0
virtual EventConnectionPtr add_event_handler(EventHandler< Inactive > &&handler)=0
virtual Kind kind() const =0
virtual EventConnectionPtr add_event_handler(EventHandler< Active > &&handler)=0
virtual const std::optional< std::string > & source_id() const =0
MC_DISABLE_COPY_AND_ASSIGN(RtsRemoteTrack)
virtual EventConnectionPtr add_event_handler(EventHandler< FrameMetadata > &&handler)=0
virtual EventConnectionPtr add_event_handler(EventHandler< Layers > &&handler)=0
virtual EventConnectionPtr add_event_handler(EventHandler< RtsStatsEvent > &&handler)=0
virtual EventConnectionPtr add_event_handler(EventHandler< MidUpdated > &&handler)=0
virtual RtsRemoteVideoTrack * as_video()=0
virtual bool is_active() const =0
virtual std::optional< std::string > get_current_mid() const =0
virtual RtsRemoteAudioTrack * as_audio()=0
virtual millicast::Promise< void > enable_frame_metadata(bool enabled)=0
MC_DISABLE_COPY_AND_ASSIGN(RtsRemoteVideoTrack)
virtual Promise< void > enable(const std::shared_ptr< VideoRenderer > &renderer, const Layer &layer={}, bool promote=false)=0
RtsRemoteVideoTrack()=default
The Track class represent a media sources.
Definition track.h:33
virtual const std::string & kind() const =0
Get the track's kind.
virtual const std::string & id() const =0
Get the track's id.
virtual void enable(bool e)=0
enable or disable the track. A disabled track will produce silence (if audio) or black frames (if vid...
virtual bool is_enabled() const =0
Tell whether the track is enabled or not.
The VideoRenderer class Inherits this class to receive video frames and render them in your applicati...
Definition renderer.h:46
The VideoTrack class.
Definition track.h:75
~VideoTrack() override=default
virtual void remove_renderer(VideoRenderer *renderer)=0
Remove a renderer from the renderer list.
virtual ContentHint content_hint() const noexcept=0
Get the current content hint for this track.
ContentHint
Video track content hint, used to override the source is_screencast property.
Definition track.h:81
virtual void set_content_hint(ContentHint hint) noexcept=0
Set the content hint for this track.
virtual void add_renderer(VideoRenderer *renderer)=0
Add a VideoRenderer to render this video track. Several renderers can be added to the track....
MC_DISABLE_COPY_AND_ASSIGN(WebrtcRemoteAudioTrack)
virtual Promise< void > set_volume(double volume)=0
virtual Promise< RtsRemoteAudioTrack * > current_projection()=0
virtual Promise< void > project(RtsRemoteAudioTrack &rts_track)=0
WebrtcRemoteAudioTrack()=default
Kind
Definition track.h:184
@ AUDIO
audio
Definition track.h:185
virtual EventConnectionPtr add_event_handler(EventHandler< MidUpdated > &&handler)=0
virtual EventConnectionPtr add_event_handler(EventHandler< Disabled > &&handler)=0
MC_DISABLE_COPY_AND_ASSIGN(WebrtcRemoteTrack)
virtual WebrtcRemoteAudioTrack * as_audio()=0
virtual Promise< void > unproject()=0
virtual WebrtcRemoteVideoTrack * as_video()=0
virtual std::optional< std::string > get_current_mid() const =0
virtual EventConnectionPtr add_event_handler(EventHandler< FrameMetadata > &&handler)=0
WebrtcRemoteTrack()=default
virtual const std::string & get_cname() const =0
virtual Kind kind() const =0
virtual Promise< void > project(RtsRemoteVideoTrack &rts_track, const RtsRemoteVideoTrack::Layer &layer={}, bool promote=false)=0
virtual Promise< void > add_renderer(const std::shared_ptr< VideoRenderer > &renderer)=0
virtual Promise< void > remove_renderer(const VideoRenderer *renderer)=0
virtual Promise< RtsRemoteVideoTrack * > current_projection()=0
virtual millicast::Promise< void > enable_frame_metadata(bool enabled)=0
MC_DISABLE_COPY_AND_ASSIGN(WebrtcRemoteVideoTrack)
WebrtcRemoteVideoTrack()=default
#define MILLICAST_API
Definition exports.h:51
Definition capabilities.h:15
std::function< void(const EventTypes &...)> EventHandler
Definition event_handling.h:10
std::unique_ptr< EventConnection > EventConnectionPtr
Definition event_handling.h:31
The layer data is used to select a simulcast/svc layer. by sending a command to the server using the ...
Definition track.h:378
std::optional< int > temporal_layer_id
Definition track.h:387
std::string encoding_id
Definition track.h:379
std::optional< Resolution > layer_resolution
The resolution of the frame for simulcast / SVC layer.
Definition track.h:390
std::optional< int > max_spatial_layer_id
Definition track.h:396
std::optional< int > max_temporal_layer_id
Definition track.h:393
std::optional< int > spatial_layer_id
Definition track.h:388
Represents resolution of a video frame.
Definition track.h:369
int width
Definition track.h:370
int height
Definition track.h:371
std::vector< Layer > active
Definition track.h:399
std::vector< std::string > inactive
Definition track.h:400
const std::shared_ptr< const RtsTrackStats > track_stats
Definition track.h:351
std::optional< int > maxTemporalLayerId
Definition track.h:536
std::optional< int > temporalLayerId
Definition track.h:534
std::optional< std::string > encodingId
Definition track.h:532
std::optional< int > maxSpatialLayerId
Definition track.h:535
std::optional< int > spatialLayerId
Definition track.h:533
std::optional< std::string > mid
Definition track.h:216