@stream-io/video-client 1.51.0 → 1.52.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/index.browser.es.js +382 -18
  3. package/dist/index.browser.es.js.map +1 -1
  4. package/dist/index.cjs.js +382 -17
  5. package/dist/index.cjs.js.map +1 -1
  6. package/dist/index.es.js +382 -18
  7. package/dist/index.es.js.map +1 -1
  8. package/dist/src/Call.d.ts +13 -1
  9. package/dist/src/gen/google/protobuf/struct.d.ts +3 -1
  10. package/dist/src/gen/google/protobuf/timestamp.d.ts +3 -1
  11. package/dist/src/gen/video/sfu/event/events.d.ts +26 -1
  12. package/dist/src/gen/video/sfu/models/models.d.ts +208 -2
  13. package/dist/src/gen/video/sfu/signal_rpc/signal.client.d.ts +31 -2
  14. package/dist/src/gen/video/sfu/signal_rpc/signal.d.ts +67 -1
  15. package/dist/src/helpers/participantUtils.d.ts +10 -0
  16. package/dist/src/rtc/BasePeerConnection.d.ts +1 -1
  17. package/dist/src/rtc/Publisher.d.ts +4 -1
  18. package/dist/src/rtc/Subscriber.d.ts +7 -0
  19. package/dist/src/rtc/types.d.ts +1 -0
  20. package/dist/src/stats/rtc/StatsTracer.d.ts +2 -1
  21. package/dist/src/stats/utils.d.ts +1 -0
  22. package/package.json +14 -14
  23. package/src/Call.ts +51 -2
  24. package/src/devices/__tests__/CameraManager.test.ts +3 -1
  25. package/src/devices/__tests__/DeviceManager.test.ts +3 -1
  26. package/src/devices/__tests__/MicrophoneManager.test.ts +3 -1
  27. package/src/devices/__tests__/MicrophoneManagerRN.test.ts +3 -1
  28. package/src/devices/__tests__/ScreenShareManager.test.ts +3 -1
  29. package/src/devices/__tests__/web-audio.mocks.ts +3 -1
  30. package/src/gen/google/protobuf/struct.ts +7 -12
  31. package/src/gen/google/protobuf/timestamp.ts +6 -7
  32. package/src/gen/video/sfu/event/events.ts +33 -25
  33. package/src/gen/video/sfu/models/models.ts +349 -1
  34. package/src/gen/video/sfu/signal_rpc/signal.client.ts +51 -29
  35. package/src/gen/video/sfu/signal_rpc/signal.ts +122 -15
  36. package/src/helpers/__tests__/DynascaleManager.test.ts +8 -7
  37. package/src/helpers/__tests__/browsers.test.ts +4 -4
  38. package/src/helpers/__tests__/participantUtils.test.ts +47 -0
  39. package/src/helpers/client-details.ts +4 -1
  40. package/src/helpers/participantUtils.ts +15 -0
  41. package/src/rtc/BasePeerConnection.ts +7 -1
  42. package/src/rtc/Publisher.ts +4 -0
  43. package/src/rtc/Subscriber.ts +29 -1
  44. package/src/rtc/__tests__/Subscriber.test.ts +5 -1
  45. package/src/rtc/__tests__/mocks/webrtc.mocks.ts +16 -15
  46. package/src/rtc/types.ts +1 -0
  47. package/src/stats/rtc/StatsTracer.ts +25 -4
  48. package/src/stats/rtc/__tests__/StatsTracer.test.ts +155 -0
@@ -1,10 +1,10 @@
1
+
1
2
  // @generated by protobuf-ts 2.10.0 with parameter long_type_string,client_generic,server_none,eslint_disable,optimize_code_size
2
3
  // @generated from protobuf file "video/sfu/models/models.proto" (package "stream.video.sfu.models", syntax proto3)
3
4
  // tslint:disable
4
5
  import { MessageType } from '@protobuf-ts/runtime';
5
6
  import { Struct } from '../../../google/protobuf/struct';
6
7
  import { Timestamp } from '../../../google/protobuf/timestamp';
7
-
8
8
  /**
9
9
  * CallState is the current state of the call
10
10
  * as seen by an SFU.
@@ -415,6 +415,10 @@ export interface TrackInfo {
415
415
  * @generated from protobuf field: int32 publish_option_id = 12;
416
416
  */
417
417
  publishOptionId: number;
418
+ /**
419
+ * @generated from protobuf field: bool self_sub_audio_video = 13;
420
+ */
421
+ selfSubAudioVideo: boolean;
418
422
  }
