73 virtual ~Track() =
default;
76 const std::string &sid()
const noexcept {
return sid_; }
77 const std::string &name()
const noexcept {
return name_; }
78 TrackKind kind()
const noexcept {
return kind_; }
79 StreamState stream_state()
const noexcept {
return state_; }
80 bool muted()
const noexcept {
return muted_; }
81 bool remote()
const noexcept {
return remote_; }
84 std::optional<TrackSource> source()
const noexcept {
return source_; }
85 std::optional<bool> simulcasted()
const noexcept {
return simulcasted_; }
86 std::optional<uint32_t> width()
const noexcept {
return width_; }
87 std::optional<uint32_t> height()
const noexcept {
return height_; }
88 std::optional<std::string> mime_type()
const noexcept {
return mime_type_; }
91 bool has_handle()
const noexcept {
return !handle_.valid(); }
92 uintptr_t ffi_handle_id()
const noexcept {
return handle_.get(); }
95 std::future<std::vector<RtcStats>> getStats()
const;
98 void setStreamState(StreamState s)
noexcept { state_ = s; }
99 void setMuted(
bool m)
noexcept { muted_ = m; }
100 void setName(std::string n)
noexcept { name_ = std::move(n); }
103 Track(
FfiHandle handle, std::string sid, std::string name, TrackKind kind,
104 StreamState state,
bool muted,
bool remote);
106 void setPublicationFields(std::optional<TrackSource> source,
107 std::optional<bool> simulcasted,
108 std::optional<uint32_t> width,
109 std::optional<uint32_t> height,
110 std::optional<std::string> mime_type);
117 TrackKind kind_{TrackKind::KIND_UNKNOWN};
118 StreamState state_{StreamState::STATE_UNKNOWN};
122 std::optional<TrackSource> source_;
123 std::optional<bool> simulcasted_;
124 std::optional<uint32_t> width_;
125 std::optional<uint32_t> height_;
126 std::optional<std::string> mime_type_;