/* * Copyright 2025 LiveKit * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an “AS IS” BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "livekit/track.h" #include #include #include "ffi_client.h" namespace livekit { Track::Track(FfiHandle handle, std::string sid, std::string name, TrackKind kind, StreamState state, bool muted, bool remote) : handle_(std::move(handle)), sid_(std::move(sid)), name_(std::move(name)), kind_(kind), state_(state), muted_(muted), remote_(remote) {} void Track::setPublicationFields(std::optional source, std::optional simulcasted, std::optional width, std::optional height, std::optional mime_type) { source_ = source; simulcasted_ = simulcasted; width_ = width; height_ = height; mime_type_ = std::move(mime_type); } std::future> Track::getStats() const { auto id = ffiHandleId(); if (!id) { // make a ready future with an empty vector std::promise> pr; pr.set_value({}); return pr.get_future(); } // just forward the future from FfiClient return FfiClient::instance().getTrackStatsAsync(id); } } // namespace livekit