expo-realtime-ivs-broadcast 0.2.4 → 0.2.5

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.
@@ -1093,13 +1093,33 @@ class IVSStageManager: NSObject, IVSStageStreamDelegate, IVSStageStrategy, IVSSt
1093
1093
  }
1094
1094
  }
1095
1095
 
1096
- // Set frame callback to receive CVPixelBuffers (only if not already set on this device)
1097
- let frameQueue = DispatchQueue(label: "com.ivs.pip.frameCallback", qos: .userInteractive)
1098
- device.setOnFrameCallbackQueue(frameQueue, includePixelBuffer: true) { [weak self] frame in
1099
- guard let self = self else { return }
1100
-
1101
- if let pixelBuffer = frame.pixelBuffer {
1102
- self.pipController.enqueueFrame(pixelBuffer)
1096
+ // For remote streams, the device frame callback may not work properly
1097
+ // Use ViewFrameCapture to capture frames from the actual UIView instead
1098
+ if _pipOptions.sourceView == .remote {
1099
+ // Use view capture for remote streams - more reliable than device callback
1100
+ if let targetView = pipTargetView {
1101
+ print("🖼️ [PiP] Using ViewFrameCapture for remote stream")
1102
+ pipController.startViewCapture(from: targetView)
1103
+ } else {
1104
+ print("🖼️ [PiP] Warning: No target view for ViewFrameCapture, trying device callback")
1105
+ // Fallback to device callback
1106
+ let frameQueue = DispatchQueue(label: "com.ivs.pip.frameCallback", qos: .userInteractive)
1107
+ device.setOnFrameCallbackQueue(frameQueue, includePixelBuffer: true) { [weak self] frame in
1108
+ guard let self = self else { return }
1109
+ if let pixelBuffer = frame.pixelBuffer {
1110
+ self.pipController.enqueueFrame(pixelBuffer)
1111
+ }
1112
+ }
1113
+ }
1114
+ } else {
1115
+ // For local streams (broadcaster), use device frame callback
1116
+ print("🖼️ [PiP] Using device frame callback for local stream")
1117
+ let frameQueue = DispatchQueue(label: "com.ivs.pip.frameCallback", qos: .userInteractive)
1118
+ device.setOnFrameCallbackQueue(frameQueue, includePixelBuffer: true) { [weak self] frame in
1119
+ guard let self = self else { return }
1120
+ if let pixelBuffer = frame.pixelBuffer {
1121
+ self.pipController.enqueueFrame(pixelBuffer)
1122
+ }
1103
1123
  }
1104
1124
  }
1105
1125
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-realtime-ivs-broadcast",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
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",