419
423
  /**
420
424
  * @generated from protobuf message stream.video.sfu.models.Error
@@ -453,6 +457,10 @@ export interface ClientDetails {
453
457
  * @generated from protobuf field: stream.video.sfu.models.Device device = 4;
454
458
  */
455
459
  device?: Device;
460
+ /**
461
+ * @generated from protobuf field: string webrtc_version = 5;
462
+ */
463
+ webrtcVersion: string;
456
464
  }
457
465
  /**
458
466
  * @generated from protobuf message stream.video.sfu.models.Sdk
@@ -706,6 +714,155 @@ export interface PerformanceStats {
706
714
  */
707
715
  targetBitrate: number;
708
716
  }
717
+ /**
718
+ * ===================================================================
719
+ * BASE (shared by all RTP directions)
720
+ * ===================================================================
721
+ *
722
+ * @generated from protobuf message stream.video.sfu.models.RtpBase
723
+ */
724
+ export interface RtpBase {
725
+ /**
726
+ * @generated from protobuf field: uint32 ssrc = 1;
727
+ */
728
+ ssrc: number; // raw stat["ssrc"]
729
+ /**
730
+ * @generated from protobuf field: string kind = 2;
731
+ */
732
+ kind: string; // stat["kind"] ("audio","video")
733
+ /**
734
+ * @generated from protobuf field: double timestamp_ms = 3;
735
+ */
736
+ timestampMs: number; // stat["timestamp"] in milliseconds
737
+ }
738
+ /**
739
+ * ===================================================================
740
+ * INBOUND (SUBSCRIBER RECEIVING MEDIA)
741
+ * ===================================================================
742
+ *
743
+ * @generated from protobuf message stream.video.sfu.models.InboundRtp
744
+ */
745
+ export interface InboundRtp {
746
+ /**
747
+ * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
748
+ */
749
+ base?: RtpBase;
750
+ /**
751
+ * @generated from protobuf field: double jitter_seconds = 2;
752
+ */
753
+ jitterSeconds: number; // stat["jitter"]
754
+ /**
755
+ * @generated from protobuf field: uint64 packets_received = 3;
756
+ */
757
+ packetsReceived: string; // stat["packetsReceived"]
758
+ /**
759
+ * @generated from protobuf field: uint64 packets_lost = 4;
760
+ */
761
+ packetsLost: string; // stat["packetsLost"]
762
+ /**
763
+ * @generated from protobuf field: double packet_loss_percent = 5;
764
+ */
765
+ packetLossPercent: number; // (packets_lost / (packets_received + packets_lost)) * 100;skip if denominator <= 0 or counters decreased
766
+ /**
767
+ * -------- AUDIO METRICS --------
768
+ *
769
+ * @generated from protobuf field: uint32 concealment_events = 10;
770
+ */
771
+ concealmentEvents: number; // stat["concealmentEvents"]
772
+ /**
773
+ * @generated from protobuf field: double concealment_percent = 11;
774
+ */
775
+ concealmentPercent: number; // (concealedSamples / totalSamplesReceived) * 100 when totalSamplesReceived >= 96_000 (≈2 s @ 48 kHz)
776
+ /**
777
+ * -------- VIDEO METRICS --------
778
+ *
779
+ * @generated from protobuf field: double fps = 20;
780
+ */
781
+ fps: number; // use delta(framesDecoded)/delta(time) with prev sample
782
+ /**
783
+ * @generated from protobuf field: double freeze_duration_seconds = 21;
784
+ */
785
+ freezeDurationSeconds: number; // stat["totalFreezesDuration"]
786
+ /**
787
+ * @generated from protobuf field: double avg_decode_time_seconds = 22;
788
+ */
789
+ avgDecodeTimeSeconds: number; // stat["totalDecodeTime"] / max(1, stat["framesDecoded"])
790
+ /**
791
+ * @generated from protobuf field: uint32 min_dimension_px = 23;
792
+ */
793
+ minDimensionPx: number; // min(stat["frameWidth"], stat["frameHeight"]) for video-like tracks
794
+ }
795
+ /**
796
+ * ===================================================================
797
+ * OUTBOUND (PUBLISHER SENDING MEDIA)
798
+ * ===================================================================
799
+ *
800
+ * @generated from protobuf message stream.video.sfu.models.OutboundRtp
801
+ */
802
+ export interface OutboundRtp {
803
+ /**
804
+ * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
805
+ */
806
+ base?: RtpBase;
807
+ /**
808
+ * @generated from protobuf field: double fps = 10;
809
+ */
810
+ fps: number; // delta(framesEncoded)/delta(time) if missing
811
+ /**
812
+ * @generated from protobuf field: double avg_encode_time_seconds = 11;
813
+ */
814
+ avgEncodeTimeSeconds: number; // stat["totalEncodeTime"] / max(1, stat["framesEncoded"])
815
+ /**
816
+ * @generated from protobuf field: double bitrate_bps = 12;
817
+ */
818
+ bitrateBps: number; // delta(bytesSent)*8 / delta(timeSeconds); requires prev bytes/timestamp; ignore if delta<=0
819
+ /**
820
+ * @generated from protobuf field: uint32 min_dimension_px = 13;
821
+ */
822
+ minDimensionPx: number; // min(stat["frameWidth"], stat["frameHeight"])
823
+ }
824
+ /**
825
+ * ===================================================================
826
+ * SFU FEEDBACK: REMOTE-INBOUND (Publisher receives feedback)
827
+ * ===================================================================
828
+ *
829
+ * @generated from protobuf message stream.video.sfu.models.RemoteInboundRtp
830
+ */
831
+ export interface RemoteInboundRtp {
832
+ /**
833
+ * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
834
+ */
835
+ base?: RtpBase;
836
+ /**
837
+ * @generated from protobuf field: double jitter_seconds = 2;
838
+ */
839
+ jitterSeconds: number; // stat["jitter"]
840
+ /**
841
+ * @generated from protobuf field: double round_trip_time_s = 3;
842
+ */
843
+ roundTripTimeS: number; // stat["roundTripTime"]
844
+ }
845
+ /**
846
+ * ===================================================================
847
+ * SFU FEEDBACK: REMOTE-OUTBOUND (Subscriber receives feedback)
848
+ * ===================================================================
849
+ *
850
+ * @generated from protobuf message stream.video.sfu.models.RemoteOutboundRtp
851
+ */
852
+ export interface RemoteOutboundRtp {
853
+ /**
854
+ * @generated from protobuf field: stream.video.sfu.models.RtpBase base = 1;
855
+ */
856
+ base?: RtpBase;
857
+ /**
858
+ * @generated from protobuf field: double jitter_seconds = 2;
859
+ */
860
+ jitterSeconds: number; // stat["jitter"] if provided
861
+ /**
862
+ * @generated from protobuf field: double round_trip_time_s = 3;
863
+ */
864
+ roundTripTimeS: number; // stat["roundTripTime"]
865
+ }
709
866
  /**
710
867
  * @generated from protobuf enum stream.video.sfu.models.PeerType
711
868
  */
