Control system video effects support for CMIO extension

We're distributing a virtual camera with our app that does not profit in the slightest from automatically applied system video effects both to the video going in (physical camera device) or out (virtual camera device). I'm aware of setting NSCameraReactionEffectGesturesEnabledDefault in Info.plist and determining active video effects via AVCaptureDevice API. Those are obviously crutches, because having to tell users to go look for and click around in menu bar apps is the opposite of a great UX.

To make our product's video output more deterministic, I'm looking for a way to tell the CMIO subsystem that our virtual camera does not support any of the system video effects. I'm seeing properties like AVCaptureDevice.Format.isPortraitEffectSupported and AVCaptureDevice.Format.isStudioLightSupported whose documentation refers to the format's ability to support these effects. Since we're setting a CMFormatDescription via CMIOExtensionStreamSource.formats I was hoping to find something in the extensions, but wasn't successful so far.

Can this be done?

Answered by Media Engineer in 864289022

Hi atbf, We consider the choice of turning on video effects a user decision, not an app decision. But that said, there are ways to disqualify your video streams from being eligible for video effects. If you send a compressed stream (such as JPEG), video effects cannot be applied. Likewise, they only support video smaller than 1920 x 1440.

Accepted Answer

Hi atbf, We consider the choice of turning on video effects a user decision, not an app decision. But that said, there are ways to disqualify your video streams from being eligible for video effects. If you send a compressed stream (such as JPEG), video effects cannot be applied. Likewise, they only support video smaller than 1920 x 1440.

Thank you for the quick response. It's not the answer I was hoping for, but one in line with what I expected.

We consider the choice of turning on video effects a user decision, not an app decision.

This is a decision I can understand being made by Apple which I don't necessarily disagree with. However, I believe there should be two improvements made:

  1. Allow users to grant entitlement-based permission to apps to make the right decision for them. This leaves the ultimate decision with the user, while the app can optimize for its specialized use case.
  2. Allow apps to opt out of system video effects. Any app that needs to be in complete control of any effects applied to its video input and output to deliver its core feature needs this. It can't be in Apple's interest to add to the frustration on user side and developer side with the current landscape of especially video call software where every party involved is able to apply their own video effects and mostly does so on an opt-out basis. It does not lead up to any kind of "It just works" UX.
Control system video effects support for CMIO extension
 
 
Q