expo-realtime-ivs-broadcast 0.1.10 → 0.2.1

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 (265) hide show
  1. package/README.md +261 -4
  2. package/android/build/.transforms/10a4d332fad050fdaf4ee2d7badc1ee4/transformed/classes/classes_dex/classes.dex +0 -0
  3. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.dex +0 -0
  4. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView$attachStreamWithRetry$4.dex +0 -0
  5. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.dex +0 -0
  6. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$16$1.dex +0 -0
  7. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$1$10$2.dex → ExpoRealtimeIvsBroadcastModule$definition$1$16$2.dex} +0 -0
  8. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$1$11$1.dex → ExpoRealtimeIvsBroadcastModule$definition$1$17$1.dex} +0 -0
  9. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$2.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$1.dex} +0 -0
  10. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$10.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$10.dex} +0 -0
  11. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$14.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$11.dex} +0 -0
  12. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$12.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$12.dex} +0 -0
  13. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$13.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$13.dex} +0 -0
  14. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$11.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$14.dex} +0 -0
  15. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$15.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$15.dex} +0 -0
  16. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$16.dex +0 -0
  17. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$17.dex +0 -0
  18. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$18.dex +0 -0
  19. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$4.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$2.dex} +0 -0
  20. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$3.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$3.dex} +0 -0
  21. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$5.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$4.dex} +0 -0
  22. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$1.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$5.dex} +0 -0
  23. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$6.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$6.dex} +0 -0
  24. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$7.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$7.dex} +0 -0
  25. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$8.dex +0 -0
  26. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$9.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$9.dex} +0 -0
  27. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$1.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$1.dex} +0 -0
  28. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$2.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$2.dex} +0 -0
  29. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$3.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$3.dex} +0 -0
  30. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$4.dex +0 -0
  31. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$5.dex +0 -0
  32. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$6.dex +0 -0
  33. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$7.dex +0 -0
  34. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$8.dex +0 -0
  35. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$OnCreate$1.dex} +0 -0
  36. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$1.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$View$1.dex} +0 -0
  37. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$2.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$View$2.dex} +0 -0
  38. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$22$$inlined$Prop$1.dex +0 -0
  39. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$10$$inlined$Prop$1.dex → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$22$$inlined$Prop$2.dex} +0 -0
  40. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$23$$inlined$Prop$1.dex +0 -0
  41. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.dex +0 -0
  42. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManager.dex +0 -0
  43. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/PiPOptions$PiPSourceView.dex +0 -0
  44. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/PiPOptions.dex +0 -0
  45. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/PiPStateListener.dex +0 -0
  46. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/PictureInPictureDelegate.dex +0 -0
  47. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/PictureInPictureManager$Companion.dex +0 -0
  48. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/PictureInPictureManager.dex +0 -0
  49. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +5 -0
  50. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  51. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +12 -1
  52. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +5 -0
  53. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.class +0 -0
  54. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView$attachStreamWithRetry$4.class +0 -0
  55. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.class +0 -0
  56. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$1$10$1.class → ExpoRealtimeIvsBroadcastModule$definition$1$16$1.class} +0 -0
  57. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$2.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$16$2.class} +0 -0
  58. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$1$11$1.class → ExpoRealtimeIvsBroadcastModule$definition$1$17$1.class} +0 -0
  59. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$4.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$1.class} +0 -0
  60. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$10.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$10.class} +0 -0
  61. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$14.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$11.class} +0 -0
  62. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$12.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$12.class} +0 -0
  63. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$13.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$13.class} +0 -0
  64. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$11.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$14.class} +0 -0
  65. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$15.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$15.class} +0 -0
  66. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$16.class +0 -0
  67. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$17.class +0 -0
  68. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$18.class +0 -0
  69. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$5.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$2.class} +0 -0
  70. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$3.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$3.class} +0 -0
  71. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$2.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$4.class} +0 -0
  72. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$1.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$5.class} +0 -0
  73. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$6.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$6.class} +0 -0
  74. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$7.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$7.class} +0 -0
  75. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$8.class +0 -0
  76. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$9.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$9.class} +0 -0
  77. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$1.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$1.class} +0 -0
  78. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$2.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$2.class} +0 -0
  79. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$3.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$3.class} +0 -0
  80. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$4.class +0 -0
  81. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$5.class +0 -0
  82. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$6.class +0 -0
  83. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$7.class +0 -0
  84. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$8.class +0 -0
  85. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$OnCreate$1.class} +0 -0
  86. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$1.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$View$1.class} +0 -0
  87. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$2.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$View$2.class} +0 -0
  88. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$22$$inlined$Prop$1.class +0 -0
  89. package/android/build/{tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$10$$inlined$Prop$1.class → intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$22$$inlined$Prop$2.class} +0 -0
  90. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$10$$inlined$Prop$1.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$23$$inlined$Prop$1.class} +0 -0
  91. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.class +0 -0
  92. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/IVSStageManager.class +0 -0
  93. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/PiPOptions$PiPSourceView.class +0 -0
  94. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/PiPOptions.class +0 -0
  95. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/PiPStateListener.class +0 -0
  96. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/PictureInPictureDelegate.class +0 -0
  97. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/PictureInPictureManager$Companion.class +0 -0
  98. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/PictureInPictureManager.class +0 -0
  99. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  100. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  101. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.s +1 -0
  107. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  125. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  126. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  127. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  128. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  129. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  130. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  131. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  132. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +1 -0
  133. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  134. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  135. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  136. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  137. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  138. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  139. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  140. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  141. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  142. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  143. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  144. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  145. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  146. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  147. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  148. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
  153. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  162. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  163. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  164. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  165. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  166. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  167. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  168. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  169. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values +0 -0
  170. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  171. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s +1 -0
  172. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  173. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  174. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  175. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  176. package/android/build/outputs/logs/manifest-merger-debug-report.txt +14 -2
  177. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.class +0 -0
  178. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView$attachStreamWithRetry$4.class +0 -0
  179. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.class +0 -0
  180. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$1$10$1.class → ExpoRealtimeIvsBroadcastModule$definition$1$16$1.class} +0 -0
  181. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$2.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$16$2.class} +0 -0
  182. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$1$11$1.class → ExpoRealtimeIvsBroadcastModule$definition$1$17$1.class} +0 -0
  183. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$1.class +0 -0
  184. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$10.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$10.class} +0 -0
  185. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$14.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$11.class} +0 -0
  186. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$12.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$12.class} +0 -0
  187. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$13.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$13.class} +0 -0
  188. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$11.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$14.class} +0 -0
  189. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$15.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$15.class} +0 -0
  190. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$16.class +0 -0
  191. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$17.class +0 -0
  192. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$18.class +0 -0
  193. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$2.class +0 -0
  194. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$3.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$3.class} +0 -0
  195. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$4.class +0 -0
  196. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$5.class +0 -0
  197. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$6.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$6.class} +0 -0
  198. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$7.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$7.class} +0 -0
  199. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$8.class +0 -0
  200. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$9.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunction$9.class} +0 -0
  201. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$1.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$1.class} +0 -0
  202. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$2.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$2.class} +0 -0
  203. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$3.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$3.class} +0 -0
  204. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$4.class +0 -0
  205. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$5.class +0 -0
  206. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$6.class +0 -0
  207. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$7.class +0 -0
  208. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$AsyncFunctionWithoutArgs$8.class +0 -0
  209. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$OnCreate$1.class} +0 -0
  210. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$1.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$View$1.class} +0 -0
  211. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$2.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$$inlined$View$2.class} +0 -0
  212. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$22$$inlined$Prop$1.class +0 -0
  213. package/android/build/{intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$2.class → tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$22$$inlined$Prop$2.class} +0 -0
  214. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/{ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$2.class → ExpoRealtimeIvsBroadcastModule$definition$lambda$24$lambda$23$$inlined$Prop$1.class} +0 -0
  215. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.class +0 -0
  216. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/IVSStageManager.class +0 -0
  217. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/PiPOptions$PiPSourceView.class +0 -0
  218. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/PiPOptions.class +0 -0
  219. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/PiPStateListener.class +0 -0
  220. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/PictureInPictureDelegate.class +0 -0
  221. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/PictureInPictureManager$Companion.class +0 -0
  222. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/PictureInPictureManager.class +0 -0
  223. package/android/src/main/AndroidManifest.xml +5 -0
  224. package/android/src/main/java/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.kt +172 -23
  225. package/android/src/main/java/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.kt +33 -0
  226. package/android/src/main/java/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.kt +92 -2
  227. package/android/src/main/java/expo/modules/realtimeivsbroadcast/IVSStageManager.kt +5 -2
  228. package/android/src/main/java/expo/modules/realtimeivsbroadcast/PictureInPictureManager.kt +431 -0
  229. package/build/ExpoRealtimeIvsBroadcast.types.d.ts +45 -0
  230. package/build/ExpoRealtimeIvsBroadcast.types.d.ts.map +1 -1
  231. package/build/ExpoRealtimeIvsBroadcast.types.js.map +1 -1
  232. package/build/ExpoRealtimeIvsBroadcastModule.d.ts +7 -1
  233. package/build/ExpoRealtimeIvsBroadcastModule.d.ts.map +1 -1
  234. package/build/ExpoRealtimeIvsBroadcastModule.js.map +1 -1
  235. package/build/ExpoRealtimeIvsBroadcastModule.web.d.ts +7 -1
  236. package/build/ExpoRealtimeIvsBroadcastModule.web.d.ts.map +1 -1
  237. package/build/ExpoRealtimeIvsBroadcastModule.web.js +20 -0
  238. package/build/ExpoRealtimeIvsBroadcastModule.web.js.map +1 -1
  239. package/build/index.d.ts +60 -1
  240. package/build/index.d.ts.map +1 -1
  241. package/build/index.js +77 -0
  242. package/build/index.js.map +1 -1
  243. package/ios/ExpoIVSRemoteStreamView.swift +17 -0
  244. package/ios/ExpoIVSStagePreviewView.swift +39 -5
  245. package/ios/ExpoRealtimeIvsBroadcast.podspec +2 -1
  246. package/ios/ExpoRealtimeIvsBroadcastModule.swift +46 -1
  247. package/ios/IVSPictureInPictureController.swift +1196 -0
  248. package/ios/IVSStageManager.swift +419 -1
  249. package/package.json +1 -1
  250. package/src/ExpoRealtimeIvsBroadcast.types.ts +53 -0
  251. package/src/ExpoRealtimeIvsBroadcastModule.ts +9 -1
  252. package/src/ExpoRealtimeIvsBroadcastModule.web.ts +26 -8
  253. package/src/index.ts +94 -0
  254. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$1.dex +0 -0
  255. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$8.dex +0 -0
  256. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$1.dex +0 -0
  257. package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$2.dex +0 -0
  258. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$8.class +0 -0
  259. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$1.class +0 -0
  260. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$1.class +0 -0
  261. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$2.class +0 -0
  262. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$4.class +0 -0
  263. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$5.class +0 -0
  264. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$8.class +0 -0
  265. package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$1.class +0 -0