@@ -973,6 +1130,14 @@ export enum SdkType {
973
1130
  * @generated from protobuf enum value: SDK_TYPE_PLAIN_JAVASCRIPT = 9;
974
1131
  */
975
1132
  PLAIN_JAVASCRIPT = 9,
1133
+ /**
1134
+ * @generated from protobuf enum value: SDK_TYPE_PYTHON = 10;
1135
+ */
1136
+ PYTHON = 10,
1137
+ /**
1138
+ * @generated from protobuf enum value: SDK_TYPE_VISION_AGENTS = 11;
1139
+ */
1140
+ VISION_AGENTS = 11,
976
1141
  }
977
1142
  /**
978
1143
  * @generated from protobuf enum stream.video.sfu.models.TrackUnpublishReason
@@ -1177,6 +1342,12 @@ export enum ClientCapability {
1177
1342
  * @generated from protobuf enum value: CLIENT_CAPABILITY_SUBSCRIBER_VIDEO_PAUSE = 1;
1178
1343
  */
1179
1344
  SUBSCRIBER_VIDEO_PAUSE = 1,
1345
+ /**
1346
+ * Instructs SFU that stats will be sent to the coordinator
1347
+ *
1348
+ * @generated from protobuf enum value: CLIENT_CAPABILITY_COORDINATOR_STATS = 2;
1349
+ */
1350
+ COORDINATOR_STATS = 2,
1180
1351
  }
1181
1352
  /**
1182
1353
  * DegradationPreference represents the RTCDegradationPreference from WebRTC.
@@ -1603,6 +1774,12 @@ class TrackInfo$Type extends MessageType<TrackInfo> {
1603
1774
  kind: 'scalar',
1604
1775
  T: 5 /*ScalarType.INT32*/,
1605
1776
  },
