Documentation Index
Fetch the complete documentation index at: https://mintlify.com/livekit/client-sdk-swift/llms.txt
Use this file to discover all available pages before exploring further.
Delegate protocol for receiving track events such as dimension updates and statistics.
Usage
class MyViewController: UIViewController, TrackDelegate {
func setupTrack(_ track: Track) {
track.add(delegate: self)
}
func track(_ track: VideoTrack, didUpdateDimensions dimensions: Dimensions?) {
print("Video dimensions updated: \(dimensions)")
}
}
Methods
track(_:didUpdateDimensions:)
Dimensions of a video track have updated.Only called for video tracks.func track(_ track: VideoTrack, didUpdateDimensions dimensions: Dimensions?)
Parameters:
track: The video track whose dimensions changed
dimensions: The new dimensions, or nil if dimensions are unknown
track(_:didUpdateStatistics:simulcastStatistics:)
Statistics for the track have been generated.This provides detailed performance metrics for the track.func track(_ track: Track, didUpdateStatistics: TrackStatistics, simulcastStatistics: [VideoCodec: TrackStatistics])
Parameters:
track: The track for which statistics were generated
didUpdateStatistics: The main track statistics
simulcastStatistics: Statistics for each simulcast layer, keyed by codec
Example
class VideoViewController: UIViewController, TrackDelegate {
var videoView: VideoView!
func handleRemoteTrack(_ track: RemoteVideoTrack) {
track.add(delegate: self)
track.add(videoRenderer: videoView)
}
// TrackDelegate methods
func track(_ track: VideoTrack, didUpdateDimensions dimensions: Dimensions?) {
guard let dimensions = dimensions else { return }
DispatchQueue.main.async {
// Update video view aspect ratio
let aspectRatio = CGFloat(dimensions.width) / CGFloat(dimensions.height)
self.videoView.updateAspectRatio(aspectRatio)
}
}
func track(_ track: Track, didUpdateStatistics statistics: TrackStatistics, simulcastStatistics: [VideoCodec: TrackStatistics]) {
print("Track \(track.sid?.stringValue ?? "unknown"):")
print(" Bitrate: \(statistics.bitrate) bps")
print(" Packet loss: \(statistics.packetsLost)")
for (codec, stats) in simulcastStatistics {
print(" \(codec): \(stats.bitrate) bps")
}
}
}