@@ -1,11 +1,18 @@
1
1
  import ExpoModulesCore
2
2
  import AmazonIVSBroadcast
3
3
  import AVFoundation // For AVAudioSession
4
+ import AVKit
4
5
 
5
6
  extension Notification.Name {
6
7
  static let remoteStreamAvailable = Notification.Name("remoteStreamAvailableNotification")
7
8
  }
8
9
 
10
+ // MARK: - PiP Frame Source Protocol
11
+ protocol PiPFrameSource: AnyObject {
12
+ func didReceiveFrame(_ pixelBuffer: CVPixelBuffer)
13
+ func didReceiveSampleBuffer(_ sampleBuffer: CMSampleBuffer)
14
+ }
15
+
9
16
  // MARK: - Custom Camera Capture Manager
10
17
  // This class captures video from AVCaptureDevice and feeds it to IVS custom image source
11
18
  // Used to work around the IVS Stages SDK limitation where back camera isn't exposed
@@ -20,6 +27,9 @@ class CustomCameraCapture: NSObject, AVCaptureVideoDataOutputSampleBufferDelegat
20
27
  var currentPosition: AVCaptureDevice.Position = .front
21
28
  var previewLayer: AVCaptureVideoPreviewLayer?
22
29
 
30
+ // PiP frame source delegate
31
+ weak var pipFrameSource: PiPFrameSource?
32
+
23
33
  // Available cameras discovered via AVFoundation