1777
+ {
1778
+ no: 13,
1779
+ name: 'self_sub_audio_video',
1780
+ kind: 'scalar',
1781
+ T: 8 /*ScalarType.BOOL*/,
1782
+ },
1606
1783
  ]);
1607
1784
  }
1608
1785
  }
@@ -1641,6 +1818,12 @@ class ClientDetails$Type extends MessageType<ClientDetails> {
1641
1818
  { no: 2, name: 'os', kind: 'message', T: () => OS },
1642
1819
  { no: 3, name: 'browser', kind: 'message', T: () => Browser },
1643
1820
  { no: 4, name: 'device', kind: 'message', T: () => Device },
1821
+ {
1822
+ no: 5,
1823
+ name: 'webrtc_version',
1824
+ kind: 'scalar',
1825
+ T: 9 /*ScalarType.STRING*/,
1826
+ },
1644
1827
  ]);
1645
1828
  }
1646
1829
  }
@@ -1913,3 +2096,168 @@ class PerformanceStats$Type extends MessageType<PerformanceStats> {
1913
2096
  * @generated MessageType for protobuf message stream.video.sfu.models.PerformanceStats
1914
2097
  */
1915
2098
  export const PerformanceStats = new PerformanceStats$Type();
2099
+ // @generated message type with reflection information, may provide speed optimized methods
2100
+ class RtpBase$Type extends MessageType<RtpBase> {
2101
+ constructor() {
2102
+ super('stream.video.sfu.models.RtpBase', [
2103
+ { no: 1, name: 'ssrc', kind: 'scalar', T: 13 /*ScalarType.UINT32*/ },
2104
+ { no: 2, name: 'kind', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },
2105
+ {
2106
+ no: 3,
2107
+ name: 'timestamp_ms',
2108
+ kind: 'scalar',
2109
+ T: 1 /*ScalarType.DOUBLE*/,
2110
+ },
2111
+ ]);
2112
+ }
2113
+ }
2114
+ /**
2115
+ * @generated MessageType for protobuf message stream.video.sfu.models.RtpBase
2116
+ */
2117
+ export const RtpBase = new RtpBase$Type();
2118
+ // @generated message type with reflection information, may provide speed optimized methods
2119
+ class InboundRtp$Type extends MessageType<InboundRtp> {
2120
+ constructor() {
2121
+ super('stream.video.sfu.models.InboundRtp', [
2122
+ { no: 1, name: 'base', kind: 'message', T: () => RtpBase },
2123
+ {
2124
+ no: 2,
2125
+ name: 'jitter_seconds',
2126
+ kind: 'scalar',
2127
+ T: 1 /*ScalarType.DOUBLE*/,
2128
+ },
2129
+ {
2130
+ no: 3,
2131
+ name: 'packets_received',
2132
+ kind: 'scalar',
2133
+ T: 4 /*ScalarType.UINT64*/,
2134
+ },
2135
+ {
2136
+ no: 4,
2137
+ name: 'packets_lost',
2138
+ kind: 'scalar',
2139
+ T: 4 /*ScalarType.UINT64*/,
2140
+ },
2141
+ {
2142
+ no: 5,
2143
+ name: 'packet_loss_percent',
2144
+ kind: 'scalar',
2145
+ T: 1 /*ScalarType.DOUBLE*/,
2146
+ },
2147
+ {
2148
+ no: 10,
2149
+ name: 'concealment_events',
2150
+ kind: 'scalar',
2151
+ T: 13 /*ScalarType.UINT32*/,
2152
+ },
2153
+ {
2154
+ no: 11,
2155
+ name: 'concealment_percent',
2156
+ kind: 'scalar',
2157
+ T: 1 /*ScalarType.DOUBLE*/,
2158
+ },
2159
+ { no: 20, name: 'fps', kind: 'scalar', T: 1 /*ScalarType.DOUBLE*/ },
2160
+ {
2161
+ no: 21,
2162
+ name: 'freeze_duration_seconds',
2163
+ kind: 'scalar',
2164
+ T: 1 /*ScalarType.DOUBLE*/,
2165
+ },
2166
+ {
2167
+ no: 22,
2168
+ name: 'avg_decode_time_seconds',
2169
+ kind: 'scalar',
2170
+ T: 1 /*ScalarType.DOUBLE*/,
2171
+ },
2172
+ {
2173
+ no: 23,
2174
+ name: 'min_dimension_px',
2175
+ kind: 'scalar',
2176
+ T: 13 /*ScalarType.UINT32*/,
2177
+ },
2178
+ ]);
2179
+ }
2180
+ }
2181
+ /**
2182
+ * @generated MessageType for protobuf message stream.video.sfu.models.InboundRtp
2183
+ */
2184
+ export const InboundRtp = new InboundRtp$Type();
2185
+ // @generated message type with reflection information, may provide speed optimized methods
2186
+ class OutboundRtp$Type extends MessageType<OutboundRtp> {
2187
+ constructor() {
2188
+ super('stream.video.sfu.models.OutboundRtp', [
2189
+ { no: 1, name: 'base', kind: 'message', T: () => RtpBase },
2190
+ { no: 10, name: 'fps', kind: 'scalar', T: 1 /*ScalarType.DOUBLE*/ },
2191
+ {
2192
+ no: 11,
2193
+ name: 'avg_encode_time_seconds',
2194
+ kind: 'scalar',
2195
+ T: 1 /*ScalarType.DOUBLE*/,
2196
+ },
2197
+ {
2198
+ no: 12,
2199
+ name: 'bitrate_bps',
2200
+ kind: 'scalar',
2201
+ T: 1 /*ScalarType.DOUBLE*/,
2202
+ },
2203
+ {
2204
+ no: 13,
2205
+ name: 'min_dimension_px',
2206
+ kind: 'scalar',
2207
+ T: 13 /*ScalarType.UINT32*/,
2208
+ },
2209
+ ]);
2210
+ }
2211
+ }
2212
+ /**
2213
+ * @generated MessageType for protobuf message stream.video.sfu.models.OutboundRtp
2214
+ */
2215
+ export const OutboundRtp = new OutboundRtp$Type();
2216
+ // @generated message type with reflection information, may provide speed optimized methods
2217
+ class RemoteInboundRtp$Type extends MessageType<RemoteInboundRtp> {
2218
+ constructor() {
2219
+ super('stream.video.sfu.models.RemoteInboundRtp', [
2220
+ { no: 1, name: 'base', kind: 'message', T: () => RtpBase },
2221
+ {
2222
+ no: 2,
2223
+ name: 'jitter_seconds',
2224
+ kind: 'scalar',
2225
+ T: 1 /*ScalarType.DOUBLE*/,
2226
+ },
2227
+ {
2228
+ no: 3,
2229
+ name: 'round_trip_time_s',
2230
+ kind: 'scalar',
2231
+ T: 1 /*ScalarType.DOUBLE*/,
2232
+ },
2233
+ ]);
2234
+ }
2235
+ }
2236
+ /**
2237
+ * @generated MessageType for protobuf message stream.video.sfu.models.RemoteInboundRtp
2238
+ */
2239
+ export const RemoteInboundRtp = new RemoteInboundRtp$Type();
2240
+ // @generated message type with reflection information, may provide speed optimized methods
2241
+ class RemoteOutboundRtp$Type extends MessageType<RemoteOutboundRtp> {
2242
+ constructor() {
2243
+ super('stream.video.sfu.models.RemoteOutboundRtp', [
2244
+ { no: 1, name: 'base', kind: 'message', T: () => RtpBase },
2245
+ {
2246
+ no: 2,
2247
+ name: 'jitter_seconds',
2248
+ kind: 'scalar',
2249
+ T: 1 /*ScalarType.DOUBLE*/,
2250
+ },
2251
+ {
2252
+ no: 3,
2253
+ name: 'round_trip_time_s',
2254
+ kind: 'scalar',
2255
+ T: 1 /*ScalarType.DOUBLE*/,
2256
+ },
2257
+ ]);
2258
+ }
2259
+ }
2260
+ /**
2261
+ * @generated MessageType for protobuf message stream.video.sfu.models.RemoteOutboundRtp
2262
+ */
2263
+ export const RemoteOutboundRtp = new RemoteOutboundRtp$Type();
@@ -1,35 +1,33 @@
1
+
1
2
  // @generated by protobuf-ts 2.10.0 with parameter long_type_string,client_generic,server_none,eslint_disable,optimize_code_size
2
3
  // @generated from protobuf file "video/sfu/signal_rpc/signal.proto" (package "stream.video.sfu.signal", syntax proto3)
3
4
  // tslint:disable
4
- import type {
5
- RpcOptions,
6
- RpcTransport,
7
- ServiceInfo,
8
- UnaryCall,
9
- } from '@protobuf-ts/runtime-rpc';
10
- import { stackIntercept } from '@protobuf-ts/runtime-rpc';
11
- import type {
12
- ICERestartRequest,
13
- ICERestartResponse,
14
- ICETrickleResponse,
15
- SendAnswerRequest,
16
- SendAnswerResponse,
17
- SendStatsRequest,
18
- SendStatsResponse,
19
- SetPublisherRequest,
20
- SetPublisherResponse,
21
- StartNoiseCancellationRequest,
22
- StartNoiseCancellationResponse,
23
- StopNoiseCancellationRequest,
24
- StopNoiseCancellationResponse,
25
- UpdateMuteStatesRequest,
26
- UpdateMuteStatesResponse,
27
- UpdateSubscriptionsRequest,
28
- UpdateSubscriptionsResponse,
29
- } from './signal';
5
+ import type { RpcTransport } from '@protobuf-ts/runtime-rpc';
6
+ import type { ServiceInfo } from '@protobuf-ts/runtime-rpc';
30
7
  import { SignalServer } from './signal';
8
+ import type { StopNoiseCancellationResponse } from './signal';
9
+ import type { StopNoiseCancellationRequest } from './signal';
10
+ import type { StartNoiseCancellationResponse } from './signal';
11
+ import type { StartNoiseCancellationRequest } from './signal';
12
+ import type { SendMetricsResponse } from './signal';
13
+ import type { SendMetricsRequest } from './signal';
14
+ import type { SendStatsResponse } from './signal';
15
+ import type { SendStatsRequest } from './signal';
16
+ import type { ICERestartResponse } from './signal';
17
+ import type { ICERestartRequest } from './signal';
18
+ import type { UpdateMuteStatesResponse } from './signal';
19
+ import type { UpdateMuteStatesRequest } from './signal';
20
+ import type { UpdateSubscriptionsResponse } from './signal';
21
+ import type { UpdateSubscriptionsRequest } from './signal';
22
+ import type { ICETrickleResponse } from './signal';
31
23
  import type { ICETrickle } from '../models/models';
32
-
24
+ import type { SendAnswerResponse } from './signal';
25
+ import type { SendAnswerRequest } from './signal';
26
+ import { stackIntercept } from '@protobuf-ts/runtime-rpc';
27
+ import type { SetPublisherResponse } from './signal';
28
+ import type { SetPublisherRequest } from './signal';
29
+ import type { UnaryCall } from '@protobuf-ts/runtime-rpc';
30
+ import type { RpcOptions } from '@protobuf-ts/runtime-rpc';
33
31
  /**
34
32
  * @generated from protobuf service stream.video.sfu.signal.SignalServer
35
33
  */
@@ -92,6 +90,13 @@ export interface ISignalServerClient {
92
90
  input: SendStatsRequest,
93
91
  options?: RpcOptions,
94
92
  ): UnaryCall<SendStatsRequest, SendStatsResponse>;
93
+ /**
94
+ * @generated from protobuf rpc: SendMetrics(stream.video.sfu.signal.SendMetricsRequest) returns (stream.video.sfu.signal.SendMetricsResponse);
95
+ */
96
+ sendMetrics(
97
+ input: SendMetricsRequest,
98
+ options?: RpcOptions,
99
+ ): UnaryCall<SendMetricsRequest, SendMetricsResponse>;
95
100
  /**
96
101
  * @generated from protobuf rpc: StartNoiseCancellation(stream.video.sfu.signal.StartNoiseCancellationRequest) returns (stream.video.sfu.signal.StartNoiseCancellationResponse);
97
102
  */
@@ -240,6 +245,23 @@ export class SignalServerClient implements ISignalServerClient, ServiceInfo {
240
245
  input,
241
246
  );
242
247
  }
