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.
- package/ios/IVSStageManager.swift +27 -7
- package/package.json +1 -1
|
@@ -1093,13 +1093,33 @@ class IVSStageManager: NSObject, IVSStageStreamDelegate, IVSStageStrategy, IVSSt
|
|
|
1093
1093
|
}
|
|
1094
1094
|
}
|
|
1095
1095
|
|
|
1096
|
-
//
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
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
|
}
|