24
34
  private(set) var availableCameras: [AVCaptureDevice] = []
25
35
 
@@ -92,6 +102,17 @@ class CustomCameraCapture: NSObject, AVCaptureVideoDataOutputSampleBufferDelegat
92
102
  if captureSession == nil {
93
103
  captureSession = AVCaptureSession()
94
104
  captureSession?.sessionPreset = .hd1280x720
105
+
106
+ // iOS 16+: Enable multitasking camera access for PiP support
107
+ // This allows camera to continue running when app is in PiP mode
108
+ if #available(iOS 16.0, *) {
109
+ if captureSession?.isMultitaskingCameraAccessSupported == true {
110
+ captureSession?.isMultitaskingCameraAccessEnabled = true
111
+ print("📸 [CustomCameraCapture] ✅ Multitasking camera access enabled (iOS 16+)")
112
+ } else {
113
+ print("📸 [CustomCameraCapture] ⚠️ Multitasking camera access not supported on this device")
114
+ }
115
+ }
95
116
  }
96
117
 
97
118
  guard let session = captureSession else { return false }
@@ -203,9 +224,22 @@ class CustomCameraCapture: NSObject, AVCaptureVideoDataOutputSampleBufferDelegat
203
224
 
204
225
  // MARK: - AVCaptureVideoDataOutputSampleBufferDelegate
205
226
 
227
+ private var captureFrameCount: Int = 0
228
+
206
229
  func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
230
+ captureFrameCount += 1
231
+
232
+ // Log periodically to track if capture is running
233
+ if captureFrameCount == 1 || captureFrameCount % 300 == 0 {
234
+ let isBackground = UIApplication.shared.applicationState == .background
235
+ print("📸 [CustomCameraCapture] Frame #\(captureFrameCount), background: \(isBackground), hasPiPDelegate: \(pipFrameSource != nil)")
236
+ }
237
+
207
238
  // Feed the sample buffer to IVS custom image source
208
239
  customImageSource?.onSampleBuffer(sampleBuffer)
240
+
241
+ // Forward to PiP if enabled
242
+ pipFrameSource?.didReceiveSampleBuffer(sampleBuffer)
209
243
  }
210
244
 
