Skip to content

feat(ios): add blurIntensity support for PiP video call view#67

Closed
jedagen wants to merge 1 commit intolivekit:masterfrom
corner3-ai:feat/pip-blur-support
Closed

feat(ios): add blurIntensity support for PiP video call view#67
jedagen wants to merge 1 commit intolivekit:masterfrom
corner3-ai:feat/pip-blur-support

Conversation

@jedagen
Copy link

@jedagen jedagen commented Feb 27, 2026

Summary

  • Adds a blurIntensity option (0.0–1.0) to the iosPIP prop that overlays a variable-intensity UIVisualEffectView on the SampleBufferVideoCallView
  • Allows apps to blur the PiP camera feed for privacy (e.g. during screen sharing) without disabling the camera entirely
  • Uses UIViewPropertyAnimator with fractionComplete to support any blur level between 0 (off) and 1 (full)
  • Defaults to 0 (no blur) when not specified — no breaking change

Usage

<VideoTrack
  iosPIP={{
    startAutomatically: true,
    stopAutomatically: true,
    preferredSize: { width: 9, height: 16 },
    blurIntensity: 0.8,
  }}
/>

Motivation

When an app needs to blur the local camera for privacy (e.g. hiding sensitive content during screen share), the blur overlay rendered in React Native (BlurView) is invisible to the native AVPictureInPictureController — PiP only captures the SampleBufferVideoCallView's video layer. This means the PiP window shows the raw unblurred camera feed even when the in-app view is blurred.

The only workaround without this change is to disable the camera entirely when blur is needed, which kills the PiP window.

Changes

File Change
SampleBufferVideoCallView.h Added blurIntensity property (CGFloat)
SampleBufferVideoCallView.m UIVisualEffectView + UIViewPropertyAnimator with variable fractionComplete
PIPController.h Added blurIntensity property
PIPController.m Forwards blurIntensity to SampleBufferVideoCallView
RTCVideoViewManager.m Reads blurIntensity from iosPIP dict

Test plan

  • Set iosPIP={{ blurIntensity: 1.0, ... }} — PiP should show fully blurred feed
  • Set blurIntensity: 0.5 — PiP should show partially blurred feed
  • Set blurIntensity: 0 — PiP should show clear camera feed
  • Toggle blur while PiP is active — overlay should appear/disappear

🤖 Generated with Claude Code

@jedagen jedagen force-pushed the feat/pip-blur-support branch 2 times, most recently from a0e2abd to 596aa2e Compare February 27, 2026 20:34
Add a `blurIntensity` option (0.0–1.0) to the `iosPIP` prop that
overlays a variable-intensity UIVisualEffectView on the
SampleBufferVideoCallView. This allows apps to blur the PiP camera
feed for privacy without disabling the camera entirely.

Uses UIViewPropertyAnimator with fractionComplete to control
the blur amount, supporting any value between 0 (no blur) and
1 (full blur).

Usage:
  iosPIP={{ blurIntensity: 0.8, startAutomatically: true, ... }}

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jedagen jedagen force-pushed the feat/pip-blur-support branch from 596aa2e to f7a1025 Compare February 27, 2026 21:56
@corner3-ai corner3-ai closed this by deleting the head repository Feb 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants