@100mslive/react-native-hms 0.9.7 → 0.9.91

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 (170) hide show
  1. package/README.md +63 -44
  2. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  6. package/android/.gradle/checksums/checksums.lock +0 -0
  7. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  8. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  9. package/android/.idea/compiler.xml +6 -0
  10. package/android/.idea/gradle.xml +6 -1
  11. package/android/.idea/jarRepositories.xml +40 -0
  12. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml +16 -0
  13. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_3_0.xml +11 -0
  14. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml +13 -0
  15. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_4_1_aar.xml +16 -0
  16. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_4_1_aar.xml +13 -0
  17. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
  18. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
  19. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
  20. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
  21. package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_3_aar.xml +13 -0
  22. package/android/.idea/libraries/Gradle__androidx_core_core_1_7_0_aar.xml +16 -0
  23. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
  24. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
  25. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
  26. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml +16 -0
  27. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
  28. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_4_0.xml +11 -0
  29. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +13 -0
  30. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +13 -0
  31. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_4_0_aar.xml +13 -0
  32. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +13 -0
  33. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +13 -0
  34. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
  35. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +13 -0
  36. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
  37. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
  38. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
  39. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +13 -0
  40. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
  41. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
  42. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
  43. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
  44. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
  45. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
  46. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
  47. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
  48. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
  49. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
  51. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
  52. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
  53. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml +13 -0
  56. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_69_1_debug_aar.xml +14 -0
  57. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_3.xml +13 -0
  58. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_3.xml +13 -0
  59. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_3_aar.xml +15 -0
  60. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
  61. package/android/.idea/libraries/Gradle__com_github_100mslive_android_sdk_lib_2_4_7_aar.xml +11 -0
  62. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_hms_1_1_aar.xml +11 -0
  63. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
  64. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_2.xml +13 -0
  65. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_2.xml +13 -0
  66. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
  67. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
  68. package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
  69. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
  70. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml +13 -0
  71. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml +13 -0
  72. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml +13 -0
  73. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml +13 -0
  74. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_6_0.xml +13 -0
  75. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_6_0.xml +13 -0
  76. package/android/.idea/misc.xml +1 -1
  77. package/android/.idea/modules/android.androidTest.iml +201 -0
  78. package/android/.idea/modules/android.iml +28 -6
  79. package/android/.idea/modules/android.main.iml +196 -0
  80. package/android/.idea/modules/android.unitTest.iml +195 -0
  81. package/android/.idea/modules.xml +3 -0
  82. package/android/build.gradle +2 -2
  83. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +84 -0
  84. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +79 -10
  85. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +130 -27
  86. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +88 -2
  87. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +307 -82
  88. package/ios/HMSDecoder.swift +9 -8
  89. package/ios/HMSHelper.swift +18 -8
  90. package/ios/HMSManager.m +1 -1
  91. package/ios/HMSManager.swift +7 -6
  92. package/ios/HMSRNSDK.swift +198 -173
  93. package/lib/commonjs/classes/HMSAudioDevice.js +17 -0
  94. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -0
  95. package/lib/commonjs/classes/HMSAudioMixingMode.js +15 -0
  96. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -0
  97. package/lib/commonjs/classes/HMSAudioMode.js +17 -0
  98. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -0
  99. package/lib/commonjs/classes/HMSEncoder.js +15 -0
  100. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  101. package/lib/commonjs/classes/HMSException.js +18 -13
  102. package/lib/commonjs/classes/HMSException.js.map +1 -1
  103. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  104. package/lib/commonjs/classes/HMSLogger.js +2 -2
  105. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  106. package/lib/commonjs/classes/HMSPermissions.js +7 -4
  107. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  108. package/lib/commonjs/classes/HMSRTMPConfig.js +3 -0
  109. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  110. package/lib/commonjs/classes/HMSRtmpVideoResolution.js +23 -0
  111. package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -0
  112. package/lib/commonjs/classes/HMSSDK.js +268 -48
  113. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  114. package/lib/commonjs/classes/HMSUpdateListenerActions.js +1 -0
  115. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  116. package/lib/commonjs/index.js +56 -0
  117. package/lib/commonjs/index.js.map +1 -1
  118. package/lib/module/classes/HMSAudioDevice.js +10 -0
  119. package/lib/module/classes/HMSAudioDevice.js.map +1 -0
  120. package/lib/module/classes/HMSAudioMixingMode.js +8 -0
  121. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -0
  122. package/lib/module/classes/HMSAudioMode.js +10 -0
  123. package/lib/module/classes/HMSAudioMode.js.map +1 -0
  124. package/lib/module/classes/HMSEncoder.js +14 -0
  125. package/lib/module/classes/HMSEncoder.js.map +1 -1
  126. package/lib/module/classes/HMSException.js +18 -13
  127. package/lib/module/classes/HMSException.js.map +1 -1
  128. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  129. package/lib/module/classes/HMSLogger.js +2 -2
  130. package/lib/module/classes/HMSLogger.js.map +1 -1
  131. package/lib/module/classes/HMSPermissions.js +7 -4
  132. package/lib/module/classes/HMSPermissions.js.map +1 -1
  133. package/lib/module/classes/HMSRTMPConfig.js +3 -0
  134. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  135. package/lib/module/classes/HMSRtmpVideoResolution.js +14 -0
  136. package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -0
  137. package/lib/module/classes/HMSSDK.js +267 -42
  138. package/lib/module/classes/HMSSDK.js.map +1 -1
  139. package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
  140. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  141. package/lib/module/index.js +4 -0
  142. package/lib/module/index.js.map +1 -1
  143. package/lib/typescript/classes/HMSAudioDevice.d.ts +7 -0
  144. package/lib/typescript/classes/HMSAudioMixingMode.d.ts +5 -0
  145. package/lib/typescript/classes/HMSAudioMode.d.ts +7 -0
  146. package/lib/typescript/classes/HMSEncoder.d.ts +2 -0
  147. package/lib/typescript/classes/HMSException.d.ts +8 -14
  148. package/lib/typescript/classes/HMSHLSConfig.d.ts +2 -2
  149. package/lib/typescript/classes/HMSLogger.d.ts +1 -1
  150. package/lib/typescript/classes/HMSPermissions.d.ts +6 -4
  151. package/lib/typescript/classes/HMSRTMPConfig.d.ts +3 -0
  152. package/lib/typescript/classes/HMSRtmpVideoResolution.d.ts +8 -0
  153. package/lib/typescript/classes/HMSSDK.d.ts +109 -11
  154. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
  155. package/lib/typescript/index.d.ts +4 -0
  156. package/package.json +1 -19
  157. package/react-native-hms.podspec +1 -1
  158. package/src/classes/HMSAudioDevice.ts +7 -0
  159. package/src/classes/HMSAudioMixingMode.ts +5 -0
  160. package/src/classes/HMSAudioMode.ts +7 -0
  161. package/src/classes/HMSEncoder.ts +12 -0
  162. package/src/classes/HMSException.ts +15 -24
  163. package/src/classes/HMSHLSConfig.ts +2 -2
  164. package/src/classes/HMSLogger.ts +2 -2
  165. package/src/classes/HMSPermissions.ts +9 -6
  166. package/src/classes/HMSRTMPConfig.ts +5 -0
  167. package/src/classes/HMSRtmpVideoResolution.ts +9 -0
  168. package/src/classes/HMSSDK.tsx +341 -49
  169. package/src/classes/HMSUpdateListenerActions.ts +1 -0
  170. package/src/index.ts +4 -0