211
245
  func captureOutput(_ output: AVCaptureOutput, didDrop sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
@@ -259,6 +293,27 @@ class IVSStageManager: NSObject, IVSStageStreamDelegate, IVSStageStrategy, IVSSt
259
293
  private var remoteViews: [Weak<ExpoIVSRemoteStreamView>] = []
260
294
  // The specific participant we should prioritize rendering.
261
295
  private var targetParticipantId: String?
296
+
297
+ // MARK: - Picture-in-Picture Properties
298
+
299
+ private var _pipController: AnyObject?
300
+ private var _pipOptions: PiPOptions = PiPOptions()
301
+ private var currentPiPSourceDeviceUrn: String?
302
+ private weak var pipTargetView: UIView?
303
+ // Store the current IVSImageDevice being used for PiP frame capture
304
+ private var currentPiPDevice: IVSImageDevice?
305
+ // Store the local preview view for broadcaster PiP
306
+ private weak var localPreviewView: UIView?
307
+
308
+ @available(iOS 15.0, *)
309
+ private var pipController: IVSPictureInPictureController {
310
+ if _pipController == nil {
311
+ let controller = IVSPictureInPictureController()
312
+ controller.delegate = self
313
+ _pipController = controller
314
+ }
315
+ return _pipController as! IVSPictureInPictureController
316
+ }
262
317
 
263
318
  // MARK: - Initialization
264
319
 
@@ -774,6 +829,313 @@ class IVSStageManager: NSObject, IVSStageStreamDelegate, IVSStageStrategy, IVSSt
774
829
  print("Microphone muted: \(muted)")
775
830
  }
776
831
 
