75 virtual ~Track() =
default;
78 const std::string &sid()
const noexcept {
return sid_; }
79 const std::string &name()
const noexcept {
return name_; }
80 TrackKind kind()
const noexcept {
return kind_; }
81 StreamState stream_state()
const noexcept {
return state_; }
82 bool muted()
const noexcept {
return muted_; }
83 bool remote()
const noexcept {
return remote_; }
86 std::optional<TrackSource> source()
const noexcept {
return source_; }
87 std::optional<bool> simulcasted()
const noexcept {
return simulcasted_; }
88 std::optional<uint32_t> width()
const noexcept {
return width_; }
89 std::optional<uint32_t> height()
const noexcept {
return height_; }
90 std::optional<std::string> mime_type()
const noexcept {
return mime_type_; }
93 bool has_handle()
const noexcept {
return handle_.valid(); }
94 uintptr_t ffi_handle_id()
const noexcept {
return handle_.get(); }
97 std::future<std::vector<RtcStats>> getStats()
const;
102 const std::shared_ptr<LocalTrackPublication> &publication)
noexcept {
107 void setStreamState(StreamState s)
noexcept { state_ = s; }
108 void setMuted(
bool m)
noexcept { muted_ = m; }
109 void setName(std::string n)
noexcept { name_ = std::move(n); }
112 Track(FfiHandle handle, std::string sid, std::string name, TrackKind kind,
113 StreamState state,
bool muted,
bool remote);
115 void setPublicationFields(std::optional<TrackSource> source,
116 std::optional<bool> simulcasted,
117 std::optional<uint32_t> width,
118 std::optional<uint32_t> height,
119 std::optional<std::string> mime_type);
126 TrackKind kind_{TrackKind::KIND_UNKNOWN};
127 StreamState state_{StreamState::STATE_UNKNOWN};
131 std::optional<TrackSource> source_;
132 std::optional<bool> simulcasted_;
133 std::optional<uint32_t> width_;
134 std::optional<uint32_t> height_;
135 std::optional<std::string> mime_type_;