@@ -21,13 +21,16 @@ import type { HMSRemotePeer } from './HMSRemotePeer';
21
21
  import type { HMSRoom } from './HMSRoom';
22
22
  import type { HMSRole } from './HMSRole';
23
23
  import type { HMSTrack } from './HMSTrack';
24
- import type { HMSTrackType } from './HMSTrackType';
24
+ import { HMSTrackType } from './HMSTrackType';
25
25
  import type { HMSLogger } from './HMSLogger';
26
26
  import type { HMSPeer } from './HMSPeer';
27
27
  import type { HMSVideoViewMode } from './HMSVideoViewMode';
28
28
  import type { HMSTrackSettings } from './HMSTrackSettings';
29
29
  import type { HMSRTMPConfig } from './HMSRTMPConfig';
30
30
  import type { HMSHLSConfig } from './HMSHLSConfig';
31
+ import type { HMSAudioDevice } from './HMSAudioDevice';
32
+ import type { HMSAudioMode } from './HMSAudioMode';
33
+ import type { HMSAudioMixingMode } from './HMSAudioMixingMode';
31
34
 
32
35
  interface HmsViewProps {
33
36
  trackId: string;
@@ -75,6 +78,7 @@ export class HMSSDK {
75
78
  onLocalVideoStatsDelegate?: any;
76
79
  onRemoteAudioStatsDelegate?: any;
77
80
  onRemoteVideoStatsDelegate?: any;
81
+ onAudioDeviceChangedDelegate?: any;
78
82
 
79
83
  constructor(id: string) {
80
84
  this.id = id;
@@ -110,8 +114,8 @@ export class HMSSDK {
110
114
  * @param {HMSLogger} hmsLogger
111
115
  * @memberof HMSSDK
112
116
  */
113
- setLogger = (hmsLogger: HMSLogger) => {
114
- setLogger(hmsLogger, this.id);
117
+ setLogger = (hmsLogger?: HMSLogger) => {
118
+ setLogger(this.id, hmsLogger);
115
119
  };
116
120
 
117
121
  /**
@@ -228,6 +232,11 @@ export class HMSSDK {
228
232
  HMSUpdateListenerActions.ON_REMOTE_VIDEO_STATS,
229
233
  this.onRemoteVideoStatsListener
230
234
  );
235
+
236
+ HmsEventEmitter.addListener(
237
+ HMSUpdateListenerActions.ON_AUDIO_DEVICE_CHANGED,
238
+ this.onAudioDeviceChangedListener
239
+ );
231
240
  };
232
241
 
233
242
  /**
@@ -320,6 +329,11 @@ export class HMSSDK {
320
329
  HMSUpdateListenerActions.ON_REMOTE_VIDEO_STATS,
321
330
  this.onRemoteVideoStatsListener
322
331
  );
332
+
333
+ HmsEventEmitter.removeListener(
334
+ HMSUpdateListenerActions.ON_AUDIO_DEVICE_CHANGED,
335
+ this.onAudioDeviceChangedListener
336
+ );
323
337
  };
324
338
 
325
339
  /**
@@ -376,13 +390,14 @@ export class HMSSDK {
376
390
  };
377
391
 
378
392
  /**
379
- * - HmsView is react component that takes one track and starts showing that track on a tile.
393
+ * - HmsView is react component that takes trackId and starts showing that track on a tile.
380
394
  * - The appearance of tile is completely customizable with style prop.
381
- * - scale type can determine how the incoming video will fit in the canvas check {@link HMSVideoViewMode} for more information.
395
+ * - Scale type can determine how the incoming video will fit in the canvas check {@link HMSVideoViewMode} for more information.
396
+ * - Mirror to flip the video vertically.
382
397
  *
383
398
  * checkout {@link https://www.100ms.live/docs/react-native/v2/features/render-video} for more info
384
399
  *
385
- * @param {HmsComponentProps}
400
+ * @param {HmsViewProps}
386
401
  * @memberof HMSSDK
387
402
  */
388
403
  HmsView = React.forwardRef<any, HmsViewProps>((props, ref) => {
@@ -510,9 +525,9 @@ export class HMSSDK {
510
525
  * @param {string}
511
526
  * @memberof HMSSDK
512
527
  */
513
- changeMetadata = (metadata: string) => {
528
+ changeMetadata = async (metadata: string) => {
514
529
  logger?.verbose('#Function changeMetadata', { metadata, id: this.id });
515
- HMSManager.changeMetadata({ metadata, id: this.id });
530
+ return await HMSManager.changeMetadata({ metadata, id: this.id });
516
531
  };
517
532
 
518
533
  /**
@@ -557,7 +572,7 @@ export class HMSSDK {
557
572
  * @param {HMSHLSConfig}
558
573
  * @memberof HMSSDK
559
574
  */
560
- startHLSStreaming = async (data: HMSHLSConfig) => {
575
+ startHLSStreaming = async (data?: HMSHLSConfig) => {
561
576
  logger?.verbose('#Function startHLSStreaming', {
562
577
  ...data,
563
578
  id: this.id,
@@ -605,7 +620,7 @@ export class HMSSDK {
605
620
 
606
621
  /**
607
622
  * - This function can be used to manipulate mute status of any track.
608
- * - Targeted peer affected by this action will get a callback in {@link onChangeTrackStateRequestListener}.
623
+ * - Targeted peer affected by this action will get a callback in onChangeTrackStateRequestListener.
609
624
  *
610
625
  * * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-track-state} for more info
611
626
  *
@@ -631,7 +646,7 @@ export class HMSSDK {
631
646
  * - changeTrackStateForRoles is an enhancement on the functionality of {@link changeTrackState}.
632
647
  * - We can change mute status for all the tracks of peers having a particular role.
633
648
  * - @param source determines the source of the track ex. video, audio etc.
634
- * - The peers affected by this action will get a callback in {@link onChangeTrackStateRequestListener}.
649
+ * - The peers affected by this action will get a callback in onChangeTrackStateRequestListener.
635
650
  *
636
651
  * @memberof HMSSDK
637
652
  */
@@ -736,7 +751,7 @@ export class HMSSDK {
736
751
  };
737
752
 
738
753
  /**
739
- * - setPlaybackForAllAudio is an extension of the abilities of {@link setPlaybackAllowed} in
754
+ * - setPlaybackForAllAudio is an extension of the abilities of setPlaybackAllowed in
740
755
  * {@link HMSRemoteAudioTrack}, it sets mute status for all peers in the room
741
756
  *
742
757
  * checkout {@link https://www.100ms.live/docs/react-native/v2/features/playback-allowed} for more info
@@ -754,9 +769,9 @@ export class HMSSDK {
754
769
  *
755
770
  * @memberof HMSSDK
756
771
  */
757
- remoteMuteAllAudio = () => {
772
+ remoteMuteAllAudio = async () => {
758
773
  logger?.verbose('#Function remoteMuteAllAudio', { id: this.id });
759
- HMSManager.remoteMuteAllAudio({ id: this.id });
774
+ return await HMSManager.remoteMuteAllAudio({ id: this.id });
760
775
  };
761
776
 
762
777
  /**
@@ -888,11 +903,7 @@ export class HMSSDK {
888
903
  */
889
904
  enableRTCStats = () => {
890
905
  logger?.verbose('#Function enableRTCStats', { id: this.id });
891
- if (Platform.OS === 'ios') {
892
- HMSManager.enableRTCStats({ id: this.id });
893
- } else {
894
- console.log('API currently not avaialble for android');
895
- }
906
+ HMSManager.enableRTCStats({ id: this.id });
896
907
  };
897
908
 
898
909
  /**
@@ -905,10 +916,209 @@ export class HMSSDK {
905
916
  */
906
917
  disableRTCStats = () => {
907
918
  logger?.verbose('#Function disableRTCStats', { id: this.id });
908
- if (Platform.OS === 'ios') {
909
- HMSManager.disableRTCStats({ id: this.id });
919
+ HMSManager.disableRTCStats({ id: this.id });
920
+ };
921
+
922
+ /**
923
+ * - This wrapper function is used to start streaming device audio, currently available only for android.
924
+ *
925
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-stream-device-audio-from-the-app} for more info.
926
+ *
927
+ * @param {HMSAudioMixingMode}
928
+ * @memberof HMSSDK
929
+ */
930
+ startAudioshare = async (audioMixingMode: HMSAudioMixingMode) => {
931
+ logger?.verbose('#Function startAudioshare', {
932
+ id: this.id,
933
+ audioMixingMode,
934
+ });
935
+ if (Platform.OS === 'android') {
936
+ return await HMSManager.startAudioshare({ id: this.id, audioMixingMode });
910
937
  } else {
911
- console.log('API currently not avaialble for android');
938
+ console.log('API currently not available for iOS');
939
+ return 'API currently not available for iOS';
940
+ }
941
+ };
942
+
943
+ /**
944
+ * - This wrapper function returns true if audio is being shared and vice versa, currently available only for android.
945
+ *
946
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-get-audio-share-status} for more info.
947
+ *
948
+ * @memberof HMSSDK
949
+ */
950
+ isAudioShared = async () => {
951
+ logger?.verbose('#Function isAudioShared', { id: this.id });
952
+ if (Platform.OS === 'android') {
953
+ return await HMSManager.isAudioShared({ id: this.id });
954
+ } else {
955
+ console.log('API currently not available for iOS');
956
+ return 'API currently not available for iOS';
957
+ }
958
+ };
959
+
960
+ /**
961
+ * - This wrapper function is used to stop streaming device audio, currently available only for android.
962
+ *
963
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-stop-audio-sharing} for more info.
964
+ *
965
+ * @memberof HMSSDK
966
+ */
967
+ stopAudioshare = async () => {
968
+ logger?.verbose('#Function stopAudioshare', { id: this.id });
969
+ if (Platform.OS === 'android') {
970
+ return await HMSManager.stopAudioshare({ id: this.id });
971
+ } else {
972
+ console.log('API currently not available for iOS');
973
+ return 'API currently not available for iOS';
974
+ }
975
+ };
976
+
977
+ /**
978
+ * - This wrapper function returns the current audio mixing mode, currently available only for android.
979
+ *
980
+ * @memberof HMSSDK
981
+ * @return HMSAudioMixingMode
982
+ */
983
+ getAudioMixingMode = async () => {
984
+ logger?.verbose('#Function getAudioMixingMode', { id: this.id });
985
+ if (Platform.OS === 'android') {
986
+ return await HMSManager.getAudioMixingMode({ id: this.id });
987
+ } else {
988
+ console.log('API currently not available for iOS');
989
+ return 'API currently not available for iOS';
990
+ }
991
+ };
992
+
993
+ /**
994
+ * - This wrapper function used to change the mode while the user is streaming audio, currently available only for android.
995
+ *
996
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-change-mode} for more info
997
+ *
998
+ * @param {HMSAudioMixingMode}
999
+ * @memberof HMSSDK
1000
+ */
1001
+ setAudioMixingMode = async (audioMixingMode: HMSAudioMixingMode) => {
1002
+ logger?.verbose('#Function setAudioMixingMode', {
1003
+ id: this.id,
1004
+ audioMixingMode,
1005
+ });
1006
+ if (Platform.OS === 'android') {
1007
+ return await HMSManager.setAudioMixingMode({
1008
+ id: this.id,
1009
+ audioMixingMode,
1010
+ });
1011
+ } else {
1012
+ console.log('API currently not available for iOS');
1013
+ return 'API currently not available for iOS';
1014
+ }
1015
+ };
1016
+
1017
+ /**
1018
+ * - This wrapper function returns the array of audio output devices which is of
1019
+ * type {@link HMSAudioDevice[]}, currently available only for android.
1020
+ *
1021
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#get-list-of-audio-device} for more info
1022
+ *
1023
+ * @memberof HMSSDK
1024
+ * @return HMSAudioDevice[]
1025
+ */
1026
+ getAudioDevicesList = async () => {
1027
+ logger?.verbose('#Function getAudioDevicesList', {
1028
+ id: this.id,
1029
+ });
1030
+ if (Platform.OS === 'android') {
1031
+ return await HMSManager.getAudioDevicesList({ id: this.id });
1032
+ } else {
1033
+ console.log('API currently not available for iOS');
1034
+ return 'API currently not available for iOS';
1035
+ }
1036
+ };
1037
+
1038
+ /**
1039
+ * - This wrapper function returns the current audio output device which is of
1040
+ * type {@link HMSAudioDevice}, currently available only for android.
1041
+ *
1042
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#get-current-focussed-device} for more info
1043
+ *
1044
+ * @memberof HMSSDK
1045
+ * @return HMSAudioDevice
1046
+ */
1047
+ getAudioOutputRouteType = async () => {
1048
+ logger?.verbose('#Function getAudioOutputRouteType', {
1049
+ id: this.id,
1050
+ });
1051
+ if (Platform.OS === 'android') {
1052
+ return await HMSManager.getAudioOutputRouteType({ id: this.id });
1053
+ } else {
1054
+ console.log('API currently not available for iOS');
1055
+ return 'API currently not available for iOS';
1056
+ }
1057
+ };
1058
+
1059
+ /**
1060
+ * - This wrapper function used to switch output to device other than the default, currently available only for android.
1061
+ *
1062
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#switch-audio-focus-to-another-device} for more info
1063
+ *
1064
+ * @param {HMSAudioDevice}
1065
+ * @memberof HMSSDK
1066
+ */
1067
+ switchAudioOutput = (audioDevice: HMSAudioDevice) => {
1068
+ logger?.verbose('#Function switchAudioOutput', {
1069
+ id: this.id,
1070
+ audioDevice,
1071
+ });
1072
+ if (Platform.OS === 'android') {
1073
+ return HMSManager.switchAudioOutput({ id: this.id, audioDevice });
1074
+ } else {
1075
+ console.log('API currently not available for iOS');
1076
+ return 'API currently not available for iOS';
1077
+ }
1078
+ };
1079
+
1080
+ /**
1081
+ * - This wrapper function used to change Audio Mode manually, currently available only for android.
1082
+ *
1083
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-mode-change} for more info
1084
+ *
1085
+ * @param {HMSAudioMode}
1086
+ * @memberof HMSSDK
1087
+ */
1088
+ setAudioMode = (audioMode: HMSAudioMode) => {
1089
+ logger?.verbose('#Function setAudioMode', {
1090
+ id: this.id,
1091
+ audioMode,
1092
+ });
1093
+ if (Platform.OS === 'android') {
1094
+ return HMSManager.setAudioMode({ id: this.id, audioMode });
1095
+ } else {
1096
+ console.log('API currently not available for iOS');
1097
+ return 'API currently not available for iOS';
1098
+ }
1099
+ };
1100
+
1101
+ /**
1102
+ * - This is a wrapper function which adds a listener which is triggered when audio output device is switched, currently available only for android.
1103
+ *
1104
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#adding-a-listener} for more info
1105
+ *
1106
+ * @param {Function}
1107
+ * @memberof HMSSDK
1108
+ */
1109
+ setAudioDeviceChangeListener = (callback: Function) => {
1110
+ logger?.verbose('#Function setAudioDeviceChangeListener', {
1111
+ id: this.id,
1112
+ });
1113
+ if (Platform.OS === 'android') {
1114
+ this.addEventListener(
1115
+ HMSUpdateListenerActions.ON_AUDIO_DEVICE_CHANGED,
1116
+ callback
1117
+ );
1118
+ return HMSManager.setAudioDeviceChangeListener({ id: this.id });
1119
+ } else {
1120
+ console.log('API currently not available for iOS');
1121
+ return 'API currently not available for iOS';
912
1122
  }
913
1123
  };
914
1124
 
@@ -979,6 +1189,9 @@ export class HMSSDK {
979
1189
  case HMSUpdateListenerActions.ON_REMOTE_VIDEO_STATS:
980
1190
  this.onRemoteVideoStatsDelegate = callback;
981
1191
  break;
1192
+ case HMSUpdateListenerActions.ON_AUDIO_DEVICE_CHANGED:
1193
+ this.onAudioDeviceChangedDelegate = callback;
1194
+ break;
982
1195
  default:
983
1196
  }
984
1197
  };
@@ -1047,6 +1260,9 @@ export class HMSSDK {
1047
1260
  case HMSUpdateListenerActions.ON_REMOTE_VIDEO_STATS:
1048
1261
  this.onRemoteVideoStatsDelegate = null;
1049
1262
  break;
1263
+ case HMSUpdateListenerActions.ON_AUDIO_DEVICE_CHANGED:
1264
+ this.onAudioDeviceChangedDelegate = null;
1265
+ break;
1050
1266
  default:
1051
1267
  }
1052
1268
  };
@@ -1093,7 +1309,6 @@ export class HMSSDK {
1093
1309
  if (data.id !== this.id) {
1094
1310
  return;
1095
1311
  }
1096
- logger?.verbose('#Listener ON_PREVIEW', data);
1097
1312
  const room: HMSRoom = HMSEncoder.encodeHmsRoom(data.room, this.id);
1098
1313
  const localPeer: HMSLocalPeer = HMSEncoder.encodeHmsLocalPeer(
1099
1314
  data.localPeer,
@@ -1112,6 +1327,8 @@ export class HMSSDK {
1112
1327
  previewTracks,
1113
1328
  });
1114
1329
  this.onPreviewDelegate({ ...data, room, localPeer, previewTracks });
1330
+ } else {
1331
+ logger?.verbose('#Listener ON_PREVIEW', data);
1115
1332
  }
1116
1333
  };
1117
1334
 
@@ -1119,7 +1336,6 @@ export class HMSSDK {
1119
1336
  if (data.id !== this.id) {
1120
1337
  return;
1121
1338
  }
1122
- logger?.verbose('#LISTENER ON_JOIN', data);
1123
1339
  // Preprocessing
1124
1340
  const room: HMSRoom = HMSEncoder.encodeHmsRoom(data.room, this.id);
1125
1341
  const localPeer: HMSLocalPeer = HMSEncoder.encodeHmsLocalPeer(
@@ -1143,6 +1359,8 @@ export class HMSSDK {
1143
1359
  remotePeers,
1144
1360
  });
1145
1361
  this.onJoinDelegate({ ...data, room, localPeer, remotePeers });
1362
+ } else {
1363
+ logger?.verbose('#LISTENER ON_JOIN', data);
1146
1364
  }
1147
1365
  };
1148
1366
 
@@ -1150,7 +1368,6 @@ export class HMSSDK {
1150
1368
  if (data.id !== this.id) {
1151
1369
  return;
1152
1370
  }
1153
- logger?.verbose('#Listener ON_ROOM', data);
1154
1371
  const room: HMSRoom = HMSEncoder.encodeHmsRoom(data.room, this.id);
1155
1372
  const localPeer: HMSLocalPeer = HMSEncoder.encodeHmsLocalPeer(
1156
1373
  data.localPeer,
@@ -1171,6 +1388,8 @@ export class HMSSDK {
1171
1388
  remotePeers,
1172
1389
  });
1173
1390
  this.onRoomDelegate({ ...data, room, localPeer, remotePeers });
1391
+ } else {
1392
+ logger?.verbose('#Listener ON_ROOM', data);
1174
1393
  }
1175
1394
  };
1176
1395
 
@@ -1178,7 +1397,6 @@ export class HMSSDK {
1178
1397
  if (data.id !== this.id) {
1179
1398
  return;
1180
1399
  }
1181
- logger?.verbose('#Listener ON_PEER', data);
1182
1400
  const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1183
1401
  const room: HMSRoom = HMSEncoder.encodeHmsRoom(data.room, this.id);
1184
1402
  const localPeer: HMSLocalPeer = HMSEncoder.encodeHmsLocalPeer(
@@ -1194,8 +1412,16 @@ export class HMSSDK {
1194
1412
  this.remotePeers = remotePeers;
1195
1413
  this.room = room;
1196
1414
  if (this.onPeerDelegate) {
1197
- logger?.verbose('#Listener ON_PEER_LISTENER_CALL', data);
1415
+ logger?.verbose('#Listener ON_PEER_LISTENER_CALL', {
1416
+ ...data,
1417
+ localPeer,
1418
+ remotePeers,
1419
+ room,
1420
+ peer,
1421
+ });
1198
1422
  this.onPeerDelegate({ ...data, localPeer, remotePeers, room, peer });
1423
+ } else {
1424
+ logger?.verbose('#Listener ON_PEER', data);
1199
1425
  }
1200
1426
  };
1201
1427
 
@@ -1203,7 +1429,6 @@ export class HMSSDK {
1203
1429
  if (data.id !== this.id) {
1204
1430
  return;
1205
1431
  }
1206
- logger?.verbose('#Listener ON_TRACK', data);
1207
1432
  const track: HMSTrack = HMSEncoder.encodeHmsTrack(data.track, this.id);
1208
1433
  const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1209
1434
  const room: HMSRoom = HMSEncoder.encodeHmsRoom(data.room, this.id);
@@ -1215,14 +1440,25 @@ export class HMSSDK {
1215
1440
  data.remotePeers,
1216
1441
  this.id
1217
1442
  );
1218
- if (this.muteStatus && data?.type === 'TRACK_ADDED') {
1443
+ if (
1444
+ this.muteStatus &&
1445
+ data?.type === 'TRACK_ADDED' &&
1446
+ track.type === HMSTrackType.AUDIO
1447
+ ) {
1219
1448
  this.setPlaybackForAllAudio(this.muteStatus);
1220
1449
  }
1221
1450
  this.room = room;
1222
1451
  this.localPeer = localPeer;
1223
1452
  this.remotePeers = remotePeers;
1224
1453
  if (this.onTrackDelegate) {
1225
- logger?.verbose('#Listener ON_TRACK_LISTENER_CALL', data);
1454
+ logger?.verbose('#Listener ON_TRACK_LISTENER_CALL', {
1455
+ ...data,
1456
+ localPeer,
1457
+ remotePeers,
1458
+ room,
1459
+ peer,
1460
+ track,
1461
+ });
1226
1462
  this.onTrackDelegate({
1227
1463
  ...data,
1228
1464
  localPeer,
@@ -1231,6 +1467,8 @@ export class HMSSDK {
1231
1467
  peer,
1232
1468
  track,
1233
1469
  });
1470
+ } else {
1471
+ logger?.verbose('#Listener ON_TRACK', data);
1234
1472
  }
1235
1473
  };
1236
1474
 
@@ -1238,11 +1476,12 @@ export class HMSSDK {
1238
1476
  if (data.id !== this.id) {
1239
1477
  return;
1240
1478
  }
1241
- logger?.verbose('#Listener ON_MESSAGE', data);
1242
1479
  const message = HMSEncoder.encodeHMSMessage(data, this.id);
1243
1480
  if (this.onMessageDelegate) {
1244
1481
  logger?.verbose('#Listener ON_MESSAGE_LISTENER_CALL', message);
1245
1482
  this.onMessageDelegate(message);
1483
+ } else {
1484
+ logger?.verbose('#Listener ON_MESSAGE', data);
1246
1485
  }
1247
1486
  };
1248
1487
 
@@ -1250,12 +1489,13 @@ export class HMSSDK {
1250
1489
  if (data.id !== this.id) {
1251
1490
  return;
1252
1491
  }
1253
- logger?.verbose('#Listener ON_SPEAKER', data?.speakers);
1254
1492
  if (this.onSpeakerDelegate) {
1255
1493
  logger?.verbose('#Listener ON_SPEAKER_LISTENER_CALL', data?.speakers);
1256
1494
  this.onSpeakerDelegate(
1257
1495
  HMSEncoder.encodeHmsSpeakers(data?.speakers, this.id)
1258
1496
  );
1497
+ } else {
1498
+ logger?.verbose('#Listener ON_SPEAKER', data?.speakers);
1259
1499
  }
1260
1500
  };
1261
1501
 
@@ -1263,12 +1503,13 @@ export class HMSSDK {
1263
1503
  if (data.id !== this.id) {
1264
1504
  return;
1265
1505
  }
1266
- logger?.warn('#Listener ON_ERROR', data);
1267
- logger?.verbose('#Listener ON_ERROR', data);
1268
1506
  if (this.onErrorDelegate) {
1269
1507
  logger?.verbose('#Listener ON_ERROR_LISTENER_CALL', data);
1270
1508
  logger?.warn('#Listener ON_ERROR_LISTENER_CALL', data);
1271
- this.onErrorDelegate(data);
1509
+ this.onErrorDelegate(HMSEncoder.encodeHMSException(data));
1510
+ } else {
1511
+ logger?.warn('#Listener ON_ERROR', data);
1512
+ logger?.verbose('#Listener ON_ERROR', data);
1272
1513
  }
1273
1514
  };
1274
1515
 
@@ -1276,7 +1517,6 @@ export class HMSSDK {
1276
1517
  if (data.id !== this.id) {
1277
1518
  return;
1278
1519
  }
1279
- logger?.verbose('#Listener ON_ROLE_CHANGE_REQUEST', data);
1280
1520
  if (this.onRoleChangeRequestDelegate) {
1281
1521
  const encodedRoleChangeRequest = HMSEncoder.encodeHmsRoleChangeRequest(
1282
1522
  data,
@@ -1287,6 +1527,8 @@ export class HMSSDK {
1287
1527
  encodedRoleChangeRequest
1288
1528
  );
1289
1529
  this.onRoleChangeRequestDelegate(encodedRoleChangeRequest);
1530
+ } else {
1531
+ logger?.verbose('#Listener ON_ROLE_CHANGE_REQUEST', data);
1290
1532
  }
1291
1533
  };
1292
1534
 
@@ -1294,7 +1536,6 @@ export class HMSSDK {
1294
1536
  if (data.id !== this.id) {
1295
1537
  return;
1296
1538
  }
1297
- logger?.verbose('#Listener ON_CHANGE_TRACK_STATE_REQUEST', data);
1298
1539
  if (this.onChangeTrackStateRequestDelegate) {
1299
1540
  const encodedRoleChangeRequest =
1300
1541
  HMSEncoder.encodeHmsChangeTrackStateRequest(data, this.id);
@@ -1303,6 +1544,8 @@ export class HMSSDK {
1303
1544
  encodedRoleChangeRequest
1304
1545
  );
1305
1546
  this.onChangeTrackStateRequestDelegate(encodedRoleChangeRequest);
1547
+ } else {
1548
+ logger?.verbose('#Listener ON_CHANGE_TRACK_STATE_REQUEST', data);
1306
1549
  }
1307
1550
  };
1308
1551
 
@@ -1310,7 +1553,6 @@ export class HMSSDK {
1310
1553
  if (data.id !== this.id) {
1311
1554
  return;
1312
1555
  }
1313
- logger?.verbose('#Listener ON_REMOVED_FROM_ROOM', data);
1314
1556
  if (this.onRemovedFromRoomDelegate) {
1315
1557
  let requestedBy = null;
1316
1558
  if (data.requestedBy) {
@@ -1326,6 +1568,8 @@ export class HMSSDK {
1326
1568
  id: this.id,
1327
1569
  });
1328
1570
  this.onRemovedFromRoomDelegate({ requestedBy, reason, roomEnded });
1571
+ } else {
1572
+ logger?.verbose('#Listener ON_REMOVED_FROM_ROOM', data);
1329
1573
  }
1330
1574
  };
1331
1575
 
@@ -1333,9 +1577,11 @@ export class HMSSDK {
1333
1577
  if (data.id !== this.id) {
1334
1578
  return;
1335
1579
  }
1336
- logger?.verbose('#Listener ON_RECONNECTING', data);
1337
1580
  if (this.onReconnectingDelegate) {
1581
+ logger?.verbose('#Listener ON_RECONNECTING_CALL', data);
1338
1582
  this.onReconnectingDelegate(data);
1583
+ } else {
1584
+ logger?.verbose('#Listener ON_RECONNECTING', data);
1339
1585
  }
1340
1586
  };
1341
1587
 
@@ -1345,7 +1591,10 @@ export class HMSSDK {
1345
1591
  }
1346
1592
  logger?.verbose('#Listener ON_RECONNECTED', data);
1347
1593
  if (this.onReconnectedDelegate) {
1594
+ logger?.verbose('#Listener ON_RECONNECTED_CALL', data);
1348
1595
  this.onReconnectedDelegate(data);
1596
+ } else {
1597
+ logger?.verbose('#Listener ON_RECONNECTED', data);
1349
1598
  }
1350
1599
  };
1351
1600
 
@@ -1354,12 +1603,13 @@ export class HMSSDK {
1354
1603
  return;
1355
1604
  }
1356
1605
 
1357
- logger?.verbose('#Listener RTCStatsListener', data);
1358
-
1359
1606
  let rtcStats = HMSEncoder.encodeRTCStats(data);
1360
1607
 
1361
1608
  if (this.onRtcStatsDelegate) {
1609
+ logger?.verbose('#Listener RTCStatsListener_CALL', { rtcStats });
1362
1610
  this.onRtcStatsDelegate({ rtcStats });
1611
+ } else {
1612
+ logger?.verbose('#Listener RTCStatsListener', data);
1363
1613
  }
1364
1614
  };
1365
1615
 
@@ -1368,14 +1618,20 @@ export class HMSSDK {
1368
1618
  return;
1369
1619
  }
1370
1620
 
1371
- logger?.verbose('#Listener onLocalAudioStatsListener', data);
1372
-
1373
1621
  let localAudioStats = new HMSLocalAudioStats(data.localAudioStats);
1374
1622
  let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1375
1623
  let track = HMSEncoder.encodeHmsLocalAudioTrack(data.track, this.id);
1376
1624
 
1377
1625
  if (this.onLocalAudioStatsDelegate) {
1626
+ logger?.verbose('#Listener onLocalAudioStatsListener_CALL', {
1627
+ ...data,
1628
+ localAudioStats,
1629
+ peer,
1630
+ track,
1631
+ });
1378
1632
  this.onLocalAudioStatsDelegate({ ...data, localAudioStats, peer, track });
1633
+ } else {
1634
+ logger?.verbose('#Listener onLocalAudioStatsListener', data);
1379
1635
  }
1380
1636
  };
1381
1637
 
@@ -1384,14 +1640,20 @@ export class HMSSDK {
1384
1640
  return;
1385
1641
  }
1386
1642
 
1387
- logger?.verbose('#Listener onLocalVideoStatsListener', data);
1388
-
1389
1643
  let localVideoStats = new HMSLocalVideoStats(data.localVideoStats);
1390
1644
  let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1391
1645
  let track = HMSEncoder.encodeHmsLocalVideoTrack(data.track, this.id);
1392
1646
 
1393
1647
  if (this.onLocalVideoStatsDelegate) {
1648
+ logger?.verbose('#Listener onLocalVideoStatsListener_CALL', {
1649
+ ...data,
1650
+ localVideoStats,
1651
+ peer,
1652
+ track,
1653
+ });
1394
1654
  this.onLocalVideoStatsDelegate({ ...data, localVideoStats, peer, track });
1655
+ } else {
1656
+ logger?.verbose('#Listener onLocalVideoStatsListener', data);
1395
1657
  }
1396
1658
  };
1397
1659
 
@@ -1400,19 +1662,25 @@ export class HMSSDK {
1400
1662
  return;
1401
1663
  }
1402
1664
 
1403
- logger?.verbose('#Listener onRemoteAudioStatsListener', data);
1404
-
1405
1665
  let remoteAudioStats = new HMSRemoteAudioStats(data.remoteAudioStats);
1406
1666
  let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1407
1667
  let track = HMSEncoder.encodeHmsRemoteAudioTrack(data.track, this.id);
1408
1668
 
1409
1669
  if (this.onRemoteAudioStatsDelegate) {
1670
+ logger?.verbose('#Listener onRemoteAudioStatsListener_CALL', {
1671
+ ...data,
1672
+ remoteAudioStats,
1673
+ peer,
1674
+ track,
1675
+ });
1410
1676
  this.onRemoteAudioStatsDelegate({
1411
1677
  ...data,
1412
1678
  remoteAudioStats,
1413
1679
  peer,
1414
1680
  track,
1415
1681
  });
1682
+ } else {
1683
+ logger?.verbose('#Listener onRemoteAudioStatsListener', data);
1416
1684
  }
1417
1685
  };
1418
1686
 
@@ -1421,19 +1689,43 @@ export class HMSSDK {
1421
1689
  return;
1422
1690
  }
1423
1691
 
1424
- logger?.verbose('#Listener onRemoteVideoStatsListener', data);
1425
-
1426
1692
  let remoteVideoStats = new HMSRemoteVideoStats(data.remoteVideoStats);
1427
1693
  let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1428
1694
  let track = HMSEncoder.encodeHmsRemoteVideoTrack(data.track, this.id);
1429
1695
 
1430
1696
  if (this.onRemoteVideoStatsDelegate) {
1697
+ logger?.verbose('#Listener onRemoteVideoStatsListener_CALL', {
1698
+ ...data,
1699
+ remoteVideoStats,
1700
+ peer,
1701
+ track,
1702
+ });
1431
1703
  this.onRemoteVideoStatsDelegate({
1432
1704
  ...data,
1433
1705
  remoteVideoStats,
1434
1706
  peer,
1435
1707
  track,
1436
1708
  });
1709
+ } else {
1710
+ logger?.verbose('#Listener onRemoteVideoStatsListener', data);
1711
+ }
1712
+ };
1713
+
1714
+ onAudioDeviceChangedListener = (data: {
1715
+ id: string;
1716
+ device: string;
1717
+ audioDevicesList: string[];
1718
+ }) => {
1719
+ if (data.id !== this.id) {
1720
+ return;
1721
+ }
1722
+ if (this.onAudioDeviceChangedDelegate) {
1723
+ logger?.verbose('#Listener onAudioDeviceChangedListener_CALL', data);
1724
+ this.onAudioDeviceChangedDelegate({
1725
+ ...data,
1726
+ });
1727
+ } else {
1728
+ logger?.verbose('#Listener onAudioDeviceChangedListener', data);
1437
1729
  }
1438
1730
  };
1439
1731
  }