832
+ // MARK: - Picture-in-Picture Public API
833
+
834
+ /// Enable PiP with the given options
835
+ @available(iOS 15.0, *)
836
+ func enablePictureInPicture(options: [String: Any]?) {
837
+ var pipOpts = PiPOptions()
838
+
839
+ if let autoEnter = options?["autoEnterOnBackground"] as? Bool {
840
+ pipOpts.autoEnterOnBackground = autoEnter
841
+ }
842
+
843
+ if let sourceView = options?["sourceView"] as? String {
844
+ pipOpts.sourceView = sourceView == "local" ? .local : .remote
845
+ }
846
+
847
+ if let aspectRatio = options?["preferredAspectRatio"] as? [String: Any],
848
+ let width = aspectRatio["width"] as? CGFloat,
849
+ let height = aspectRatio["height"] as? CGFloat {
850
+ pipOpts.preferredAspectRatio = CGSize(width: width, height: height)
851
+ }
852
+
853
+ self._pipOptions = pipOpts
854
+
855
+ let success = pipController.enable(options: pipOpts)
856
+
857
+ if success {
858
+ // Setup frame forwarding based on source view
859
+ setupPiPFrameCapture()
860
+ }
861
+ }
862
+
863
+ /// Disable PiP
864
+ @available(iOS 15.0, *)
865
+ func disablePictureInPicture() {
866
+ pipController.disable()
867
+ cleanupPiPFrameCapture()
868
+ }
869
+
870
+ /// Start PiP manually
871
+ @available(iOS 15.0, *)
872
+ func startPictureInPicture() {
873
+ pipController.start()
874
+ }
875
+
876
+ /// Stop PiP manually
877
+ @available(iOS 15.0, *)
878
+ func stopPictureInPicture() {
879
+ pipController.stop()
880
+ }
881
+
882
+ /// Check if PiP is currently active
883
+ @available(iOS 15.0, *)
884
+ func isPictureInPictureActive() -> Bool {
885
+ return pipController.isActive
886
+ }
887
+
888
+ /// Check if PiP is enabled
889
+ @available(iOS 15.0, *)
890
+ func isPictureInPictureEnabled() -> Bool {
891
+ return pipController.isEnabled
892
+ }
893
+
894
+ /// Set the target view for PiP (used for remote stream capture)
895
+ @available(iOS 15.0, *)
896
+ func setPiPTargetView(_ view: UIView?) {
897
+ self.pipTargetView = view
898
+
899
+ if let view = view, pipController.isEnabled, _pipOptions.sourceView == .remote {
900
+ // Start view capture for remote stream
901
+ pipController.startViewCapture(from: view)
902
+ print("🖼️ [PiP] Set target view for remote stream capture")
903
+ }
904
+ }
905
+
906
+ /// Register the local preview view (ExpoIVSStagePreviewView) for broadcaster PiP
907
+ /// This should be called when the local preview view is set up
908
+ func registerLocalPreviewView(_ view: UIView?) {
909
+ self.localPreviewView = view
910
+ print("🖼️ [PiP] Registered local preview view: \(view != nil ? "set" : "cleared")")
911
+
912
+ // If PiP is already enabled for local source, set up the frame capture now
913
+ if #available(iOS 15.0, *) {
914
+ if pipController.isEnabled, _pipOptions.sourceView == .local, let view = view {
915
+ setupLocalCameraPiP(sourceView: view)
916
+ }
917
+ }
918
+ }
919
+
920
+ // MARK: - PiP Frame Capture Setup
921
+
922
+ @available(iOS 15.0, *)
923
+ private func setupPiPFrameCapture() {
924
+ if _pipOptions.sourceView == .local {
925
+ // For local camera (broadcaster mode)
926
+ if let sourceView = localPreviewView {
927
+ setupLocalCameraPiP(sourceView: sourceView)
928
+ } else {
929
+ print("🖼️ [PiP] Warning: Local preview view not registered yet. PiP will be set up when view is registered.")
930
+ }
931
+ } else {
932
+ // For remote streams, use IVSImageDevice frame callback
933
+ updatePiPSourceIfNeeded()
934
+ }
935
+ }
936
+
937
+ /// Set up PiP for local camera with the given source view
938
+ @available(iOS 15.0, *)
939
+ private func setupLocalCameraPiP(sourceView: UIView) {
940
+ print("🖼️ [PiP] Setting up local camera PiP with source view")
941
+
942
+ // First, set up the Video Call API source view
943
+ pipController.setupWithSourceView(sourceView)
944
+ pipTargetView = sourceView
945
+
946
+ // IMPORTANT: Always use IVSImageDevice frame callback from the camera stream
947
+ // This works better in background than relying on AVCaptureSession delegate
948
+ // because the IVS SDK manages the frame pipeline internally
949
+ guard let stream = cameraStream, let imageDevice = stream.device as? IVSImageDevice else {
950
+ print("🖼️ [PiP] Warning: Camera stream not available for PiP frame callback")
951
+
952
+ // Fallback to AVCaptureSession delegate for custom capture only
953
+ if useCustomCameraCapture {
954
+ customCameraCapture?.pipFrameSource = self
955
+ print("🖼️ [PiP] Using fallback: AVCaptureSession delegate (may freeze in background)")
956
+ }
957
+ return
958
+ }
959
+
960
+ // Use IVSImageDevice frame callback - this works for both native IVS camera
961
+ // and custom capture (where the device is IVSCustomImageSource)
962
+ setupFrameCallbackOnDevice(imageDevice)
963
+
964
+ let deviceType = useCustomCameraCapture ? "IVSCustomImageSource" : "native IVS camera"
965
+ print("🖼️ [PiP] Setup local camera frame capture via IVSImageDevice (\(deviceType))")
966
+ }
967
+
968
+ /// Set up frame callback on an IVSImageDevice without changing the source view
969
+ @available(iOS 15.0, *)
970
+ private func setupFrameCallbackOnDevice(_ device: IVSImageDevice) {
971
+ // If we are already attached to this device, do nothing
972
+ if currentPiPDevice === device {
973
+ print("🖼️ [PiP] Already attached to this device, skipping")
974
+ return
975
+ }
976
+
977
+ // If attached to another device, detach first
978
+ if let oldDevice = currentPiPDevice {
979
+ oldDevice.setOnFrameCallback(nil)
980
+ print("🖼️ [PiP] Detached from previous device")
981
+ }
982
+
983
+ currentPiPDevice = device
984
+ currentPiPSourceDeviceUrn = device.descriptor().urn
985
+
986
+ print("🖼️ [PiP] Setting up frame callback on device: \(device.descriptor().urn)")
987
+
988
+ // Set frame callback to receive CVPixelBuffers
989
+ // Use a dedicated queue for frame processing
990
+ let frameQueue = DispatchQueue(label: "com.ivs.pip.frameCallback", qos: .userInteractive)
991
+
992
+ // Track frame count for debugging
993
+ var deviceFrameCount = 0
994
+
995
+ device.setOnFrameCallbackQueue(frameQueue, includePixelBuffer: true) { [weak self] frame in
996
+ guard let self = self else { return }
997
+
998
+ deviceFrameCount += 1
999
+
1000
+ // Log periodically to track if frames are coming
1001
+ if deviceFrameCount == 1 || deviceFrameCount % 150 == 0 { // Log every 5 seconds at 30fps
1002
+ let isBackground = UIApplication.shared.applicationState == .background
1003
+ print("🖼️ [PiP] IVSImageDevice frame #\(deviceFrameCount), background: \(isBackground), hasPixelBuffer: \(frame.pixelBuffer != nil)")
1004
+ }
1005
+
1006
+ if let pixelBuffer = frame.pixelBuffer {
1007
+ self.pipController.enqueueFrame(pixelBuffer)
1008
+ }
1009
+ }
1010
+
1011
+ print("🖼️ [PiP] Frame callback registered on device")
1012
+ }
1013
+
1014
+ @available(iOS 15.0, *)
1015
+ private func cleanupPiPFrameCapture() {
1016
+ // Clear custom camera capture delegate
1017
+ customCameraCapture?.pipFrameSource = nil
1018
+
1019
+ // Clear IVS device callback
1020
+ if let device = currentPiPDevice {
1021
+ // Remove the callback
1022
+ device.setOnFrameCallback(nil)
1023
+ print("🖼️ [PiP] Removed frame callback from device: \(device.descriptor().urn)")
1024
+ }
1025
+
1026
+ currentPiPDevice = nil
1027
+ currentPiPSourceDeviceUrn = nil
1028
+ pipTargetView = nil
1029
+ }
1030
+
1031
+ /// Attach frame callback to an IVS Image Device
1032
+ @available(iOS 15.0, *)
1033
+ private func attachToDevice(_ device: IVSImageDevice, sourceView: UIView? = nil) {
1034
+ // If we are already attached to this device, do nothing
1035
+ if currentPiPDevice === device {
1036
+ return
1037
+ }
1038
+
1039
+ // If attached to another device, detach first
1040
+ if let oldDevice = currentPiPDevice {
1041
+ oldDevice.setOnFrameCallback(nil)
1042
+ }
1043
+
1044
+ currentPiPDevice = device
1045
+ currentPiPSourceDeviceUrn = device.descriptor().urn
1046
+
1047
+ print("🖼️ [PiP] Attaching frame callback to device: \(device.descriptor().urn)")
1048
+
1049
+ // IMPORTANT: Set up the Video Call API source view
1050
+ // This is required for the PiP window to appear correctly
1051
+ if let view = sourceView {
1052
+ pipController.setupWithSourceView(view)
1053
+ pipTargetView = view
1054
+ } else {
1055
+ // Try to get a preview view from the device
1056
+ do {
1057
+ let previewView = try device.previewView()
1058
+ pipController.setupWithSourceView(previewView)
1059
+ pipTargetView = previewView
1060
+ } catch {
1061
+ print("🖼️ [PiP] Warning: Could not get preview view from device: \(error)")
1062
+ // Try to find a remote view that's rendering this device
1063
+ if let remoteView = remoteViews.compactMap({ $0.value }).first(where: { $0.currentRenderedDeviceUrn == device.descriptor().urn }),
1064
+ let previewViewForPiP = remoteView.previewViewForPiP {
1065
+ pipController.setupWithSourceView(remoteView as UIView)
1066
+ pipTargetView = previewViewForPiP
1067
+ }
1068
+ }
1069
+ }
1070
+
1071
+ // Set frame callback to receive CVPixelBuffers
1072
+ // Using a dedicated queue for better performance
1073
+ let frameQueue = DispatchQueue(label: "com.ivs.pip.frameCallback", qos: .userInteractive)
1074
+ device.setOnFrameCallbackQueue(frameQueue, includePixelBuffer: true) { [weak self] frame in
1075
+ guard let self = self else { return }
1076
+
1077
+ if let pixelBuffer = frame.pixelBuffer {
1078
+ self.pipController.enqueueFrame(pixelBuffer)
1079
+ }
1080
+ }
1081
+ }
1082
+
1083
+ /// Update PiP source when streams change
1084
+ @available(iOS 15.0, *)
1085
+ func updatePiPSourceIfNeeded() {
1086
+ guard pipController.isEnabled, _pipOptions.sourceView == .remote else { return }
1087
+
1088
+ // We prioritize the target participant if set, otherwise any remote video
1089
+ var candidateStream: IVSStageStream?
1090
+ var candidateSourceView: UIView?
1091
+
1092
+ // Strategy: Find the first available video stream from a remote participant
1093
+ // 1. If targetParticipantId is set, check them first
1094
+ if let targetId = self.targetParticipantId,
1095
+ let participant = self.participants.first(where: { $0.info.participantId == targetId }) {
1096
+ candidateStream = participant.streams.first(where: { $0.device.descriptor().type == IVSDeviceType(rawValue: 5) }) // 5 = Video
1097
+ }
1098
+
1099
+ // 2. If no target or no stream, check all participants
1100
+ if candidateStream == nil {
1101
+ for participant in self.participants {
1102
+ if let stream = participant.streams.first(where: { $0.device.descriptor().type == IVSDeviceType(rawValue: 5) }) {
1103
+ candidateStream = stream
1104
+ break
1105
+ }
1106
+ }
1107
+ }
1108
+
1109
+ if let stream = candidateStream, let imageDevice = stream.device as? IVSImageDevice {
1110
+ // Found a valid video stream, attach to it
1111
+ if currentPiPSourceDeviceUrn != imageDevice.descriptor().urn {
1112
+ print("🖼️ [PiP] Found new remote video stream: \(imageDevice.descriptor().urn)")
1113
+
1114
+ // Try to find the remote view that's rendering this stream
1115
+ if let remoteView = remoteViews.compactMap({ $0.value }).first(where: { $0.currentRenderedDeviceUrn == imageDevice.descriptor().urn }) {
1116
+ // Use the remote view (container) as the source view for Video Call API
1117
+ // Cast to UIView explicitly since ExpoIVSRemoteStreamView extends ExpoView -> UIView
1118
+ candidateSourceView = remoteView as UIView
1119
+ print("🖼️ [PiP] Found matching remote view for source")
1120
+ }
1121
+
1122
+ attachToDevice(imageDevice, sourceView: candidateSourceView)
1123
+ }
1124
+ } else {
1125
+ // No candidate stream found
1126
+ if currentPiPDevice == nil {
1127
+ print("🖼️ [PiP] No active remote video stream found yet")
1128
+ }
1129
+ }
1130
+ }
1131
+
1132
+ /// Called by ExpoIVSRemoteStreamView when a stream finishes rendering
1133
+ func notifyRemoteStreamRendered() {
1134
+ if #available(iOS 15.0, *) {
1135
+ updatePiPSourceIfNeeded()
1136
+ }
1137
+ }
1138
+
777
1139
  // Public getter for the camera stream so the View can access it
778
1140
  public func getCameraStream() -> IVSLocalStageStream? {
779
1141
  return self.cameraStream
@@ -1066,6 +1428,11 @@ extension IVSStageManager {
1066
1428
  if streams.contains(where: { $0.device.descriptor().type == IVSDeviceType(rawValue: 5) }) {
1067
1429
  print("🧠 [MANAGER] Assigning streams to available views. didAddStreams")
1068
1430
  self.assignStreamsToAvailableViews()
1431
+
1432
+ // Update PiP source if needed
1433
+ if #available(iOS 15.0, *) {
1434
+ updatePiPSourceIfNeeded()
1435
+ }
1069
1436
  }
1070
1437
 
1071
1438
  delegate?.stageManagerDidEmitEvent(eventName: "onParticipantStreamsAdded", body: body)
@@ -1102,8 +1469,11 @@ extension IVSStageManager {
1102
1469
  "participantId": participant.participantId ?? "",
1103
1470
  "streams": streamDicts
1104
1471
  ]
1105
-
1106
1472
 
1473
+ // Update PiP source if the removed stream was being used
1474
+ if #available(iOS 15.0, *) {
1475
+ updatePiPSourceIfNeeded()
1476
+ }
1107
1477
 
1108
1478
  delegate?.stageManagerDidEmitEvent(eventName: "onParticipantStreamsRemoved", body: body)
1109
1479
  }
@@ -1135,3 +1505,51 @@ class Weak<T: AnyObject> {
1135
1505
  self.value = value
1136
1506
  }
1137
1507
  }
1508
+
1509
+ // MARK: - PiPFrameSource Implementation
1510
+ extension IVSStageManager: PiPFrameSource {
1511
+ private static var frameReceivedCount: Int = 0
1512
+
1513
+ func didReceiveFrame(_ pixelBuffer: CVPixelBuffer) {
1514
+ if #available(iOS 15.0, *) {
1515
+ IVSStageManager.frameReceivedCount += 1
1516
+ // Log periodically to confirm frames are flowing
1517
+ if IVSStageManager.frameReceivedCount == 1 || IVSStageManager.frameReceivedCount % 300 == 0 {
1518
+ print("🖼️ [PiP] Received pixel buffer frame #\(IVSStageManager.frameReceivedCount)")
1519
+ }
1520
+ pipController.enqueueFrame(pixelBuffer)
1521
+ }
1522
+ }
1523
+
1524
+ func didReceiveSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
1525
+ if #available(iOS 15.0, *) {
1526
+ IVSStageManager.frameReceivedCount += 1
1527
+ // Log periodically to confirm frames are flowing
1528
+ if IVSStageManager.frameReceivedCount == 1 || IVSStageManager.frameReceivedCount % 300 == 0 {
1529
+ print("🖼️ [PiP] Received sample buffer frame #\(IVSStageManager.frameReceivedCount)")
1530
+ }
1531
+ pipController.enqueueSampleBuffer(sampleBuffer)
1532
+ }
1533
+ }
1534
+ }
1535
+
1536
+ // MARK: - IVSPictureInPictureControllerDelegate Implementation
1537
+ @available(iOS 15.0, *)
1538
+ extension IVSStageManager: IVSPictureInPictureControllerDelegate {
1539
+ func pictureInPictureDidStart() {
1540
+ delegate?.stageManagerDidEmitEvent(eventName: "onPiPStateChanged", body: ["state": "started"])
1541
+ }
1542
+
1543
+ func pictureInPictureDidStop() {
1544
+ delegate?.stageManagerDidEmitEvent(eventName: "onPiPStateChanged", body: ["state": "stopped"])
1545
+ }
1546
+
1547
+ func pictureInPictureWillRestore() {
1548
+ delegate?.stageManagerDidEmitEvent(eventName: "onPiPStateChanged", body: ["state": "restored"])
1549
+ }
1550
+
1551
+ func pictureInPictureDidFail(with error: String) {
1552
+ delegate?.stageManagerDidEmitEvent(eventName: "onPiPError", body: ["error": error])
1553
+ }
1554
+ }
1555
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-realtime-ivs-broadcast",
3
- "version": "0.1.10",
3
+ "version": "0.2.1",
4
4
  "description": "An Expo module for real-time broadcasting using Amazon IVS.",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -70,6 +70,56 @@ export interface ParticipantStreamsRemovedPayload {
70
70
  streams: { deviceUrn: string }[];
71
71
  }
72
72
 
73
+ // --- Picture-in-Picture Types ---
74
+
75
+ /**
76
+ * Options for configuring Picture-in-Picture behavior
77
+ */
78
+ export interface PiPOptions {
79
+ /**
80
+ * Whether to automatically enter PiP when the app goes to background
81
+ * @default true
82
+ */
83
+ autoEnterOnBackground?: boolean;
84
+
85
+ /**
86
+ * Which video stream to show in PiP
87
+ * - 'local': Shows the local camera preview (for broadcasters)
88
+ * - 'remote': Shows the remote participant stream (for viewers)
89
+ * @default 'remote'
90
+ */
91
+ sourceView?: 'local' | 'remote';
92
+
93
+ /**
94
+ * Preferred aspect ratio for the PiP window
95
+ * @default { width: 9, height: 16 } (portrait)
96
+ */
97
+ preferredAspectRatio?: {
98
+ width: number;
99
+ height: number;
100
+ };
101
+ }
102
+
103
+ /**
104
+ * PiP state change event payload
105
+ */
106
+ export interface PiPStateChangedPayload {
107
+ /**
108
+ * Current PiP state:
109
+ * - 'started': PiP mode has started
110
+ * - 'stopped': PiP mode has stopped
111
+ * - 'restored': User tapped to return from PiP to full screen
112
+ */
113
+ state: 'started' | 'stopped' | 'restored';
114
+ }
115
+
116
+ /**
117
+ * PiP error event payload
118
+ */
119
+ export interface PiPErrorPayload {
120
+ error: string;
121
+ }
122
+
73
123
  // Defines the events that the native module can emit
