@livekit/rtc-node 0.13.23 → 0.13.25

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 (290) hide show
  1. package/dist/audio_filter.cjs +2 -2
  2. package/dist/audio_filter.cjs.map +1 -1
  3. package/dist/audio_filter.js +1 -1
  4. package/dist/audio_filter.js.map +1 -1
  5. package/dist/audio_frame.cjs +11 -7
  6. package/dist/audio_frame.cjs.map +1 -1
  7. package/dist/audio_frame.d.cts +3 -8
  8. package/dist/audio_frame.d.ts +3 -8
  9. package/dist/audio_frame.d.ts.map +1 -1
  10. package/dist/audio_frame.js +10 -6
  11. package/dist/audio_frame.js.map +1 -1
  12. package/dist/audio_mixer.cjs +11 -4
  13. package/dist/audio_mixer.cjs.map +1 -1
  14. package/dist/audio_mixer.d.cts +1 -6
  15. package/dist/audio_mixer.d.ts +1 -6
  16. package/dist/audio_mixer.d.ts.map +1 -1
  17. package/dist/audio_mixer.js +11 -4
  18. package/dist/audio_mixer.js.map +1 -1
  19. package/dist/audio_resampler.cjs +20 -12
  20. package/dist/audio_resampler.cjs.map +1 -1
  21. package/dist/audio_resampler.d.cts +6 -6
  22. package/dist/audio_resampler.d.ts +6 -6
  23. package/dist/audio_resampler.d.ts.map +1 -1
  24. package/dist/audio_resampler.js +12 -4
  25. package/dist/audio_resampler.js.map +1 -1
  26. package/dist/audio_source.cjs +11 -7
  27. package/dist/audio_source.cjs.map +1 -1
  28. package/dist/audio_source.d.cts +1 -7
  29. package/dist/audio_source.d.ts +1 -7
  30. package/dist/audio_source.d.ts.map +1 -1
  31. package/dist/audio_source.js +8 -3
  32. package/dist/audio_source.js.map +1 -1
  33. package/dist/audio_stream.cjs +17 -5
  34. package/dist/audio_stream.cjs.map +1 -1
  35. package/dist/audio_stream.d.cts +1 -14
  36. package/dist/audio_stream.d.ts +1 -14
  37. package/dist/audio_stream.d.ts.map +1 -1
  38. package/dist/audio_stream.js +16 -4
  39. package/dist/audio_stream.js.map +1 -1
  40. package/dist/data_streams/index.d.cts +2 -10
  41. package/dist/data_streams/index.d.ts +2 -10
  42. package/dist/data_streams/stream_reader.cjs +8 -0
  43. package/dist/data_streams/stream_reader.cjs.map +1 -1
  44. package/dist/data_streams/stream_reader.d.cts +2 -10
  45. package/dist/data_streams/stream_reader.d.ts +2 -10
  46. package/dist/data_streams/stream_reader.d.ts.map +1 -1
  47. package/dist/data_streams/stream_reader.js +8 -0
  48. package/dist/data_streams/stream_reader.js.map +1 -1
  49. package/dist/data_streams/stream_writer.d.cts +2 -10
  50. package/dist/data_streams/stream_writer.d.ts +2 -10
  51. package/dist/data_streams/types.cjs.map +1 -1
  52. package/dist/data_streams/types.d.cts +2 -10
  53. package/dist/data_streams/types.d.ts +2 -10
  54. package/dist/data_streams/types.d.ts.map +1 -1
  55. package/dist/e2ee.cjs +21 -21
  56. package/dist/e2ee.cjs.map +1 -1
  57. package/dist/e2ee.d.cts +1 -2
  58. package/dist/e2ee.d.ts +1 -2
  59. package/dist/e2ee.d.ts.map +1 -1
  60. package/dist/e2ee.js +2 -2
  61. package/dist/e2ee.js.map +1 -1
  62. package/dist/ffi_client.cjs +11 -12
  63. package/dist/ffi_client.cjs.map +1 -1
  64. package/dist/ffi_client.d.cts +3 -16
  65. package/dist/ffi_client.d.ts +3 -16
  66. package/dist/ffi_client.d.ts.map +1 -1
  67. package/dist/ffi_client.js +5 -3
  68. package/dist/ffi_client.js.map +1 -1
  69. package/dist/frame_processor.cjs +13 -2
  70. package/dist/frame_processor.cjs.map +1 -1
  71. package/dist/frame_processor.d.cts +5 -8
  72. package/dist/frame_processor.d.ts +5 -8
  73. package/dist/frame_processor.d.ts.map +1 -1
  74. package/dist/frame_processor.js +10 -1
  75. package/dist/frame_processor.js.map +1 -1
  76. package/dist/index.cjs +25 -23
  77. package/dist/index.cjs.map +1 -1
  78. package/dist/index.d.cts +3 -16
  79. package/dist/index.d.ts +3 -16
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +9 -7
  82. package/dist/index.js.map +1 -1
  83. package/dist/log.cjs +1 -10
  84. package/dist/log.cjs.map +1 -1
  85. package/dist/log.d.cts +4 -0
  86. package/dist/log.d.ts +4 -0
  87. package/dist/log.d.ts.map +1 -1
  88. package/dist/log.js +1 -10
  89. package/dist/log.js.map +1 -1
  90. package/dist/participant.cjs +38 -38
  91. package/dist/participant.cjs.map +1 -1
  92. package/dist/participant.d.cts +2 -15
  93. package/dist/participant.d.ts +2 -15
  94. package/dist/participant.d.ts.map +1 -1
  95. package/dist/participant.js +12 -12
  96. package/dist/participant.js.map +1 -1
  97. package/dist/room.cjs +48 -30
  98. package/dist/room.cjs.map +1 -1
  99. package/dist/room.d.cts +11 -16
  100. package/dist/room.d.ts +11 -16
  101. package/dist/room.d.ts.map +1 -1
  102. package/dist/room.js +44 -26
  103. package/dist/room.js.map +1 -1
  104. package/dist/rpc.cjs.map +1 -1
  105. package/dist/rpc.d.cts +1 -2
  106. package/dist/rpc.d.ts +1 -2
  107. package/dist/rpc.d.ts.map +1 -1
  108. package/dist/rpc.js.map +1 -1
  109. package/dist/{stream_reader-Ch2zvjU3.d.cts → stream_reader-CuG4b8Y-.d.cts} +1 -1
  110. package/dist/{stream_reader-DRyR29vo.d.ts → stream_reader-CuG4b8Y-.d.ts} +1 -1
  111. package/dist/track.cjs +3 -3
  112. package/dist/track.cjs.map +1 -1
  113. package/dist/track.d.cts +1 -14
  114. package/dist/track.d.ts +1 -14
  115. package/dist/track.d.ts.map +1 -1
  116. package/dist/track.js +1 -1
  117. package/dist/track.js.map +1 -1
  118. package/dist/track_publication.cjs +4 -4
  119. package/dist/track_publication.cjs.map +1 -1
  120. package/dist/track_publication.d.cts +1 -14
  121. package/dist/track_publication.d.ts +1 -14
  122. package/dist/track_publication.d.ts.map +1 -1
  123. package/dist/track_publication.js +2 -2
  124. package/dist/track_publication.js.map +1 -1
  125. package/dist/version.cjs +1 -1
  126. package/dist/version.cjs.map +1 -1
  127. package/dist/version.d.cts +1 -1
  128. package/dist/version.d.ts +1 -1
  129. package/dist/version.js +1 -1
  130. package/dist/version.js.map +1 -1
  131. package/dist/video_frame.cjs +42 -42
  132. package/dist/video_frame.cjs.map +1 -1
  133. package/dist/video_frame.d.cts +1 -6
  134. package/dist/video_frame.d.ts +1 -6
  135. package/dist/video_frame.d.ts.map +1 -1
  136. package/dist/video_frame.js +2 -2
  137. package/dist/video_frame.js.map +1 -1
  138. package/dist/video_source.cjs +5 -5
  139. package/dist/video_source.cjs.map +1 -1
  140. package/dist/video_source.d.cts +1 -14
  141. package/dist/video_source.d.ts +1 -14
  142. package/dist/video_source.d.ts.map +1 -1
  143. package/dist/video_source.js +2 -2
  144. package/dist/video_source.js.map +1 -1
  145. package/dist/video_stream.cjs +12 -4
  146. package/dist/video_stream.cjs.map +1 -1
  147. package/dist/video_stream.d.cts +1 -14
  148. package/dist/video_stream.d.ts +1 -14
  149. package/dist/video_stream.d.ts.map +1 -1
  150. package/dist/video_stream.js +10 -2
  151. package/dist/video_stream.js.map +1 -1
  152. package/package.json +9 -35
  153. package/src/audio_filter.ts +2 -2
  154. package/src/audio_frame.ts +26 -7
  155. package/src/audio_mixer.ts +15 -4
  156. package/src/audio_resampler.ts +14 -4
  157. package/src/audio_source.ts +13 -5
  158. package/src/audio_stream.ts +21 -5
  159. package/src/data_streams/stream_reader.ts +19 -1
  160. package/src/data_streams/types.ts +1 -1
  161. package/src/e2ee.ts +3 -3
  162. package/src/ffi_client.ts +7 -5
  163. package/src/frame_processor.ts +21 -0
  164. package/src/index.ts +6 -5
  165. package/src/log.ts +14 -10
  166. package/src/participant.ts +17 -17
  167. package/src/room.ts +65 -38
  168. package/src/rpc.ts +1 -1
  169. package/src/tests/e2e.test.ts +517 -0
  170. package/src/track.ts +4 -4
  171. package/src/track_publication.ts +6 -6
  172. package/src/version.ts +1 -1
  173. package/src/video_frame.ts +3 -3
  174. package/src/video_source.ts +3 -3
  175. package/src/video_stream.ts +15 -3
  176. package/Cargo.toml +0 -25
  177. package/build.rs +0 -9
  178. package/dist/napi/native.cjs +0 -301
  179. package/dist/napi/native.d.cjs +0 -17
  180. package/dist/napi/native.d.cjs.map +0 -1
  181. package/dist/napi/native.d.d.cts +0 -21
  182. package/dist/napi/native.d.d.ts +0 -21
  183. package/dist/napi/native.d.js +0 -1
  184. package/dist/napi/native.d.js.map +0 -1
  185. package/dist/napi/native.d.ts +0 -19
  186. package/dist/napi/native.js +0 -15
  187. package/dist/native.cjs +0 -301
  188. package/dist/native.d.ts +0 -19
  189. package/dist/native.js +0 -15
  190. package/dist/proto/audio_frame_pb.cjs +0 -1357
  191. package/dist/proto/audio_frame_pb.cjs.map +0 -1
  192. package/dist/proto/audio_frame_pb.d.cts +0 -1183
  193. package/dist/proto/audio_frame_pb.d.ts +0 -1183
  194. package/dist/proto/audio_frame_pb.d.ts.map +0 -1
  195. package/dist/proto/audio_frame_pb.js +0 -1283
  196. package/dist/proto/audio_frame_pb.js.map +0 -1
  197. package/dist/proto/data_stream_pb.cjs +0 -1638
  198. package/dist/proto/data_stream_pb.cjs.map +0 -1
  199. package/dist/proto/data_stream_pb.d.cts +0 -1449
  200. package/dist/proto/data_stream_pb.d.ts +0 -1449
  201. package/dist/proto/data_stream_pb.d.ts.map +0 -1
  202. package/dist/proto/data_stream_pb.js +0 -1559
  203. package/dist/proto/data_stream_pb.js.map +0 -1
  204. package/dist/proto/e2ee_pb.cjs +0 -746
  205. package/dist/proto/e2ee_pb.cjs.map +0 -1
  206. package/dist/proto/e2ee_pb.d.cts +0 -653
  207. package/dist/proto/e2ee_pb.d.ts +0 -653
  208. package/dist/proto/e2ee_pb.d.ts.map +0 -1
  209. package/dist/proto/e2ee_pb.js +0 -696
  210. package/dist/proto/e2ee_pb.js.map +0 -1
  211. package/dist/proto/ffi_pb.cjs +0 -477
  212. package/dist/proto/ffi_pb.cjs.map +0 -1
  213. package/dist/proto/ffi_pb.d.cts +0 -1321
  214. package/dist/proto/ffi_pb.d.ts +0 -1321
  215. package/dist/proto/ffi_pb.d.ts.map +0 -1
  216. package/dist/proto/ffi_pb.js +0 -444
  217. package/dist/proto/ffi_pb.js.map +0 -1
  218. package/dist/proto/handle_pb.cjs +0 -53
  219. package/dist/proto/handle_pb.cjs.map +0 -1
  220. package/dist/proto/handle_pb.d.cts +0 -31
  221. package/dist/proto/handle_pb.d.ts +0 -31
  222. package/dist/proto/handle_pb.d.ts.map +0 -1
  223. package/dist/proto/handle_pb.js +0 -29
  224. package/dist/proto/handle_pb.js.map +0 -1
  225. package/dist/proto/participant_pb.cjs +0 -173
  226. package/dist/proto/participant_pb.cjs.map +0 -1
  227. package/dist/proto/participant_pb.d.cts +0 -218
  228. package/dist/proto/participant_pb.d.ts +0 -218
  229. package/dist/proto/participant_pb.d.ts.map +0 -1
  230. package/dist/proto/participant_pb.js +0 -145
  231. package/dist/proto/participant_pb.js.map +0 -1
  232. package/dist/proto/room_pb.cjs +0 -3374
  233. package/dist/proto/room_pb.cjs.map +0 -1
  234. package/dist/proto/room_pb.d.cts +0 -3028
  235. package/dist/proto/room_pb.d.ts +0 -3028
  236. package/dist/proto/room_pb.d.ts.map +0 -1
  237. package/dist/proto/room_pb.js +0 -3232
  238. package/dist/proto/room_pb.js.map +0 -1
  239. package/dist/proto/rpc_pb.cjs +0 -328
  240. package/dist/proto/rpc_pb.cjs.map +0 -1
  241. package/dist/proto/rpc_pb.d.cts +0 -267
  242. package/dist/proto/rpc_pb.d.ts +0 -267
  243. package/dist/proto/rpc_pb.d.ts.map +0 -1
  244. package/dist/proto/rpc_pb.js +0 -294
  245. package/dist/proto/rpc_pb.js.map +0 -1
  246. package/dist/proto/stats_pb.cjs +0 -1370
  247. package/dist/proto/stats_pb.cjs.map +0 -1
  248. package/dist/proto/stats_pb.d.cts +0 -1764
  249. package/dist/proto/stats_pb.d.ts +0 -1764
  250. package/dist/proto/stats_pb.d.ts.map +0 -1
  251. package/dist/proto/stats_pb.js +0 -1300
  252. package/dist/proto/stats_pb.js.map +0 -1
  253. package/dist/proto/track_pb.cjs +0 -630
  254. package/dist/proto/track_pb.cjs.map +0 -1
  255. package/dist/proto/track_pb.d.cts +0 -542
  256. package/dist/proto/track_pb.d.ts +0 -542
  257. package/dist/proto/track_pb.d.ts.map +0 -1
  258. package/dist/proto/track_pb.js +0 -584
  259. package/dist/proto/track_pb.js.map +0 -1
  260. package/dist/proto/track_publication_pb.cjs +0 -194
  261. package/dist/proto/track_publication_pb.cjs.map +0 -1
  262. package/dist/proto/track_publication_pb.d.cts +0 -135
  263. package/dist/proto/track_publication_pb.d.ts +0 -135
  264. package/dist/proto/track_publication_pb.d.ts.map +0 -1
  265. package/dist/proto/track_publication_pb.js +0 -164
  266. package/dist/proto/track_publication_pb.js.map +0 -1
  267. package/dist/proto/video_frame_pb.cjs +0 -723
  268. package/dist/proto/video_frame_pb.cjs.map +0 -1
  269. package/dist/proto/video_frame_pb.d.cts +0 -667
  270. package/dist/proto/video_frame_pb.d.ts +0 -667
  271. package/dist/proto/video_frame_pb.d.ts.map +0 -1
  272. package/dist/proto/video_frame_pb.js +0 -673
  273. package/dist/proto/video_frame_pb.js.map +0 -1
  274. package/src/lib.rs +0 -9
  275. package/src/napi/native.cjs +0 -301
  276. package/src/napi/native.d.ts +0 -19
  277. package/src/napi/native.js +0 -15
  278. package/src/nodejs.rs +0 -134
  279. package/src/proto/audio_frame_pb.ts +0 -2270
  280. package/src/proto/data_stream_pb.ts +0 -2674
  281. package/src/proto/e2ee_pb.ts +0 -1231
  282. package/src/proto/ffi_pb.ts +0 -1700
  283. package/src/proto/handle_pb.ts +0 -69
  284. package/src/proto/participant_pb.ts +0 -351
  285. package/src/proto/room_pb.ts +0 -5661
  286. package/src/proto/rpc_pb.ts +0 -539
  287. package/src/proto/stats_pb.ts +0 -3050
  288. package/src/proto/track_pb.ts +0 -1040
  289. package/src/proto/track_publication_pb.ts +0 -284
  290. package/src/proto/video_frame_pb.ts +0 -1236
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/track.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { AudioSource } from './audio_source.js';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type {\n CreateAudioTrackResponse,\n CreateVideoTrackResponse,\n OwnedTrack,\n StreamState,\n TrackInfo,\n TrackKind,\n} from './proto/track_pb.js';\nimport { CreateAudioTrackRequest, CreateVideoTrackRequest } from './proto/track_pb.js';\nimport type { VideoSource } from './video_source.js';\n\nexport abstract class Track {\n /** @internal */\n info?: TrackInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n constructor(owned: OwnedTrack) {\n this.info = owned.info;\n this.ffi_handle = new FfiHandle(owned.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get stream_state(): StreamState | undefined {\n return this.info?.streamState;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n async close() {\n this.ffi_handle.dispose();\n }\n}\n\nexport class LocalAudioTrack extends Track {\n private source?: AudioSource;\n\n constructor(owned: OwnedTrack, source?: AudioSource) {\n super(owned);\n this.source = source;\n }\n\n static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack {\n const req = new CreateAudioTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateAudioTrackResponse>({\n message: { case: 'createAudioTrack', value: req },\n });\n\n return new LocalAudioTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class LocalVideoTrack extends Track {\n private source?: VideoSource;\n\n constructor(owned: OwnedTrack, source?: VideoSource) {\n super(owned);\n this.source = source;\n }\n\n static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack {\n const req = new CreateVideoTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateVideoTrackResponse>({\n message: { case: 'createVideoTrack', value: req },\n });\n\n return new LocalVideoTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class RemoteVideoTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport class RemoteAudioTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport type LocalTrack = LocalVideoTrack | LocalAudioTrack;\nexport type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;\nexport type AudioTrack = LocalAudioTrack | RemoteAudioTrack;\nexport type VideoTrack = LocalVideoTrack | RemoteVideoTrack;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,wBAAqC;AASrC,sBAAiE;AAG1D,MAAe,MAAM;AAAA,EAO1B,YAAY,OAAmB;AAC7B,SAAK,OAAO,MAAM;AAClB,SAAK,aAAa,IAAI,4BAAU,MAAM,OAAQ,EAAG;AAAA,EACnD;AAAA,EAEA,IAAI,MAA0B;AA5BhC;AA6BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAhCjC;AAiCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AApCpC;AAqCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,eAAwC;AAxC9C;AAyCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA5CnC;AA6CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,MAAM,QAAQ;AACZ,SAAK,WAAW,QAAQ;AAAA,EAC1B;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,wCAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AA1ElC;AA2EI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,wCAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AAvGlC;AAwGI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/track.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type {\n CreateAudioTrackResponse,\n CreateVideoTrackResponse,\n OwnedTrack,\n StreamState,\n TrackInfo,\n TrackKind,\n} from '@livekit/rtc-ffi-bindings';\nimport { CreateAudioTrackRequest, CreateVideoTrackRequest } from '@livekit/rtc-ffi-bindings';\nimport type { AudioSource } from './audio_source.js';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type { VideoSource } from './video_source.js';\n\nexport abstract class Track {\n /** @internal */\n info?: TrackInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n constructor(owned: OwnedTrack) {\n this.info = owned.info;\n this.ffi_handle = new FfiHandle(owned.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get stream_state(): StreamState | undefined {\n return this.info?.streamState;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n async close() {\n this.ffi_handle.dispose();\n }\n}\n\nexport class LocalAudioTrack extends Track {\n private source?: AudioSource;\n\n constructor(owned: OwnedTrack, source?: AudioSource) {\n super(owned);\n this.source = source;\n }\n\n static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack {\n const req = new CreateAudioTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateAudioTrackResponse>({\n message: { case: 'createAudioTrack', value: req },\n });\n\n return new LocalAudioTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class LocalVideoTrack extends Track {\n private source?: VideoSource;\n\n constructor(owned: OwnedTrack, source?: VideoSource) {\n super(owned);\n this.source = source;\n }\n\n static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack {\n const req = new CreateVideoTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateVideoTrackResponse>({\n message: { case: 'createVideoTrack', value: req },\n });\n\n return new LocalVideoTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class RemoteVideoTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport class RemoteAudioTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport type LocalTrack = LocalVideoTrack | LocalAudioTrack;\nexport type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;\nexport type AudioTrack = LocalAudioTrack | RemoteAudioTrack;\nexport type VideoTrack = LocalVideoTrack | RemoteVideoTrack;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,8BAAiE;AAEjE,wBAAqC;AAG9B,MAAe,MAAM;AAAA,EAO1B,YAAY,OAAmB;AAC7B,SAAK,OAAO,MAAM;AAClB,SAAK,aAAa,IAAI,4BAAU,MAAM,OAAQ,EAAG;AAAA,EACnD;AAAA,EAEA,IAAI,MAA0B;AA5BhC;AA6BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAhCjC;AAiCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AApCpC;AAqCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,eAAwC;AAxC9C;AAyCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA5CnC;AA6CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,MAAM,QAAQ;AACZ,SAAK,WAAW,QAAQ;AAAA,EAC1B;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,gDAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AA1ElC;AA2EI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,gDAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AAvGlC;AAwGI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;","names":[]}
package/dist/track.d.cts CHANGED
@@ -1,22 +1,9 @@
1
+ import { TrackInfo, FfiHandle, OwnedTrack, TrackKind, StreamState } from '@livekit/rtc-ffi-bindings';
1
2
  import { AudioSource } from './audio_source.cjs';
2
3
  import './ffi_client.cjs';
3
- import { TrackInfo, OwnedTrack, TrackKind, StreamState } from './proto/track_pb.cjs';
4
4
  import { VideoSource } from './video_source.cjs';
5
- import { FfiHandle } from './napi/native.d.cjs';
6
5
  import './audio_frame.cjs';
7
- import './proto/audio_frame_pb.cjs';
8
- import '@bufbuild/protobuf';
9
- import './proto/handle_pb.cjs';
10
6
  import '@livekit/typed-emitter';
11
- import './proto/ffi_pb.cjs';
12
- import './proto/room_pb.cjs';
13
- import './proto/participant_pb.cjs';
14
- import './proto/stats_pb.cjs';
15
- import './proto/video_frame_pb.cjs';
16
- import './proto/e2ee_pb.cjs';
17
- import './proto/data_stream_pb.cjs';
18
- import './proto/rpc_pb.cjs';
19
- import './proto/track_publication_pb.cjs';
20
7
  import './video_frame.cjs';
21
8
 
22
9
  declare abstract class Track {
package/dist/track.d.ts CHANGED
@@ -1,22 +1,9 @@
1
+ import { TrackInfo, FfiHandle, OwnedTrack, TrackKind, StreamState } from '@livekit/rtc-ffi-bindings';
1
2
  import { AudioSource } from './audio_source.js';
2
3
  import './ffi_client.js';
3
- import { TrackInfo, OwnedTrack, TrackKind, StreamState } from './proto/track_pb.js';
4
4
  import { VideoSource } from './video_source.js';
5
- import { FfiHandle } from './napi/native.d.js';
6
5
  import './audio_frame.js';
7
- import './proto/audio_frame_pb.js';
8
- import '@bufbuild/protobuf';
9
- import './proto/handle_pb.js';
10
6
  import '@livekit/typed-emitter';
11
- import './proto/ffi_pb.js';
12
- import './proto/room_pb.js';
13
- import './proto/participant_pb.js';
14
- import './proto/stats_pb.js';
15
- import './proto/video_frame_pb.js';
16
- import './proto/e2ee_pb.js';
17
- import './proto/data_stream_pb.js';
18
- import './proto/rpc_pb.js';
19
- import './proto/track_publication_pb.js';
20
7
  import './video_frame.js';
21
8
 
22
9
  declare abstract class Track {
@@ -1 +1 @@
1
- {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAa,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAGV,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,KAAK;IACzB,gBAAgB;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,gBAAgB;IAChB,UAAU,EAAE,SAAS,CAAC;gBAEV,KAAK,EAAE,UAAU;IAK7B,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,SAAS,CAEhC;IAED,IAAI,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1C;IAED,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAE/B;IAEK,KAAK;CAGZ;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC"}
1
+ {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAa,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,KAAK;IACzB,gBAAgB;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,gBAAgB;IAChB,UAAU,EAAE,SAAS,CAAC;gBAEV,KAAK,EAAE,UAAU;IAK7B,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,SAAS,CAEhC;IAED,IAAI,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1C;IAED,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAE/B;IAEK,KAAK;CAGZ;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC"}
package/dist/track.js CHANGED
@@ -1,5 +1,5 @@
1
+ import { CreateAudioTrackRequest, CreateVideoTrackRequest } from "@livekit/rtc-ffi-bindings";
1
2
  import { FfiClient, FfiHandle } from "./ffi_client.js";
2
- import { CreateAudioTrackRequest, CreateVideoTrackRequest } from "./proto/track_pb.js";
3
3
  class Track {
4
4
  constructor(owned) {
5
5
  this.info = owned.info;
package/dist/track.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/track.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { AudioSource } from './audio_source.js';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type {\n CreateAudioTrackResponse,\n CreateVideoTrackResponse,\n OwnedTrack,\n StreamState,\n TrackInfo,\n TrackKind,\n} from './proto/track_pb.js';\nimport { CreateAudioTrackRequest, CreateVideoTrackRequest } from './proto/track_pb.js';\nimport type { VideoSource } from './video_source.js';\n\nexport abstract class Track {\n /** @internal */\n info?: TrackInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n constructor(owned: OwnedTrack) {\n this.info = owned.info;\n this.ffi_handle = new FfiHandle(owned.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get stream_state(): StreamState | undefined {\n return this.info?.streamState;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n async close() {\n this.ffi_handle.dispose();\n }\n}\n\nexport class LocalAudioTrack extends Track {\n private source?: AudioSource;\n\n constructor(owned: OwnedTrack, source?: AudioSource) {\n super(owned);\n this.source = source;\n }\n\n static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack {\n const req = new CreateAudioTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateAudioTrackResponse>({\n message: { case: 'createAudioTrack', value: req },\n });\n\n return new LocalAudioTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class LocalVideoTrack extends Track {\n private source?: VideoSource;\n\n constructor(owned: OwnedTrack, source?: VideoSource) {\n super(owned);\n this.source = source;\n }\n\n static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack {\n const req = new CreateVideoTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateVideoTrackResponse>({\n message: { case: 'createVideoTrack', value: req },\n });\n\n return new LocalVideoTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class RemoteVideoTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport class RemoteAudioTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport type LocalTrack = LocalVideoTrack | LocalAudioTrack;\nexport type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;\nexport type AudioTrack = LocalAudioTrack | RemoteAudioTrack;\nexport type VideoTrack = LocalVideoTrack | RemoteVideoTrack;\n"],"mappings":"AAIA,SAAS,WAAW,iBAAiB;AASrC,SAAS,yBAAyB,+BAA+B;AAG1D,MAAe,MAAM;AAAA,EAO1B,YAAY,OAAmB;AAC7B,SAAK,OAAO,MAAM;AAClB,SAAK,aAAa,IAAI,UAAU,MAAM,OAAQ,EAAG;AAAA,EACnD;AAAA,EAEA,IAAI,MAA0B;AA5BhC;AA6BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAhCjC;AAiCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AApCpC;AAqCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,eAAwC;AAxC9C;AAyCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA5CnC;AA6CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,MAAM,QAAQ;AACZ,SAAK,WAAW,QAAQ;AAAA,EAC1B;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,wBAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,UAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AA1ElC;AA2EI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,wBAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,UAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AAvGlC;AAwGI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/track.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type {\n CreateAudioTrackResponse,\n CreateVideoTrackResponse,\n OwnedTrack,\n StreamState,\n TrackInfo,\n TrackKind,\n} from '@livekit/rtc-ffi-bindings';\nimport { CreateAudioTrackRequest, CreateVideoTrackRequest } from '@livekit/rtc-ffi-bindings';\nimport type { AudioSource } from './audio_source.js';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type { VideoSource } from './video_source.js';\n\nexport abstract class Track {\n /** @internal */\n info?: TrackInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n constructor(owned: OwnedTrack) {\n this.info = owned.info;\n this.ffi_handle = new FfiHandle(owned.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get stream_state(): StreamState | undefined {\n return this.info?.streamState;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n async close() {\n this.ffi_handle.dispose();\n }\n}\n\nexport class LocalAudioTrack extends Track {\n private source?: AudioSource;\n\n constructor(owned: OwnedTrack, source?: AudioSource) {\n super(owned);\n this.source = source;\n }\n\n static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack {\n const req = new CreateAudioTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateAudioTrackResponse>({\n message: { case: 'createAudioTrack', value: req },\n });\n\n return new LocalAudioTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class LocalVideoTrack extends Track {\n private source?: VideoSource;\n\n constructor(owned: OwnedTrack, source?: VideoSource) {\n super(owned);\n this.source = source;\n }\n\n static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack {\n const req = new CreateVideoTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateVideoTrackResponse>({\n message: { case: 'createVideoTrack', value: req },\n });\n\n return new LocalVideoTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class RemoteVideoTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport class RemoteAudioTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport type LocalTrack = LocalVideoTrack | LocalAudioTrack;\nexport type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;\nexport type AudioTrack = LocalAudioTrack | RemoteAudioTrack;\nexport type VideoTrack = LocalVideoTrack | RemoteVideoTrack;\n"],"mappings":"AAWA,SAAS,yBAAyB,+BAA+B;AAEjE,SAAS,WAAW,iBAAiB;AAG9B,MAAe,MAAM;AAAA,EAO1B,YAAY,OAAmB;AAC7B,SAAK,OAAO,MAAM;AAClB,SAAK,aAAa,IAAI,UAAU,MAAM,OAAQ,EAAG;AAAA,EACnD;AAAA,EAEA,IAAI,MAA0B;AA5BhC;AA6BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAhCjC;AAiCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AApCpC;AAqCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,eAAwC;AAxC9C;AAyCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA5CnC;AA6CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,MAAM,QAAQ;AACZ,SAAK,WAAW,QAAQ;AAAA,EAC1B;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,wBAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,UAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AA1ElC;AA2EI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,wBAAwB,MAAM;AAAA,EAGzC,YAAY,OAAmB,QAAsB;AACnD,UAAM,KAAK;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,iBAAiB,MAAc,QAAsC;AAC1E,UAAM,MAAM,IAAI,wBAAwB;AAAA,MACtC;AAAA,MACA,cAAc,OAAO,UAAU;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,UAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,WAAO,IAAI,gBAAgB,IAAI,OAAQ,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,cAAc,MAAM;AAvGlC;AAwGI,UAAM,MAAM,MAAM;AAClB,QAAI,aAAa;AACf,cAAM,UAAK,WAAL,mBAAa;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;AAEO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YAAY,OAAmB;AAC7B,UAAM,KAAK;AAAA,EACb;AACF;","names":[]}
@@ -23,13 +23,13 @@ __export(track_publication_exports, {
23
23
  TrackPublication: () => TrackPublication
24
24
  });
25
25
  module.exports = __toCommonJS(track_publication_exports);
26
+ var import_rtc_ffi_bindings = require("@livekit/rtc-ffi-bindings");
27
+ var import_rtc_ffi_bindings2 = require("@livekit/rtc-ffi-bindings");
26
28
  var import_ffi_client = require("./ffi_client.cjs");
27
- var import_native = require("./napi/native.cjs");
28
- var import_room_pb = require("./proto/room_pb.cjs");
29
29
  class TrackPublication {
30
30
  constructor(ownedInfo) {
31
31
  this.info = ownedInfo.info;
32
- this.ffiHandle = new import_native.FfiHandle(ownedInfo.handle.id);
32
+ this.ffiHandle = new import_rtc_ffi_bindings2.FfiHandle(ownedInfo.handle.id);
33
33
  }
34
34
  get sid() {
35
35
  var _a;
@@ -97,7 +97,7 @@ class RemoteTrackPublication extends TrackPublication {
97
97
  this.subscribed = false;
98
98
  }
99
99
  setSubscribed(subscribed) {
100
- const req = new import_room_pb.SetSubscribedRequest({
100
+ const req = new import_rtc_ffi_bindings.SetSubscribedRequest({
101
101
  subscribe: subscribed,
102
102
  publicationHandle: this.ffiHandle.handle
103
103
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/track_publication.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { FfiClient } from './ffi_client.js';\nimport { FfiHandle } from './napi/native.js';\nimport type { EncryptionType } from './proto/e2ee_pb.js';\nimport type { SetSubscribedResponse } from './proto/room_pb.js';\nimport { SetSubscribedRequest } from './proto/room_pb.js';\nimport type {\n OwnedTrackPublication,\n TrackKind,\n TrackPublicationInfo,\n TrackSource,\n} from './proto/track_pb.js';\nimport type { Track } from './track.js';\n\nexport abstract class TrackPublication {\n /** @internal */\n ffiHandle: FfiHandle;\n\n /** @internal */\n info?: TrackPublicationInfo;\n track?: Track;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n this.info = ownedInfo.info;\n this.ffiHandle = new FfiHandle(ownedInfo.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get source(): TrackSource | undefined {\n return this.info?.source;\n }\n\n get simulcasted(): boolean | undefined {\n return this.info?.simulcasted;\n }\n\n get width(): number | undefined {\n return this.info?.width;\n }\n\n get height(): number | undefined {\n return this.info?.height;\n }\n\n get mimeType(): string | undefined {\n return this.info?.mimeType;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n get encryptionType(): EncryptionType | undefined {\n return this.info?.encryptionType;\n }\n}\n\nexport class LocalTrackPublication extends TrackPublication {\n private firstSubscription: Promise<void>;\n private firstSubscriptionResolver: (() => void) | null = null;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n this.firstSubscription = new Promise<void>((resolve) => {\n this.firstSubscriptionResolver = resolve;\n });\n }\n\n async waitForSubscription(): Promise<void> {\n await this.firstSubscription;\n }\n\n /** @internal */\n resolveFirstSubscription(): void {\n if (this.firstSubscriptionResolver) {\n this.firstSubscriptionResolver();\n this.firstSubscriptionResolver = null;\n }\n }\n}\n\nexport class RemoteTrackPublication extends TrackPublication {\n subscribed: boolean = false;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n }\n\n setSubscribed(subscribed: boolean) {\n const req = new SetSubscribedRequest({\n subscribe: subscribed,\n publicationHandle: this.ffiHandle.handle,\n });\n\n FfiClient.instance.request<SetSubscribedResponse>({\n message: { case: 'setSubscribed', value: req },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA0B;AAC1B,oBAA0B;AAG1B,qBAAqC;AAS9B,MAAe,iBAAiB;AAAA,EAQrC,YAAY,WAAkC;AAC5C,SAAK,OAAO,UAAU;AACtB,SAAK,YAAY,IAAI,wBAAU,UAAU,OAAQ,EAAG;AAAA,EACtD;AAAA,EAEA,IAAI,MAA0B;AA7BhC;AA8BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAjCjC;AAkCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AArCpC;AAsCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAAkC;AAzCxC;AA0CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,cAAmC;AA7CzC;AA8CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA4B;AAjDlC;AAkDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAA6B;AArDnC;AAsDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,WAA+B;AAzDrC;AA0DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA7DnC;AA8DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,iBAA6C;AAjEnD;AAkEI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AACF;AAEO,MAAM,8BAA8B,iBAAiB;AAAA,EAI1D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,SAAQ,4BAAiD;AAIvD,SAAK,oBAAoB,IAAI,QAAc,CAAC,YAAY;AACtD,WAAK,4BAA4B;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,2BAAiC;AAC/B,QAAI,KAAK,2BAA2B;AAClC,WAAK,0BAA0B;AAC/B,WAAK,4BAA4B;AAAA,IACnC;AAAA,EACF;AACF;AAEO,MAAM,+BAA+B,iBAAiB;AAAA,EAG3D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,sBAAsB;AAAA,EAItB;AAAA,EAEA,cAAc,YAAqB;AACjC,UAAM,MAAM,IAAI,oCAAqB;AAAA,MACnC,WAAW;AAAA,MACX,mBAAmB,KAAK,UAAU;AAAA,IACpC,CAAC;AAED,gCAAU,SAAS,QAA+B;AAAA,MAChD,SAAS,EAAE,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/track_publication.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { EncryptionType } from '@livekit/rtc-ffi-bindings';\nimport type { SetSubscribedResponse } from '@livekit/rtc-ffi-bindings';\nimport { SetSubscribedRequest } from '@livekit/rtc-ffi-bindings';\nimport type {\n OwnedTrackPublication,\n TrackKind,\n TrackPublicationInfo,\n TrackSource,\n} from '@livekit/rtc-ffi-bindings';\nimport { FfiHandle } from '@livekit/rtc-ffi-bindings';\nimport { FfiClient } from './ffi_client.js';\nimport type { Track } from './track.js';\n\nexport abstract class TrackPublication {\n /** @internal */\n ffiHandle: FfiHandle;\n\n /** @internal */\n info?: TrackPublicationInfo;\n track?: Track;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n this.info = ownedInfo.info;\n this.ffiHandle = new FfiHandle(ownedInfo.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get source(): TrackSource | undefined {\n return this.info?.source;\n }\n\n get simulcasted(): boolean | undefined {\n return this.info?.simulcasted;\n }\n\n get width(): number | undefined {\n return this.info?.width;\n }\n\n get height(): number | undefined {\n return this.info?.height;\n }\n\n get mimeType(): string | undefined {\n return this.info?.mimeType;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n get encryptionType(): EncryptionType | undefined {\n return this.info?.encryptionType;\n }\n}\n\nexport class LocalTrackPublication extends TrackPublication {\n private firstSubscription: Promise<void>;\n private firstSubscriptionResolver: (() => void) | null = null;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n this.firstSubscription = new Promise<void>((resolve) => {\n this.firstSubscriptionResolver = resolve;\n });\n }\n\n async waitForSubscription(): Promise<void> {\n await this.firstSubscription;\n }\n\n /** @internal */\n resolveFirstSubscription(): void {\n if (this.firstSubscriptionResolver) {\n this.firstSubscriptionResolver();\n this.firstSubscriptionResolver = null;\n }\n }\n}\n\nexport class RemoteTrackPublication extends TrackPublication {\n subscribed: boolean = false;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n }\n\n setSubscribed(subscribed: boolean) {\n const req = new SetSubscribedRequest({\n subscribe: subscribed,\n publicationHandle: this.ffiHandle.handle,\n });\n\n FfiClient.instance.request<SetSubscribedResponse>({\n message: { case: 'setSubscribed', value: req },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,8BAAqC;AAOrC,IAAAA,2BAA0B;AAC1B,wBAA0B;AAGnB,MAAe,iBAAiB;AAAA,EAQrC,YAAY,WAAkC;AAC5C,SAAK,OAAO,UAAU;AACtB,SAAK,YAAY,IAAI,mCAAU,UAAU,OAAQ,EAAG;AAAA,EACtD;AAAA,EAEA,IAAI,MAA0B;AA7BhC;AA8BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAjCjC;AAkCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AArCpC;AAsCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAAkC;AAzCxC;AA0CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,cAAmC;AA7CzC;AA8CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA4B;AAjDlC;AAkDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAA6B;AArDnC;AAsDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,WAA+B;AAzDrC;AA0DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA7DnC;AA8DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,iBAA6C;AAjEnD;AAkEI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AACF;AAEO,MAAM,8BAA8B,iBAAiB;AAAA,EAI1D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,SAAQ,4BAAiD;AAIvD,SAAK,oBAAoB,IAAI,QAAc,CAAC,YAAY;AACtD,WAAK,4BAA4B;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,2BAAiC;AAC/B,QAAI,KAAK,2BAA2B;AAClC,WAAK,0BAA0B;AAC/B,WAAK,4BAA4B;AAAA,IACnC;AAAA,EACF;AACF;AAEO,MAAM,+BAA+B,iBAAiB;AAAA,EAG3D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,sBAAsB;AAAA,EAItB;AAAA,EAEA,cAAc,YAAqB;AACjC,UAAM,MAAM,IAAI,6CAAqB;AAAA,MACnC,WAAW;AAAA,MACX,mBAAmB,KAAK,UAAU;AAAA,IACpC,CAAC;AAED,gCAAU,SAAS,QAA+B;AAAA,MAChD,SAAS,EAAE,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;","names":["import_rtc_ffi_bindings"]}
@@ -1,22 +1,9 @@
1
- import { FfiHandle } from './napi/native.d.cjs';
2
- import { EncryptionType } from './proto/e2ee_pb.cjs';
3
- import { TrackPublicationInfo, OwnedTrackPublication, TrackKind, TrackSource } from './proto/track_pb.cjs';
1
+ import { FfiHandle, TrackPublicationInfo, OwnedTrackPublication, TrackKind, TrackSource, EncryptionType } from '@livekit/rtc-ffi-bindings';
4
2
  import { Track } from './track.cjs';
5
- import '@bufbuild/protobuf';
6
- import './proto/stats_pb.cjs';
7
- import './proto/handle_pb.cjs';
8
3
  import './audio_source.cjs';
9
4
  import './audio_frame.cjs';
10
- import './proto/audio_frame_pb.cjs';
11
5
  import './ffi_client.cjs';
12
6
  import '@livekit/typed-emitter';
13
- import './proto/ffi_pb.cjs';
14
- import './proto/room_pb.cjs';
15
- import './proto/participant_pb.cjs';
16
- import './proto/video_frame_pb.cjs';
17
- import './proto/data_stream_pb.cjs';
18
- import './proto/rpc_pb.cjs';
19
- import './proto/track_publication_pb.cjs';
20
7
  import './video_source.cjs';
21
8
  import './video_frame.cjs';
22
9
 
@@ -1,22 +1,9 @@
1
- import { FfiHandle } from './napi/native.d.js';
2
- import { EncryptionType } from './proto/e2ee_pb.js';
3
- import { TrackPublicationInfo, OwnedTrackPublication, TrackKind, TrackSource } from './proto/track_pb.js';
1
+ import { FfiHandle, TrackPublicationInfo, OwnedTrackPublication, TrackKind, TrackSource, EncryptionType } from '@livekit/rtc-ffi-bindings';
4
2
  import { Track } from './track.js';
5
- import '@bufbuild/protobuf';
6
- import './proto/stats_pb.js';
7
- import './proto/handle_pb.js';
8
3
  import './audio_source.js';
9
4
  import './audio_frame.js';
10
- import './proto/audio_frame_pb.js';
11
5
  import './ffi_client.js';
12
6
  import '@livekit/typed-emitter';
13
- import './proto/ffi_pb.js';
14
- import './proto/room_pb.js';
15
- import './proto/participant_pb.js';
16
- import './proto/video_frame_pb.js';
17
- import './proto/data_stream_pb.js';
18
- import './proto/rpc_pb.js';
19
- import './proto/track_publication_pb.js';
20
7
  import './video_source.js';
21
8
  import './video_frame.js';
22
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"track_publication.d.ts","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,8BAAsB,gBAAgB;IACpC,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,gBAAgB;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEF,SAAS,EAAE,qBAAqB;IAK5C,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,SAAS,CAEhC;IAED,IAAI,MAAM,IAAI,WAAW,GAAG,SAAS,CAEpC;IAED,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAErC;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAE/B;IAED,IAAI,cAAc,IAAI,cAAc,GAAG,SAAS,CAE/C;CACF;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,yBAAyB,CAA6B;gBAElD,SAAS,EAAE,qBAAqB;IAOtC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,gBAAgB;IAChB,wBAAwB,IAAI,IAAI;CAMjC;AAED,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,UAAU,EAAE,OAAO,CAAS;gBAEhB,SAAS,EAAE,qBAAqB;IAI5C,aAAa,CAAC,UAAU,EAAE,OAAO;CAUlC"}
1
+ {"version":3,"file":"track_publication.d.ts","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,8BAAsB,gBAAgB;IACpC,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,gBAAgB;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEF,SAAS,EAAE,qBAAqB;IAK5C,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,SAAS,CAEhC;IAED,IAAI,MAAM,IAAI,WAAW,GAAG,SAAS,CAEpC;IAED,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAErC;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAE/B;IAED,IAAI,cAAc,IAAI,cAAc,GAAG,SAAS,CAE/C;CACF;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,yBAAyB,CAA6B;gBAElD,SAAS,EAAE,qBAAqB;IAOtC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,gBAAgB;IAChB,wBAAwB,IAAI,IAAI;CAMjC;AAED,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,UAAU,EAAE,OAAO,CAAS;gBAEhB,SAAS,EAAE,qBAAqB;IAI5C,aAAa,CAAC,UAAU,EAAE,OAAO;CAUlC"}
@@ -1,6 +1,6 @@
1
+ import { SetSubscribedRequest } from "@livekit/rtc-ffi-bindings";
2
+ import { FfiHandle } from "@livekit/rtc-ffi-bindings";
1
3
  import { FfiClient } from "./ffi_client.js";
2
- import { FfiHandle } from "./napi/native.js";
3
- import { SetSubscribedRequest } from "./proto/room_pb.js";
4
4
  class TrackPublication {
5
5
  constructor(ownedInfo) {
6
6
  this.info = ownedInfo.info;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/track_publication.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { FfiClient } from './ffi_client.js';\nimport { FfiHandle } from './napi/native.js';\nimport type { EncryptionType } from './proto/e2ee_pb.js';\nimport type { SetSubscribedResponse } from './proto/room_pb.js';\nimport { SetSubscribedRequest } from './proto/room_pb.js';\nimport type {\n OwnedTrackPublication,\n TrackKind,\n TrackPublicationInfo,\n TrackSource,\n} from './proto/track_pb.js';\nimport type { Track } from './track.js';\n\nexport abstract class TrackPublication {\n /** @internal */\n ffiHandle: FfiHandle;\n\n /** @internal */\n info?: TrackPublicationInfo;\n track?: Track;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n this.info = ownedInfo.info;\n this.ffiHandle = new FfiHandle(ownedInfo.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get source(): TrackSource | undefined {\n return this.info?.source;\n }\n\n get simulcasted(): boolean | undefined {\n return this.info?.simulcasted;\n }\n\n get width(): number | undefined {\n return this.info?.width;\n }\n\n get height(): number | undefined {\n return this.info?.height;\n }\n\n get mimeType(): string | undefined {\n return this.info?.mimeType;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n get encryptionType(): EncryptionType | undefined {\n return this.info?.encryptionType;\n }\n}\n\nexport class LocalTrackPublication extends TrackPublication {\n private firstSubscription: Promise<void>;\n private firstSubscriptionResolver: (() => void) | null = null;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n this.firstSubscription = new Promise<void>((resolve) => {\n this.firstSubscriptionResolver = resolve;\n });\n }\n\n async waitForSubscription(): Promise<void> {\n await this.firstSubscription;\n }\n\n /** @internal */\n resolveFirstSubscription(): void {\n if (this.firstSubscriptionResolver) {\n this.firstSubscriptionResolver();\n this.firstSubscriptionResolver = null;\n }\n }\n}\n\nexport class RemoteTrackPublication extends TrackPublication {\n subscribed: boolean = false;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n }\n\n setSubscribed(subscribed: boolean) {\n const req = new SetSubscribedRequest({\n subscribe: subscribed,\n publicationHandle: this.ffiHandle.handle,\n });\n\n FfiClient.instance.request<SetSubscribedResponse>({\n message: { case: 'setSubscribed', value: req },\n });\n }\n}\n"],"mappings":"AAGA,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAG1B,SAAS,4BAA4B;AAS9B,MAAe,iBAAiB;AAAA,EAQrC,YAAY,WAAkC;AAC5C,SAAK,OAAO,UAAU;AACtB,SAAK,YAAY,IAAI,UAAU,UAAU,OAAQ,EAAG;AAAA,EACtD;AAAA,EAEA,IAAI,MAA0B;AA7BhC;AA8BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAjCjC;AAkCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AArCpC;AAsCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAAkC;AAzCxC;AA0CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,cAAmC;AA7CzC;AA8CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA4B;AAjDlC;AAkDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAA6B;AArDnC;AAsDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,WAA+B;AAzDrC;AA0DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA7DnC;AA8DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,iBAA6C;AAjEnD;AAkEI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AACF;AAEO,MAAM,8BAA8B,iBAAiB;AAAA,EAI1D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,SAAQ,4BAAiD;AAIvD,SAAK,oBAAoB,IAAI,QAAc,CAAC,YAAY;AACtD,WAAK,4BAA4B;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,2BAAiC;AAC/B,QAAI,KAAK,2BAA2B;AAClC,WAAK,0BAA0B;AAC/B,WAAK,4BAA4B;AAAA,IACnC;AAAA,EACF;AACF;AAEO,MAAM,+BAA+B,iBAAiB;AAAA,EAG3D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,sBAAsB;AAAA,EAItB;AAAA,EAEA,cAAc,YAAqB;AACjC,UAAM,MAAM,IAAI,qBAAqB;AAAA,MACnC,WAAW;AAAA,MACX,mBAAmB,KAAK,UAAU;AAAA,IACpC,CAAC;AAED,cAAU,SAAS,QAA+B;AAAA,MAChD,SAAS,EAAE,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/track_publication.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { EncryptionType } from '@livekit/rtc-ffi-bindings';\nimport type { SetSubscribedResponse } from '@livekit/rtc-ffi-bindings';\nimport { SetSubscribedRequest } from '@livekit/rtc-ffi-bindings';\nimport type {\n OwnedTrackPublication,\n TrackKind,\n TrackPublicationInfo,\n TrackSource,\n} from '@livekit/rtc-ffi-bindings';\nimport { FfiHandle } from '@livekit/rtc-ffi-bindings';\nimport { FfiClient } from './ffi_client.js';\nimport type { Track } from './track.js';\n\nexport abstract class TrackPublication {\n /** @internal */\n ffiHandle: FfiHandle;\n\n /** @internal */\n info?: TrackPublicationInfo;\n track?: Track;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n this.info = ownedInfo.info;\n this.ffiHandle = new FfiHandle(ownedInfo.handle!.id!);\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get source(): TrackSource | undefined {\n return this.info?.source;\n }\n\n get simulcasted(): boolean | undefined {\n return this.info?.simulcasted;\n }\n\n get width(): number | undefined {\n return this.info?.width;\n }\n\n get height(): number | undefined {\n return this.info?.height;\n }\n\n get mimeType(): string | undefined {\n return this.info?.mimeType;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n get encryptionType(): EncryptionType | undefined {\n return this.info?.encryptionType;\n }\n}\n\nexport class LocalTrackPublication extends TrackPublication {\n private firstSubscription: Promise<void>;\n private firstSubscriptionResolver: (() => void) | null = null;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n this.firstSubscription = new Promise<void>((resolve) => {\n this.firstSubscriptionResolver = resolve;\n });\n }\n\n async waitForSubscription(): Promise<void> {\n await this.firstSubscription;\n }\n\n /** @internal */\n resolveFirstSubscription(): void {\n if (this.firstSubscriptionResolver) {\n this.firstSubscriptionResolver();\n this.firstSubscriptionResolver = null;\n }\n }\n}\n\nexport class RemoteTrackPublication extends TrackPublication {\n subscribed: boolean = false;\n\n constructor(ownedInfo: OwnedTrackPublication) {\n super(ownedInfo);\n }\n\n setSubscribed(subscribed: boolean) {\n const req = new SetSubscribedRequest({\n subscribe: subscribed,\n publicationHandle: this.ffiHandle.handle,\n });\n\n FfiClient.instance.request<SetSubscribedResponse>({\n message: { case: 'setSubscribed', value: req },\n });\n }\n}\n"],"mappings":"AAKA,SAAS,4BAA4B;AAOrC,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAGnB,MAAe,iBAAiB;AAAA,EAQrC,YAAY,WAAkC;AAC5C,SAAK,OAAO,UAAU;AACtB,SAAK,YAAY,IAAI,UAAU,UAAU,OAAQ,EAAG;AAAA,EACtD;AAAA,EAEA,IAAI,MAA0B;AA7BhC;AA8BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAjCjC;AAkCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AArCpC;AAsCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAAkC;AAzCxC;AA0CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,cAAmC;AA7CzC;AA8CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA4B;AAjDlC;AAkDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAA6B;AArDnC;AAsDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,WAA+B;AAzDrC;AA0DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA7DnC;AA8DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,iBAA6C;AAjEnD;AAkEI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AACF;AAEO,MAAM,8BAA8B,iBAAiB;AAAA,EAI1D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,SAAQ,4BAAiD;AAIvD,SAAK,oBAAoB,IAAI,QAAc,CAAC,YAAY;AACtD,WAAK,4BAA4B;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,2BAAiC;AAC/B,QAAI,KAAK,2BAA2B;AAClC,WAAK,0BAA0B;AAC/B,WAAK,4BAA4B;AAAA,IACnC;AAAA,EACF;AACF;AAEO,MAAM,+BAA+B,iBAAiB;AAAA,EAG3D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,sBAAsB;AAAA,EAItB;AAAA,EAEA,cAAc,YAAqB;AACjC,UAAM,MAAM,IAAI,qBAAqB;AAAA,MACnC,WAAW;AAAA,MACX,mBAAmB,KAAK,UAAU;AAAA,IACpC,CAAC;AAED,cAAU,SAAS,QAA+B;AAAA,MAChD,SAAS,EAAE,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;","names":[]}
package/dist/version.cjs CHANGED
@@ -21,7 +21,7 @@ __export(version_exports, {
21
21
  SDK_VERSION: () => SDK_VERSION
22
22
  });
23
23
  module.exports = __toCommonJS(version_exports);
24
- const SDK_VERSION = "0.13.23";
24
+ const SDK_VERSION = "0.13.25";
25
25
  // Annotate the CommonJS export names for ESM import in node:
26
26
  0 && (module.exports = {
27
27
  SDK_VERSION
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const SDK_VERSION = \"0.13.23\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const SDK_VERSION = \"0.13.25\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;","names":[]}
@@ -1,3 +1,3 @@
1
- declare const SDK_VERSION = "0.13.23";
1
+ declare const SDK_VERSION = "0.13.25";
2
2
 
3
3
  export { SDK_VERSION };
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- declare const SDK_VERSION = "0.13.23";
1
+ declare const SDK_VERSION = "0.13.25";
2
2
 
3
3
  export { SDK_VERSION };
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const SDK_VERSION = "0.13.23";
1
+ const SDK_VERSION = "0.13.25";
2
2
  export {
3
3
  SDK_VERSION
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const SDK_VERSION = \"0.13.23\";\n"],"mappings":"AAAO,MAAM,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const SDK_VERSION = \"0.13.25\";\n"],"mappings":"AAAO,MAAM,cAAc;","names":[]}
@@ -21,8 +21,8 @@ __export(video_frame_exports, {
21
21
  VideoFrame: () => VideoFrame
22
22
  });
23
23
  module.exports = __toCommonJS(video_frame_exports);
24
+ var import_rtc_ffi_bindings = require("@livekit/rtc-ffi-bindings");
24
25
  var import_ffi_client = require("./ffi_client.cjs");
25
- var import_video_frame_pb = require("./proto/video_frame_pb.cjs");
26
26
  class VideoFrame {
27
27
  constructor(data, width, height, type) {
28
28
  this.data = data;
@@ -36,20 +36,20 @@ class VideoFrame {
36
36
  }
37
37
  /** @internal */
38
38
  protoInfo() {
39
- const info = new import_video_frame_pb.VideoBufferInfo({
39
+ const info = new import_rtc_ffi_bindings.VideoBufferInfo({
40
40
  width: this.width,
41
41
  height: this.height,
42
42
  type: this.type,
43
43
  dataPtr: this.dataPtr
44
44
  });
45
45
  switch (this.type) {
46
- case import_video_frame_pb.VideoBufferType.ARGB:
47
- case import_video_frame_pb.VideoBufferType.RGBA:
48
- case import_video_frame_pb.VideoBufferType.ABGR:
49
- case import_video_frame_pb.VideoBufferType.BGRA:
46
+ case import_rtc_ffi_bindings.VideoBufferType.ARGB:
47
+ case import_rtc_ffi_bindings.VideoBufferType.RGBA:
48
+ case import_rtc_ffi_bindings.VideoBufferType.ABGR:
49
+ case import_rtc_ffi_bindings.VideoBufferType.BGRA:
50
50
  info.stride = this.width * 4;
51
51
  break;
52
- case import_video_frame_pb.VideoBufferType.RGB24:
52
+ case import_rtc_ffi_bindings.VideoBufferType.RGB24:
53
53
  info.stride = this.width * 3;
54
54
  break;
55
55
  default:
@@ -104,23 +104,23 @@ const getPlaneLength = (type, width, height) => {
104
104
  const chromaWidth = Math.trunc((width + 1) / 2);
105
105
  const chromaHeight = Math.trunc((height + 1) / 2);
106
106
  switch (type) {
107
- case import_video_frame_pb.VideoBufferType.ARGB:
108
- case import_video_frame_pb.VideoBufferType.RGBA:
109
- case import_video_frame_pb.VideoBufferType.ABGR:
110
- case import_video_frame_pb.VideoBufferType.BGRA:
107
+ case import_rtc_ffi_bindings.VideoBufferType.ARGB:
108
+ case import_rtc_ffi_bindings.VideoBufferType.RGBA:
109
+ case import_rtc_ffi_bindings.VideoBufferType.ABGR:
110
+ case import_rtc_ffi_bindings.VideoBufferType.BGRA:
111
111
  return width * height * 4;
112
- case import_video_frame_pb.VideoBufferType.RGB24:
113
- case import_video_frame_pb.VideoBufferType.I444:
112
+ case import_rtc_ffi_bindings.VideoBufferType.RGB24:
113
+ case import_rtc_ffi_bindings.VideoBufferType.I444:
114
114
  return width * height * 3;
115
- case import_video_frame_pb.VideoBufferType.I420:
115
+ case import_rtc_ffi_bindings.VideoBufferType.I420:
116
116
  return width * height + chromaWidth * chromaHeight * 2;
117
- case import_video_frame_pb.VideoBufferType.I420A:
117
+ case import_rtc_ffi_bindings.VideoBufferType.I420A:
118
118
  return width * height * 2 + chromaWidth * chromaWidth * 2;
119
- case import_video_frame_pb.VideoBufferType.I422:
119
+ case import_rtc_ffi_bindings.VideoBufferType.I422:
120
120
  return width * height + chromaWidth * height * 2;
121
- case import_video_frame_pb.VideoBufferType.I010:
121
+ case import_rtc_ffi_bindings.VideoBufferType.I010:
122
122
  return width * height * 2 + chromaWidth * chromaHeight * 4;
123
- case import_video_frame_pb.VideoBufferType.NV12:
123
+ case import_rtc_ffi_bindings.VideoBufferType.NV12:
124
124
  return width * height + chromaWidth * chromaWidth * 2;
125
125
  }
126
126
  };
@@ -128,88 +128,88 @@ const getPlaneInfos = (dataPtr, type, width, height) => {
128
128
  const chromaWidth = Math.trunc((width + 1) / 2);
129
129
  const chromaHeight = Math.trunc((height + 1) / 2);
130
130
  switch (type) {
131
- case import_video_frame_pb.VideoBufferType.I420: {
132
- const y = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
133
- const u = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
131
+ case import_rtc_ffi_bindings.VideoBufferType.I420: {
132
+ const y = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
133
+ const u = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
134
134
  dataPtr: y.dataPtr + BigInt(y.size),
135
135
  stride: chromaWidth,
136
136
  size: chromaWidth * chromaHeight
137
137
  });
138
- const v = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
138
+ const v = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
139
139
  dataPtr: u.dataPtr + BigInt(u.size),
140
140
  stride: chromaWidth,
141
141
  size: chromaWidth * chromaHeight
142
142
  });
143
143
  return [y, u, v];
144
144
  }
145
- case import_video_frame_pb.VideoBufferType.I420A: {
146
- const y = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
147
- const u = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
145
+ case import_rtc_ffi_bindings.VideoBufferType.I420A: {
146
+ const y = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
147
+ const u = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
148
148
  dataPtr: y.dataPtr + BigInt(y.size),
149
149
  stride: chromaWidth,
150
150
  size: chromaWidth * chromaHeight
151
151
  });
152
- const v = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
152
+ const v = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
153
153
  dataPtr: u.dataPtr + BigInt(u.size),
154
154
  stride: chromaWidth,
155
155
  size: chromaWidth * chromaHeight
156
156
  });
157
- const a = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
157
+ const a = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
158
158
  dataPtr: v.dataPtr + BigInt(v.size),
159
159
  stride: width,
160
160
  size: width * height
161
161
  });
162
162
  return [y, u, v, a];
163
163
  }
164
- case import_video_frame_pb.VideoBufferType.I422: {
165
- const y = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
166
- const u = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
164
+ case import_rtc_ffi_bindings.VideoBufferType.I422: {
165
+ const y = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
166
+ const u = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
167
167
  dataPtr: y.dataPtr + BigInt(y.size),
168
168
  stride: chromaWidth,
169
169
  size: chromaWidth * height
170
170
  });
171
- const v = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
171
+ const v = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
172
172
  dataPtr: u.dataPtr + BigInt(u.size),
173
173
  stride: chromaWidth,
174
174
  size: chromaWidth * height
175
175
  });
176
176
  return [y, u, v];
177
177
  }
178
- case import_video_frame_pb.VideoBufferType.I444: {
179
- const y = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
180
- const u = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
178
+ case import_rtc_ffi_bindings.VideoBufferType.I444: {
179
+ const y = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
180
+ const u = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
181
181
  dataPtr: y.dataPtr + BigInt(y.size),
182
182
  stride: width,
183
183
  size: width * height
184
184
  });
185
- const v = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
185
+ const v = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
186
186
  dataPtr: u.dataPtr + BigInt(u.size),
187
187
  stride: width,
188
188
  size: width * height
189
189
  });
190
190
  return [y, u, v];
191
191
  }
192
- case import_video_frame_pb.VideoBufferType.I010: {
193
- const y = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
192
+ case import_rtc_ffi_bindings.VideoBufferType.I010: {
193
+ const y = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
194
194
  dataPtr,
195
195
  stride: width * 2,
196
196
  size: width * height * 2
197
197
  });
198
- const u = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
198
+ const u = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
199
199
  dataPtr: y.dataPtr + BigInt(y.size),
200
200
  stride: chromaWidth * 2,
201
201
  size: chromaWidth * chromaHeight * 2
202
202
  });
203
- const v = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
203
+ const v = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
204
204
  dataPtr: u.dataPtr + BigInt(u.size),
205
205
  stride: chromaWidth * 2,
206
206
  size: chromaWidth * chromaHeight * 2
207
207
  });
208
208
  return [y, u, v];
209
209
  }
210
- case import_video_frame_pb.VideoBufferType.NV12: {
211
- const y = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
212
- const uv = new import_video_frame_pb.VideoBufferInfo_ComponentInfo({
210
+ case import_rtc_ffi_bindings.VideoBufferType.NV12: {
211
+ const y = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });
212
+ const uv = new import_rtc_ffi_bindings.VideoBufferInfo_ComponentInfo({
213
213
  dataPtr: y.dataPtr + BigInt(y.size),
214
214
  stride: chromaWidth * 2,
215
215
  size: chromaWidth * chromaHeight * 2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/video_frame.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { FfiClient, FfiHandle, FfiRequest } from './ffi_client.js';\nimport type { OwnedVideoBuffer, VideoConvertResponse } from './proto/video_frame_pb.js';\nimport {\n VideoBufferInfo,\n VideoBufferInfo_ComponentInfo,\n VideoBufferType,\n} from './proto/video_frame_pb.js';\n\nexport class VideoFrame {\n data: Uint8Array;\n width: number;\n height: number;\n type: VideoBufferType;\n\n constructor(data: Uint8Array, width: number, height: number, type: VideoBufferType) {\n this.data = data;\n this.width = width;\n this.height = height;\n this.type = type;\n }\n\n /** @internal */\n get dataPtr(): bigint {\n return FfiClient.instance.retrievePtr(new Uint8Array(this.data.buffer));\n }\n\n /** @internal */\n protoInfo(): VideoBufferInfo {\n const info = new VideoBufferInfo({\n width: this.width,\n height: this.height,\n type: this.type,\n dataPtr: this.dataPtr,\n });\n\n switch (this.type) {\n case VideoBufferType.ARGB:\n case VideoBufferType.RGBA:\n case VideoBufferType.ABGR:\n case VideoBufferType.BGRA:\n info.stride = this.width * 4;\n break;\n case VideoBufferType.RGB24:\n info.stride = this.width * 3;\n break;\n default:\n info.stride = 0;\n }\n\n info.components.push(...getPlaneInfos(this.dataPtr, this.type, this.width, this.height));\n\n return info;\n }\n\n /** @internal */\n static fromOwnedInfo(owned: OwnedVideoBuffer): VideoFrame {\n const info = owned.info!;\n const frame = new VideoFrame(\n FfiClient.instance.copyBuffer(\n info.dataPtr!,\n getPlaneLength(info.type!, info.width!, info.height!),\n ),\n info.width!,\n info.height!,\n info.type!,\n );\n // Dispose of the handle to prevent memory leaks\n new FfiHandle(owned.handle!.id!).dispose();\n return frame;\n }\n\n getPlane(planeNth: number): Uint8Array | void {\n const planeInfos = getPlaneInfos(this.dataPtr, this.type, this.width, this.height);\n if (planeNth >= planeInfos.length) return;\n\n const planeInfo = planeInfos[planeNth]!;\n return FfiClient.instance.copyBuffer(planeInfo.dataPtr!, planeInfo.size!);\n }\n\n convert(dstType: VideoBufferType, flipY = false): VideoFrame {\n const req = new FfiRequest({\n message: {\n case: 'videoConvert',\n value: {\n flipY,\n dstType,\n buffer: this.protoInfo(),\n },\n },\n });\n const resp = FfiClient.instance.request<VideoConvertResponse>(req);\n\n switch (resp.message.case) {\n case 'buffer':\n return VideoFrame.fromOwnedInfo(resp.message.value);\n case 'error':\n default:\n throw resp.message.value;\n }\n }\n}\n\nconst getPlaneLength = (type: VideoBufferType, width: number, height: number): number => {\n const chromaWidth = Math.trunc((width + 1) / 2);\n const chromaHeight = Math.trunc((height + 1) / 2);\n switch (type) {\n case VideoBufferType.ARGB:\n case VideoBufferType.RGBA:\n case VideoBufferType.ABGR:\n case VideoBufferType.BGRA:\n return width * height * 4;\n case VideoBufferType.RGB24:\n case VideoBufferType.I444:\n return width * height * 3;\n case VideoBufferType.I420:\n return width * height + chromaWidth * chromaHeight * 2;\n case VideoBufferType.I420A:\n return width * height * 2 + chromaWidth * chromaWidth * 2;\n case VideoBufferType.I422:\n return width * height + chromaWidth * height * 2;\n case VideoBufferType.I010:\n return width * height * 2 + chromaWidth * chromaHeight * 4;\n case VideoBufferType.NV12:\n return width * height + chromaWidth * chromaWidth * 2;\n }\n};\n\nconst getPlaneInfos = (\n dataPtr: bigint,\n type: VideoBufferType,\n width: number,\n height: number,\n): VideoBufferInfo_ComponentInfo[] => {\n const chromaWidth = Math.trunc((width + 1) / 2);\n const chromaHeight = Math.trunc((height + 1) / 2);\n switch (type) {\n case VideoBufferType.I420: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n return [y, u, v];\n }\n case VideoBufferType.I420A: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n const a = new VideoBufferInfo_ComponentInfo({\n dataPtr: v.dataPtr! + BigInt(v.size!),\n stride: width,\n size: width * height,\n });\n return [y, u, v, a];\n }\n case VideoBufferType.I422: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth,\n size: chromaWidth * height,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth,\n size: chromaWidth * height,\n });\n return [y, u, v];\n }\n case VideoBufferType.I444: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: width,\n size: width * height,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: width,\n size: width * height,\n });\n return [y, u, v];\n }\n case VideoBufferType.I010: {\n const y = new VideoBufferInfo_ComponentInfo({\n dataPtr,\n stride: width * 2,\n size: width * height * 2,\n });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth * 2,\n size: chromaWidth * chromaHeight * 2,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth * 2,\n size: chromaWidth * chromaHeight * 2,\n });\n return [y, u, v];\n }\n case VideoBufferType.NV12: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const uv = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth * 2,\n size: chromaWidth * chromaHeight * 2,\n });\n return [y, uv];\n }\n default:\n return [];\n }\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/video_frame.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { OwnedVideoBuffer, VideoConvertResponse } from '@livekit/rtc-ffi-bindings';\nimport {\n VideoBufferInfo,\n VideoBufferInfo_ComponentInfo,\n VideoBufferType,\n} from '@livekit/rtc-ffi-bindings';\nimport { FfiClient, FfiHandle, FfiRequest } from './ffi_client.js';\n\nexport class VideoFrame {\n data: Uint8Array;\n width: number;\n height: number;\n type: VideoBufferType;\n\n constructor(data: Uint8Array, width: number, height: number, type: VideoBufferType) {\n this.data = data;\n this.width = width;\n this.height = height;\n this.type = type;\n }\n\n /** @internal */\n get dataPtr(): bigint {\n return FfiClient.instance.retrievePtr(new Uint8Array(this.data.buffer));\n }\n\n /** @internal */\n protoInfo(): VideoBufferInfo {\n const info = new VideoBufferInfo({\n width: this.width,\n height: this.height,\n type: this.type,\n dataPtr: this.dataPtr,\n });\n\n switch (this.type) {\n case VideoBufferType.ARGB:\n case VideoBufferType.RGBA:\n case VideoBufferType.ABGR:\n case VideoBufferType.BGRA:\n info.stride = this.width * 4;\n break;\n case VideoBufferType.RGB24:\n info.stride = this.width * 3;\n break;\n default:\n info.stride = 0;\n }\n\n info.components.push(...getPlaneInfos(this.dataPtr, this.type, this.width, this.height));\n\n return info;\n }\n\n /** @internal */\n static fromOwnedInfo(owned: OwnedVideoBuffer): VideoFrame {\n const info = owned.info!;\n const frame = new VideoFrame(\n FfiClient.instance.copyBuffer(\n info.dataPtr!,\n getPlaneLength(info.type!, info.width!, info.height!),\n ),\n info.width!,\n info.height!,\n info.type!,\n );\n // Dispose of the handle to prevent memory leaks\n new FfiHandle(owned.handle!.id!).dispose();\n return frame;\n }\n\n getPlane(planeNth: number): Uint8Array | void {\n const planeInfos = getPlaneInfos(this.dataPtr, this.type, this.width, this.height);\n if (planeNth >= planeInfos.length) return;\n\n const planeInfo = planeInfos[planeNth]!;\n return FfiClient.instance.copyBuffer(planeInfo.dataPtr!, planeInfo.size!);\n }\n\n convert(dstType: VideoBufferType, flipY = false): VideoFrame {\n const req = new FfiRequest({\n message: {\n case: 'videoConvert',\n value: {\n flipY,\n dstType,\n buffer: this.protoInfo(),\n },\n },\n });\n const resp = FfiClient.instance.request<VideoConvertResponse>(req);\n\n switch (resp.message.case) {\n case 'buffer':\n return VideoFrame.fromOwnedInfo(resp.message.value);\n case 'error':\n default:\n throw resp.message.value;\n }\n }\n}\n\nconst getPlaneLength = (type: VideoBufferType, width: number, height: number): number => {\n const chromaWidth = Math.trunc((width + 1) / 2);\n const chromaHeight = Math.trunc((height + 1) / 2);\n switch (type) {\n case VideoBufferType.ARGB:\n case VideoBufferType.RGBA:\n case VideoBufferType.ABGR:\n case VideoBufferType.BGRA:\n return width * height * 4;\n case VideoBufferType.RGB24:\n case VideoBufferType.I444:\n return width * height * 3;\n case VideoBufferType.I420:\n return width * height + chromaWidth * chromaHeight * 2;\n case VideoBufferType.I420A:\n return width * height * 2 + chromaWidth * chromaWidth * 2;\n case VideoBufferType.I422:\n return width * height + chromaWidth * height * 2;\n case VideoBufferType.I010:\n return width * height * 2 + chromaWidth * chromaHeight * 4;\n case VideoBufferType.NV12:\n return width * height + chromaWidth * chromaWidth * 2;\n }\n};\n\nconst getPlaneInfos = (\n dataPtr: bigint,\n type: VideoBufferType,\n width: number,\n height: number,\n): VideoBufferInfo_ComponentInfo[] => {\n const chromaWidth = Math.trunc((width + 1) / 2);\n const chromaHeight = Math.trunc((height + 1) / 2);\n switch (type) {\n case VideoBufferType.I420: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n return [y, u, v];\n }\n case VideoBufferType.I420A: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth,\n size: chromaWidth * chromaHeight,\n });\n const a = new VideoBufferInfo_ComponentInfo({\n dataPtr: v.dataPtr! + BigInt(v.size!),\n stride: width,\n size: width * height,\n });\n return [y, u, v, a];\n }\n case VideoBufferType.I422: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth,\n size: chromaWidth * height,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth,\n size: chromaWidth * height,\n });\n return [y, u, v];\n }\n case VideoBufferType.I444: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: width,\n size: width * height,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: width,\n size: width * height,\n });\n return [y, u, v];\n }\n case VideoBufferType.I010: {\n const y = new VideoBufferInfo_ComponentInfo({\n dataPtr,\n stride: width * 2,\n size: width * height * 2,\n });\n const u = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth * 2,\n size: chromaWidth * chromaHeight * 2,\n });\n const v = new VideoBufferInfo_ComponentInfo({\n dataPtr: u.dataPtr! + BigInt(u.size!),\n stride: chromaWidth * 2,\n size: chromaWidth * chromaHeight * 2,\n });\n return [y, u, v];\n }\n case VideoBufferType.NV12: {\n const y = new VideoBufferInfo_ComponentInfo({ dataPtr, stride: width, size: width * height });\n const uv = new VideoBufferInfo_ComponentInfo({\n dataPtr: y.dataPtr! + BigInt(y.size!),\n stride: chromaWidth * 2,\n size: chromaWidth * chromaHeight * 2,\n });\n return [y, uv];\n }\n default:\n return [];\n }\n};\n"],"mappings":"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","names":[]}
@@ -1,9 +1,4 @@
1
- import { VideoBufferType, VideoBufferInfo, OwnedVideoBuffer } from './proto/video_frame_pb.cjs';
2
- import '@bufbuild/protobuf';
3
- import './proto/track_pb.cjs';
4
- import './proto/stats_pb.cjs';
5
- import './proto/e2ee_pb.cjs';
6
- import './proto/handle_pb.cjs';
1
+ import { VideoBufferType, VideoBufferInfo, OwnedVideoBuffer } from '@livekit/rtc-ffi-bindings';
7
2
 
8
3
  declare class VideoFrame {
9
4
  data: Uint8Array;
@@ -1,9 +1,4 @@
1
- import { VideoBufferType, VideoBufferInfo, OwnedVideoBuffer } from './proto/video_frame_pb.js';
2
- import '@bufbuild/protobuf';
3
- import './proto/track_pb.js';
4
- import './proto/stats_pb.js';
5
- import './proto/e2ee_pb.js';
6
- import './proto/handle_pb.js';
1
+ import { VideoBufferType, VideoBufferInfo, OwnedVideoBuffer } from '@livekit/rtc-ffi-bindings';
7
2
 
8
3
  declare class VideoFrame {
9
4
  data: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"video_frame.d.ts","sourceRoot":"","sources":["../src/video_frame.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,eAAe,EAEf,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,UAAU;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;gBAEV,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;IAOlF,gBAAgB;IAChB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gBAAgB;IAChB,SAAS,IAAI,eAAe;IA2B5B,gBAAgB;IAChB,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU;IAgBzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQ7C,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,UAAQ,GAAG,UAAU;CAqB7D"}
1
+ {"version":3,"file":"video_frame.d.ts","sourceRoot":"","sources":["../src/video_frame.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,eAAe,EAEf,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAGnC,qBAAa,UAAU;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;gBAEV,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;IAOlF,gBAAgB;IAChB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gBAAgB;IAChB,SAAS,IAAI,eAAe;IA2B5B,gBAAgB;IAChB,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU;IAgBzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQ7C,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,UAAQ,GAAG,UAAU;CAqB7D"}
@@ -1,9 +1,9 @@
1
- import { FfiClient, FfiHandle, FfiRequest } from "./ffi_client.js";
2
1
  import {
3
2
  VideoBufferInfo,
4
3
  VideoBufferInfo_ComponentInfo,
5
4
  VideoBufferType
6
- } from "./proto/video_frame_pb.js";
5
+ } from "@livekit/rtc-ffi-bindings";
6
+ import { FfiClient, FfiHandle, FfiRequest } from "./ffi_client.js";
7
7
  class VideoFrame {
8
8
  constructor(data, width, height, type) {
9
9
  this.data = data;