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;
100 const std::shared_ptr<LocalTrackPublication> &publication)
noexcept {
105 void setStreamState(StreamState s)
noexcept { state_ = s; }
106 void setMuted(
bool m)
noexcept { muted_ = m; }
107 void setName(std::string n)
noexcept { name_ = std::move(n); }
110 Track(FfiHandle handle, std::string sid, std::string name, TrackKind kind,
111 StreamState state,
bool muted,
bool remote);
113 void setPublicationFields(std::optional<TrackSource> source,
114 std::optional<bool> simulcasted,
115 std::optional<uint32_t> width,
116 std::optional<uint32_t> height,
117 std::optional<std::string> mime_type);
124 TrackKind kind_{TrackKind::KIND_UNKNOWN};
125 StreamState state_{StreamState::STATE_UNKNOWN};
129 std::optional<TrackSource> source_;
130 std::optional<bool> simulcasted_;
131 std::optional<uint32_t> width_;
132 std::optional<uint32_t> height_;
133 std::optional<std::string> mime_type_;