74
124
  export type ExpoRealtimeIvsBroadcastModuleEvents = {
75
125
  onStageConnectionStateChanged: (payload: StageConnectionStatePayload) => void;
@@ -81,6 +131,9 @@ export type ExpoRealtimeIvsBroadcastModuleEvents = {
81
131
  onParticipantStreamsRemoved: (payload: ParticipantStreamsRemovedPayload) => void;
82
132
  onCameraSwapped: (payload: CameraSwappedPayload) => void;
83
133
  onCameraSwapError: (payload: CameraSwapErrorPayload) => void;
134
+ // PiP events
135
+ onPiPStateChanged: (payload: PiPStateChangedPayload) => void;
136
+ onPiPError: (payload: PiPErrorPayload) => void;
84
137
  };
85
138
 
86
139
  // Props for the ExpoIVSStagePreviewView component
@@ -1,5 +1,5 @@
1
1
  import { requireNativeModule, EventSubscription } from 'expo-modules-core';
2
- import { LocalAudioConfig, LocalVideoConfig, PermissionStatusMap, ExpoRealtimeIvsBroadcastModuleEvents } from './ExpoRealtimeIvsBroadcast.types';
2
+ import { LocalAudioConfig, LocalVideoConfig, PermissionStatusMap, ExpoRealtimeIvsBroadcastModuleEvents, PiPOptions } from './ExpoRealtimeIvsBroadcast.types';
3
3
 
4
4
  // This combines the module's method signatures with the event emitter's signatures.
5
5
  // By defining `addListener` and `removeListeners` explicitly, we get strong type-checking
@@ -13,6 +13,14 @@ export type ExpoRealtimeIvsBroadcastModuleType = {
13
13
  swapCamera(): Promise<void>;
14
14
  setMicrophoneMuted(muted: boolean): Promise<void>;
15
15
  requestPermissions(): Promise<PermissionStatusMap>;
16
+
17
+ // Picture-in-Picture methods
18
+ enablePictureInPicture(options?: PiPOptions): Promise<boolean>;
19
+ disablePictureInPicture(): Promise<void>;
20
+ startPictureInPicture(): Promise<void>;
21
+ stopPictureInPicture(): Promise<void>;
22
+ isPictureInPictureActive(): Promise<boolean>;
23
+ isPictureInPictureSupported(): Promise<boolean>;
16
24
 
17
25
  addListener<EventName extends keyof ExpoRealtimeIvsBroadcastModuleEvents>(
18
26
  eventName: EventName,
@@ -1,15 +1,33 @@
1
1
  import { registerWebModule, NativeModule } from 'expo';
2
2
 
3
- import { ExpoRealtimeIvsBroadcastModuleEvents } from './ExpoRealtimeIvsBroadcast.types';
3
+ import { ExpoRealtimeIvsBroadcastModuleEvents, PiPOptions } from './ExpoRealtimeIvsBroadcast.types';
4
4
 
5
5
  class ExpoRealtimeIvsBroadcastModule extends NativeModule<ExpoRealtimeIvsBroadcastModuleEvents> {
6
- // PI = Math.PI;
7
- // async setValueAsync(value: string): Promise<void> {
8
- // this.emit('onChange', { value });
9
- // }
10
- // hello() {
11
- // return 'Hello world! 👋';
12
- // }
6
+ // Stub implementations for web (PiP not supported on web)
7
+ async enablePictureInPicture(_options?: PiPOptions): Promise<boolean> {
8
+ console.warn('Picture-in-Picture is not supported on web');
9
+ return false;
10
+ }
11
+
12
+ async disablePictureInPicture(): Promise<void> {
13
+ // No-op on web
14
+ }
15
+
16
+ async startPictureInPicture(): Promise<void> {
17
+ console.warn('Picture-in-Picture is not supported on web');
18
+ }
19
+
20
+ async stopPictureInPicture(): Promise<void> {
21
+ // No-op on web
22
+ }
23
+
24
+ async isPictureInPictureActive(): Promise<boolean> {
25
+ return false;
26
+ }
27
+
28
+ async isPictureInPictureSupported(): Promise<boolean> {
29
+ return false;
30
+ }
13
31
  }
14
32
 
15
33
  export default registerWebModule(ExpoRealtimeIvsBroadcastModule, 'ExpoRealtimeIvsBroadcastModule');