248
+ /**
249
+ * @generated from protobuf rpc: SendMetrics(stream.video.sfu.signal.SendMetricsRequest) returns (stream.video.sfu.signal.SendMetricsResponse);
250
+ */
251
+ sendMetrics(
252
+ input: SendMetricsRequest,
253
+ options?: RpcOptions,
254
+ ): UnaryCall<SendMetricsRequest, SendMetricsResponse> {
255
+ const method = this.methods[7],
256
+ opt = this._transport.mergeOptions(options);
257
+ return stackIntercept<SendMetricsRequest, SendMetricsResponse>(
258
+ 'unary',
259
+ this._transport,
260
+ method,
261
+ opt,
262
+ input,
263
+ );
264
+ }
243
265
  /**
244
266
  * @generated from protobuf rpc: StartNoiseCancellation(stream.video.sfu.signal.StartNoiseCancellationRequest) returns (stream.video.sfu.signal.StartNoiseCancellationResponse);
245
267
  */
@@ -247,7 +269,7 @@ export class SignalServerClient implements ISignalServerClient, ServiceInfo {
247
269
  input: StartNoiseCancellationRequest,
248
270
  options?: RpcOptions,
249
271
  ): UnaryCall<StartNoiseCancellationRequest, StartNoiseCancellationResponse> {
250
- const method = this.methods[7],
272
+ const method = this.methods[8],
251
273
  opt = this._transport.mergeOptions(options);
252
274
  return stackIntercept<
253
275
  StartNoiseCancellationRequest,
@@ -261,7 +283,7 @@ export class SignalServerClient implements ISignalServerClient, ServiceInfo {
261
283
  input: StopNoiseCancellationRequest,
262
284
  options?: RpcOptions,
263
285
  ): UnaryCall<StopNoiseCancellationRequest, StopNoiseCancellationResponse> {
264
- const method = this.methods[8],
286
+ const method = this.methods[9],
265
287
  opt = this._transport.mergeOptions(options);
266
288
  return stackIntercept<
267
289
  StopNoiseCancellationRequest,
@@ -1,23 +1,25 @@
1
+
1
2
  // @generated by protobuf-ts 2.10.0 with parameter long_type_string,client_generic,server_none,eslint_disable,optimize_code_size
2
3
  // @generated from protobuf file "video/sfu/signal_rpc/signal.proto" (package "stream.video.sfu.signal", syntax proto3)
3
4
  // tslint:disable
4
- import {
5
- AndroidState,
6
- AppleState,
7
- Error,
8
- ICETrickle,
9
- InputDevices,
10
- PeerType,
11
- PerformanceStats,
12
- RTMPIngress,
13
- TrackInfo,
14
- TrackType,
15
- VideoDimension,
16
- WebsocketReconnectStrategy,
17
- } from '../models/models';
5
+ import { ICETrickle } from '../models/models';
18
6
  import { ServiceType } from '@protobuf-ts/runtime-rpc';
19
7
  import { MessageType } from '@protobuf-ts/runtime';
20
-
8
+ import { TrackInfo } from '../models/models';
9
+ import { VideoDimension } from '../models/models';
10
+ import { TrackType } from '../models/models';
11
+ import { PeerType } from '../models/models';
12
+ import { PerformanceStats } from '../models/models';
13
+ import { RTMPIngress } from '../models/models';
14
+ import { AppleState } from '../models/models';
15
+ import { AndroidState } from '../models/models';
16
+ import { InputDevices } from '../models/models';
17
+ import { RemoteOutboundRtp } from '../models/models';
18
+ import { RemoteInboundRtp } from '../models/models';
19
+ import { OutboundRtp } from '../models/models';
20
+ import { InboundRtp } from '../models/models';
21
+ import { WebsocketReconnectStrategy } from '../models/models';
22
+ import { Error } from '../models/models';
21
23
  /**
22
24
  * @generated from protobuf message stream.video.sfu.signal.StartNoiseCancellationRequest
23
25
  */
@@ -93,6 +95,39 @@ export interface Telemetry {
93
95
  oneofKind: undefined;
94
96
  };
95
97
  }
98
+ /**
99
+ * @generated from protobuf message stream.video.sfu.signal.SendMetricsRequest
100
+ */
101
+ export interface SendMetricsRequest {
102
+ /**
103
+ * @generated from protobuf field: string session_id = 1;
104
+ */
105
+ sessionId: string;
106
+ /**
107
+ * @generated from protobuf field: string unified_session_id = 2;
108
+ */
109
+ unifiedSessionId: string;
110
+ /**
111
+ * @generated from protobuf field: repeated stream.video.sfu.models.InboundRtp inbounds = 3;
112
+ */
113
+ inbounds: InboundRtp[];
114
+ /**
115
+ * @generated from protobuf field: repeated stream.video.sfu.models.OutboundRtp outbounds = 4;
116
+ */
117
+ outbounds: OutboundRtp[];
118
+ /**
119
+ * @generated from protobuf field: repeated stream.video.sfu.models.RemoteInboundRtp remote_inbounds = 5;
120
+ */
121
+ remoteInbounds: RemoteInboundRtp[];
122
+ /**
123
+ * @generated from protobuf field: repeated stream.video.sfu.models.RemoteOutboundRtp remote_outbounds = 6;
124
+ */
125
+ remoteOutbounds: RemoteOutboundRtp[];
126
+ }
127
+ /**
128
+ * @generated from protobuf message stream.video.sfu.signal.SendMetricsResponse
129
+ */
130
+ export interface SendMetricsResponse {}
96
131
  /**
97
132
  * @generated from protobuf message stream.video.sfu.signal.SendStatsRequest
98
133
  */
@@ -336,6 +371,10 @@ export interface SendAnswerRequest {
336
371
  * @generated from protobuf field: string session_id = 3;
337
372
  */
338
373
  sessionId: string;
374
+ /**
375
+ * @generated from protobuf field: uint32 negotiation_id = 4;
376
+ */
377
+ negotiationId: number;
339
378
  }
340
379
  /**
341
380
  * @generated from protobuf message stream.video.sfu.signal.SendAnswerResponse
@@ -502,6 +541,62 @@ class Telemetry$Type extends MessageType<Telemetry> {
502
541
  */
503
542
  export const Telemetry = new Telemetry$Type();
504
543
  // @generated message type with reflection information, may provide speed optimized methods
544
+ class SendMetricsRequest$Type extends MessageType<SendMetricsRequest> {
545
+ constructor() {
546
+ super('stream.video.sfu.signal.SendMetricsRequest', [
547
+ { no: 1, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },
548
+ {
549
+ no: 2,
550
+ name: 'unified_session_id',
551
+ kind: 'scalar',
552
+ T: 9 /*ScalarType.STRING*/,
553
+ },
554
+ {
555
+ no: 3,
556
+ name: 'inbounds',
557
+ kind: 'message',
558
+ repeat: 2 /*RepeatType.UNPACKED*/,
559
+ T: () => InboundRtp,
560
+ },
561
+ {
562
+ no: 4,
563
+ name: 'outbounds',
564
+ kind: 'message',
565
+ repeat: 2 /*RepeatType.UNPACKED*/,
566
+ T: () => OutboundRtp,
567
+ },
568
+ {
569
+ no: 5,
570
+ name: 'remote_inbounds',
571
+ kind: 'message',
572
+ repeat: 2 /*RepeatType.UNPACKED*/,
573
+ T: () => RemoteInboundRtp,
574
+ },
575
+ {
576
+ no: 6,
577
+ name: 'remote_outbounds',
578
+ kind: 'message',
579
+ repeat: 2 /*RepeatType.UNPACKED*/,
580
+ T: () => RemoteOutboundRtp,
581
+ },
582
+ ]);
583
+ }
584
+ }
585
+ /**
586
+ * @generated MessageType for protobuf message stream.video.sfu.signal.SendMetricsRequest
587
+ */
588
+ export const SendMetricsRequest = new SendMetricsRequest$Type();
589
+ // @generated message type with reflection information, may provide speed optimized methods
590
+ class SendMetricsResponse$Type extends MessageType<SendMetricsResponse> {
591
+ constructor() {
592
+ super('stream.video.sfu.signal.SendMetricsResponse', []);
593
+ }
594
+ }
595
+ /**
596
+ * @generated MessageType for protobuf message stream.video.sfu.signal.SendMetricsResponse
597
+ */
598
+ export const SendMetricsResponse = new SendMetricsResponse$Type();
599
+ // @generated message type with reflection information, may provide speed optimized methods
505
600
  class SendStatsRequest$Type extends MessageType<SendStatsRequest> {
506
601
  constructor() {
507
602
  super('stream.video.sfu.signal.SendStatsRequest', [
@@ -776,6 +871,12 @@ class SendAnswerRequest$Type extends MessageType<SendAnswerRequest> {
776
871
  },
777
872
  { no: 2, name: 'sdp', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },
778
873
  { no: 3, name: 'session_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },
874
+ {
875
+ no: 4,
876
+ name: 'negotiation_id',
877
+ kind: 'scalar',
878
+ T: 13 /*ScalarType.UINT32*/,
879
+ },
779
880
  ]);
780
881
  }
781
882
  }
@@ -885,6 +986,12 @@ export const SignalServer = new ServiceType(
885
986
  I: SendStatsRequest,
886
987
  O: SendStatsResponse,
887
988
  },
989
+ {
990
+ name: 'SendMetrics',
991
+ options: {},
992
+ I: SendMetricsRequest,
993
+ O: SendMetricsResponse,
994
+ },
888
995
  {
889
996
  name: 'StartNoiseCancellation',
890
997
  options: {},