Skip to content

Conversation

@ipavlidakis
Copy link
Contributor

@ipavlidakis ipavlidakis commented May 9, 2025

🔗 Issue Links

Resolves https://linear.app/stream/issue/IOS-828/featurestats

🎯 Goal

Describe why we are making this change.

📝 Summary

Provide bullet points with the most important changes in the codebase.

🛠 Implementation

Provide a detailed description of the implementation and explain your decisions if you find them relevant.

🎨 Showcase

Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.

Before After
img img

🧪 Manual Testing Notes

Explain how this change can be tested manually, if applicable.

☑️ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change follows zero ⚠️ policy (required)
  • This change should receive manual QA
  • Changelog is updated with client-facing changes
  • New code is covered by unit tests
  • Comparison screenshots added for visual changes
  • Affected documentation updated (tutorial, CMS)

🎁 Meme

Provide a funny gif or image that relates to your work on this pull request. (Optional)

@ipavlidakis ipavlidakis self-assigned this May 9, 2025
@ipavlidakis ipavlidakis requested a review from a team as a code owner May 9, 2025 13:04
@ipavlidakis ipavlidakis added the enhancement New feature or request label May 9, 2025
@Stream-SDK-Bot
Copy link
Collaborator

Stream-SDK-Bot commented May 9, 2025

SDK Size

title develop branch diff status
StreamVideo 7.54 MB 7.88 MB +352 KB 🟡
StreamVideoSwiftUI 2.26 MB 2.26 MB 0 KB 🟢
StreamVideoUIKit 2.38 MB 2.38 MB 0 KB 🟢
StreamWebRTC 9.85 MB 9.85 MB 0 KB 🟢

@github-actions
Copy link

github-actions bot commented May 9, 2025

Public Interface

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws



@github-actions
Copy link

github-actions bot commented May 9, 2025

2 Warnings
⚠️ Please be sure to complete the Contributor Checklist in the Pull Request description
⚠️ Big PR

Generated by 🚫 Danger

@github-actions
Copy link

github-actions bot commented May 9, 2025

Public Interface

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws



Copy link
Contributor

@martinmitrevski martinmitrevski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great so far! We should do some tests, add more unit tests and figure out few things around the coding keys.

@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from f317de2 to 41db46b Compare May 13, 2025 11:51
@github-actions
Copy link

Public Interface

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String



@github-actions
Copy link

Public Interface

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws



@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from b257169 to 6b6c56d Compare May 15, 2025 13:15
@github-actions
Copy link

Public Interface

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String



@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch 2 times, most recently from aa2c82e to 4f2d890 Compare May 20, 2025 09:54
@github-actions
Copy link

Public Interface

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws



@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from 4f2d890 to d693b24 Compare May 20, 2025 10:56
@github-actions
Copy link

Public Interface

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String



@github-actions
Copy link

Public Interface

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String



@github-actions
Copy link

Public Interface

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String



@github-actions
Copy link

Public Interface

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws



@github-actions
Copy link

Public Interface

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws



Copy link
Contributor

@martinmitrevski martinmitrevski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, just left 2 minor comments. Let's analyze the stats tomorrow and then we can merge.

@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from 94e8e35 to 20382e8 Compare May 22, 2025 10:02
@github-actions
Copy link

Public Interface

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws



@github-actions
Copy link

Public Interface

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCDataChannelState  
+ 
+   public var description: String



@github-actions
Copy link

Public Interface

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws



@github-actions
Copy link

Public Interface

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws



@github-actions
Copy link

Public Interface

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String



@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from 1ec0024 to 12baf37 Compare May 22, 2025 12:46
@github-actions
Copy link

Public Interface

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws



@github-actions
Copy link

Public Interface

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws



@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from 0ade529 to cc190cd Compare May 22, 2025 13:32
@github-actions
Copy link

Public Interface

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String



@ipavlidakis ipavlidakis force-pushed the enhancement/sfu-stats-implementation branch from cc190cd to f04b3e0 Compare May 22, 2025 16:29
@github-actions
Copy link

Public Interface

+ extension RTCDataChannel  
+ 
+   case label
+   case isOrdered
+   case maxPacketLifeTime
+   case maxRetransmits
+   case `protocol`
+   case isNegotiated
+   case channelId
+   case readyState
+   case bufferedAmount
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCDataChannelState  
+ 
+   public var description: String

+ extension RTCContinualGatheringPolicy  
+ 
+   public var description: String

+ extension RTCBundlePolicy  
+ 
+   public var description: String

+ extension RTCIceServer  
+ 
+   case urlStrings
+   case username
+   case credential
+   case tlsCertPolicy
+   case hostname
+   case tlsAlpnProtocols
+   case tlsEllipticCurves
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCCryptoOptions  
+ 
+   case srtpEnableGcmCryptoSuites
+   case srtpEnableAes128Sha1_32CryptoCipher
+   case srtpEnableEncryptedRtpHeaderExtensions
+   case sframeRequireFrameEncryption
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCIceCandidateErrorEvent  
+ 
+   case address
+   case port
+   case url
+   case errorCode
+   case errorText
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCConfiguration  
+ 
+   case enableDscp
+   case iceServers
+   case iceTransportPolicy
+   case bundlePolicy
+   case rtcpMuxPolicy
+   case tcpCandidatePolicy
+   case candidateNetworkPolicy
+   case continualGatheringPolicy
+   case disableIPV6OnWiFi
+   case maxIPv6Networks
+   case disableLinkLocalNetworks
+   case audioJitterBufferMaxPackets
+   case audioJitterBufferFastAccelerate
+   case iceConnectionReceivingTimeout
+   case iceBackupCandidatePairPingInterval
+   case keyType
+   case iceCandidatePoolSize
+   case shouldPruneTurnPorts
+   case shouldPresumeWritableWhenFullyRelayed
+   case shouldSurfaceIceCandidatesOnIceTransportTypeChanged
+   case iceCheckMinInterval
+   case sdpSemantics
+   case activeResetSrtpParams
+   case cryptoOptions
+   case turnLoggingId
+   case rtcpAudioReportIntervalMs
+   case rtcpVideoReportIntervalMs
+   case enableImplicitRollback
+   case offerExtmapAllowMixed
+   case iceCheckIntervalStrongConnectivity
+   case iceCheckIntervalWeakConnectivity
+   case iceUnwritableTimeout
+   case iceUnwritableMinChecks
+   case iceInactiveTimeout
+   case enableIceGatheringOnAnyAddressPorts
+   
+ 
+   public func encode(to encoder: Encoder)throws

+ extension RTCSessionDescription  
+ 
+   case type
+   case sdp
+   
+ 
+   public func encode(to encoder: Encoder)throws



@sonarqubecloud
Copy link

@ipavlidakis ipavlidakis merged commit 72d0f03 into develop Jun 2, 2025
1 of 5 checks passed
@ipavlidakis ipavlidakis deleted the enhancement/sfu-stats-implementation branch June 2, 2025 14:54
@github-actions
Copy link

github-actions bot commented Jun 2, 2025

Public Interface

🚀 No changes affecting the public interface.

ipavlidakis added a commit that referenced this pull request Jun 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants