Explore the integration of media technologies within your app. Discuss working with audio, video, camera, and other media functionalities.

All subtopics
Posts under Media Technologies topic

Post

Replies

Boosts

Views

Activity

Can an AAC app start synthesized speech in an auto-answered cellular call while the iPhone is locked?
I am testing a native Swift iPhone app that adds synthesized speech to an existing cellular call using: AVAudioApplication microphone injection permission AVAudioSession.setPreferredMicrophoneInjectionMode(.spokenAudio) AVSpeechSynthesizer CXCallObserver The audio background mode Device: iPhone 16 Pro Carrier: Vodafone Romania iOS version: [enter exact version] Both the system “Add Audio in Calls” setting and the app permission are enabled. Confirmed behavior: With the app in the foreground, the iPhone’s accessibility Auto-Answer Calls feature answers the call, and the remote caller hears the synthesized greeting. Problem: With the iPhone locked, the phone answers automatically, but the greeting does not start. Logs show ringing, connected, and ended events being processed together when the app returns to the foreground. This suggests the app was suspended. The app does not record the call or play continuous audio while waiting. Questions: Is there a supported public API that lets this app wake or execute when a cellular call connects while the iPhone is locked? Can microphone injection support this use case without keeping the app in the foreground? If supported, what audio-session configuration and background execution mechanism should be used? If unsupported, can you confirm this limitation? I can provide a minimal sample project and diagnostic logs.
2
0
46
5h
Guideline 5.2.5: Apple Music previews as the subject of a music quiz
Hello, I'm building an iOS music quiz game. Players hear a song and answer a question about it, so the song itself is the content of the question, never background music. Each answer screen names the song and links to it on Apple Music. Non-subscribers would hear the catalog 30-second previews, and Apple Music subscribers the full songs through MusicKit (ApplicationMusicPlayer, with standard playback controls). Guideline 5.2.5 says previews "may not be used for their entertainment value (e.g. as the soundtrack to a game)", and the MusicKit terms say not to monetize access to Apple Music. Two questions: Is a preview that is the subject of a quiz question (not a soundtrack) an acceptable use for non-subscribers? Can such a game be a paid app or offer In-App Purchases, as long as the music is only previews or the player's own subscription? Any pointer to the right documentation or team would be appreciated. Thank you!
0
0
32
6h
Ultra Wide camera: frame-to-frame jitter below 2.0x and sharpness step at 2.0x during native zoom ramp (iPhone 17 Pro, 4K/60)
I am developing CineZoom, part of CameraControl, a remote camera-direction system (macOS app controlling an iPhone capture engine). Its core requirement is a smooth, repeatable cinematic zoom. On iPhone 17 Pro (iOS 26.5.1), using the physical Back Ultra Wide camera at 3840x2160, 60 fps, a single native ramp(toVideoZoomFactor:withRate:) from 1.7x to 2.1x over 5 seconds shows a visible stutter. I isolated it with a minimal diagnostic app (no networking) and analysed four tripod recordings frame by frame, in two locations with different lighting. The results are consistent across all four: Jitter below 2.0x: while the zoom factor is below 2.0, the image centre shifts about 2.8 px RMS between consecutive frames (peaks ~5 px), alternating almost every frame (26-28 Hz). Above 2.0x, during the same ramp at the same speed, it drops to 1.2-1.5 px. Sharpness step at 2.0x: centre-crop sharpness drops by 23-31% within a few frames exactly when the zoom factor crosses 2.0. There is no consistent effect at the reported secondaryNativeResolutionZoomFactors value (1.7838). The zoom command path itself is correct: the zoom measured from the image matches videoZoomFactor throughout, with no dropped or duplicated frames. Questions: Is this expected behaviour for the Ultra Wide camera in this zoom range? Is the jitter related to video stabilization or to how the sensor crop is positioned in this readout mode? Is there a public API that reports or controls the zoom factor at which this transition happens, so an app can plan around it? What configuration do you recommend for a smooth continuous video zoom across 1.7x-2.1x on this camera (format, stabilization mode, constituent-camera switching)? Are there existing APIs that would let an app detect or compensate this (per-frame stabilization/crop metadata, consistent processing during zoom, or a reduced-processing video stream)? I have a full technical report, per-frame measurements, charts and the original recordings, and I am happy to share them. Thank you!
0
0
38
10h
AVPlayer reports unexpected ~26-hour timeline
Hello, We are seeing an issue where AVPlayer sometimes reports time values close to 95,443 seconds (~26.5 hours), even though the actual content duration is much shorter. For example, in normal cases we see: currentTime: ~355 seconds duration: 6958 seconds seekableTimeRange: 0...6958 seconds However, in some cases AVPlayer reports values around: currentTime: ~95443 seconds duration: ~95449 seconds We checked the underlying MPEG-TS segments with ffprobe. The video and audio PTS values are around 6426 seconds and are consistent with the HLS EXTINF durations, so we do not see a 95,443-second timestamp directly in the media segments. Could you please help us understand: 1- Why can AVPlayer expose values close to 95,443 seconds? 2- Could this be related to MPEG-TS PTS wrap-around or AVFoundation timeline mapping? 3- How does AVPlayer calculate currentTime and AVPlayerItem.duration for HLS MPEG-TS content? Interestingly, Audio Only / Now Playing mode shows the expected timeline, while video playback can expose the incorrect values. Thank you.
0
0
139
17h
Using MusicKit to display a user’s currently playing Apple Music track
Hello, I’m evaluating a possible MusicKit integration and would like to clarify whether the following use is permitted. With the user’s explicit and revocable consent, our iOS app would read the song currently playing in Apple Music while our app is active and display the song title and artist to other users of our application. Our app would not play, stream, host, download or redistribute Apple Music audio. Music playback would remain entirely within Apple Music. When our app is closed, it would stop accessing Apple Music. The last synchronized song may remain displayed until the user opens our app again, at which point the currently playing song would be refreshed. If a displayed song is tapped, the user would be redirected to Apple Music. We are happy to follow Apple’s required formatting, attribution and linking rules. Album artwork is not required and can be omitted if necessary. The Apple Music functionality itself would remain free. Any monetization would relate only to separate features of the application. Could someone clarify: Is this use permitted under the MusicKit / Apple Music requirements? May the current song title and artist be displayed to other users in this way? Which official Apple framework/API is recommended for detecting the song currently playing in Apple Music while our app is active? Are there specific attribution or linking requirements for this use? Thank you.
1
0
590
23h
iPad (9th gen) headphone output ~2.5 to 4.5 dB quieter on iPadOS 27 (FB24980117)
Since iPadOS 27, the 3.5 mm headphone output on iPad (9th generation) is 2.4 to 4.5 dB quieter than on iPadOS 26, depending on frequency, with the same content, system volume and headphones. It's still present in iPadOS 27.2 beta 2 (24B5089g). It isn't app-specific. It reproduces in Safari: Connect wired headphones to the 3.5 mm jack and set system volume to 100%. Open https://www.szynalski.com/tone-generator/, set 3000 Hz, set the generator volume to 50%, and play. Measure with a sound level meter. At 3 kHz we see 2.5 to 2.9 dB less on iPadOS 27 than on iPadOS 26, across three different headphone models. Audio settings are identical between the two OS versions and Bluetooth is off. The only session-level difference we found is AVAudioSession.outputLatency, which went from 97 to 65 frames. Filed as FB24980117.
0
0
237
1d
SCStreamOutputType.audio delivers correctly-formed but all-zero PCM for VoIP background audio
Is silently zeroing .audio output for communications/VoIP-category background app audio (while leaving frame delivery, timing, and format metadata intact) expected, documented behavior on iOS? Is there an SCStreamConfiguration or SCContentFilter setting that unlocks this, or is this a known gap in the current iOS ScreenCaptureKit implementation relative to macOS (where .audio is documented/known to capture other apps' audio including calls)? A pointer to relevant documentation or a radar number would be very helpful. My test app: Rabbler Rabbler main use it turning voice to text transcriptions. ie. meeting notes. It works well using the iPhone mic or AirPods. It fails when Zoom or Teams meeting is joined. Audio is paused by a well handled interruption. But that yields lost transcription text. Environment iOS 27.0, physical device iPhone 15ProMax (not simulator) Xcode 27.0 (Build 27A266a), iPhoneOS27.0 SDK App target UIBackgroundModes: audio, screen-capture Capture another app's audio via SCStream's .audio output type, using SCContentSharingPicker for source selection, per the "Capturing screen content on iOS" sample's picker pattern. Setup (trimmed to the relevant parts) var configuration = SCContentSharingPickerConfiguration() configuration.showsMicrophoneControl = true picker.defaultConfiguration = configuration picker.add(self) picker.isActive = true picker.present() // contentSharingPicker(_:didUpdateWith:for:) -> startStream(with:) let config = SCStreamConfiguration() config.capturesAudio = true let newStream = SCStream(filter: filter, configuration: config, delegate: self) try newStream.addStreamOutput(seldlerQueue: .main) if filter.isMicrophoneEnabled { try newStream.addStreamOutputsampleHandlerQueue: .main) } try await newStream.startCapture( Sample-buffer handling, convertinmeasuring amplitude: func stream(_ stream: SCStream, deBuffer: CMSampleBuffer, of type:SCStreamOutputType) { guard sampleBuffer.isValid, tmicrophone else { return } // ... (format captured once from first buffer via CMAudioFormatDescriptionGetStream let frameCount = AVAudioFrameCount(CMSampleBufferGetNumSamples(sampleBuffer)) let pcmBuffer = AVAudioPCMBufmeCapacity: frameCount)! pcmBuffer.frameLength = frameCount let status = CMSampleBufferCost( sampleBuffer, at: 0, frameCount: Int32(frameCount), into: pcmBuffer.mutableAudioBufferList ) // status == noErr every time } Amplitude check on the resulting AVAudioPCMBuffer.floatChannelData: var peak: Float = 0, sumSquares: 0 for channel in 0..<Int(buffer.format.channelCount) { let samples = channelData[cha for frame in 0..<frameCount { let sample = samples[fram peak = max(peak, abs(sample)) sumSquares += sample * sa if sample != 0 { nonZeroCount += 1 } } } Result 1 — Music app selected as capture source (baseline, works correctly) Real audio content: writing the buffers straight to a .caf file via AVAudioFile produces a real, listenable ~9MB file matchihe capture duration (stereo, 48kHz, Float32). Confirmed by ear. Result 2 — Zoom call selected as capture source (fails silently) SCStream delivers buffers continuously and correctly-formed — same format every time (2 ch, 48000 Hz, Float32, deinterleaved)atus == noErr fromCMSampleBufferCopyPCMDataIntoAudioBufferList every time. But every sample is exactly zero: [2:17:19 PM] ScreenCaptureService: .audio first buffer format — <AVAudioFormat 0x12063fb60: 2ch, 48000 Hz, Float32, deinterlea [2:17:19 PM] ScreenCaptureService: .audio buffer #1 — peak=0.0 rms=0.0 nonZero=0/1920 [2:17:19 PM] ScreenCaptureService0.0 rms=0.0 nonZero=0/1920 ... [2:17:21 PM] ScreenCaptureServicek=0.0 rms=0.0 nonZero=0/1920 [2:18:27 PM] ScreenCaptureService: .audio buffer #3400 — peak=0.0 rms=0.0 nonZero=0/1920 That's peak=0.0/rms=0.0/0 nonZero samples across every single one of 3400+ consecutive buffersover ~70 seconds of an active Zoo Writing these buffers to a .caffile produces a valid, correctly-sized, completely silent audio file — not corrupted, not empty, genuinely all zeros. Control test — .microphone in theall With filter.isMicrophoneEnabled = on the same SCStream, during thesame Zoom call, correctly captures the local user's own voice (confirmed by ear from the resulting file) — even though the call is silently holding exclusive access to the mic hardware from Rabbler's own AVAudioEngine.inputNode tap (which gets interrupted, as expected). This rules out a session-wide permission failure -.micophone clearly has real access to audio in this exact session; .audio does not, specifically for this source. evidence now looks like this iOS 27 ScreenCaptureKit │ ├── SomaFM playback │ └── .audio → REAL PCM ✓ │ ├── Zoom remote audio │ └── .audio → ZERO PCM ✗ │ └── Teams remote audio └── .audio → ZERO PCM ✗
3
0
1k
1d
AVSpeechSynthesizer Enhanced voices produce silent audio in sandboxed Mac Catalyst app
I have reproduced an issue with AVSpeechSynthesizer on macOS 26.6.2 (25G83) using a minimal Mac Catalyst application. Environment macOS 26.6.2 (25G83) Apple Silicon Xcode 26.x Mac Catalyst AVSpeechSynthesizer Enhanced voice: com.apple.voice.enhanced.en-GB.Daniel The problem is specifically related to App Sandbox. Reproduction I created a completely new minimal Mac Catalyst application. With App Sandbox disabled: let synthesizer = AVSpeechSynthesizer() let utterance = AVSpeechUtterance(string: "Hello, this is a test.") utterance.voice = AVSpeechSynthesisVoice(identifier: "com.apple.voice.enhanced.en-GB.Daniel") synthesizer.speak(utterance) The Enhanced voice works normally. With App Sandbox enabled, with no other sandbox capabilities enabled, the same code no longer produces audible speech.
3
0
814
1d
Software volume for HDMI/DisplayPort outputs via process taps works; requesting a native option (FB24965962)
HDMI and DisplayPort audio devices expose no kAudioDevicePropertyVolumeScalar or kAudioDevicePropertyMute, so System Settings disables the volume slider and the media keys do nothing when such a display is the default output. Users end up installing virtual audio drivers or DDC/CI tools, and DDC does not pass through many HDMI paths at all. I wanted to check whether the behavior users expect can be provided with public API only, and it can: AudioHardwareCreateProcessTap with a CATapDescription that excludes the app's own process and uses CATapMutedWhenTapped, a private aggregate device with the tap as a sub-tap and the display as the main sub-device, and an IOProc that scales the tap input into the device output. The volume keys are captured with a session-level CGEvent tap. Source (three files, Swift and Objective-C): https://github.com/mevlut-geredeli/MonitorKeys Observations that may be useful to others using taps: The tap delivers IOProc callbacks only while some process is rendering; at idle there are none. That is expected, not a failure. Two process taps on the same device from different processes interfere with each other: AudioDeviceStart blocks until the other tap is torn down. The path works inside the App Sandbox with com.apple.security.device.audio-input; no microphone usage string is required for a tap. Since this is achievable in software, I filed FB24965962 requesting a per-device "control volume in software" option for these outputs, which would remove the need for the tap, the system audio permission and the Accessibility permission. If a Core Audio engineer can comment on whether that is a reasonable direction, I would be glad to test a seed build with this display (ViewSonic VX3276-QHD over HDMI, Mac mini M6, macOS 27.0 26A428).
0
0
244
2d
Can SensitiveContentAnalysis gate FairPlay-protected on-demand video before presentation?
Is there a supported public API on iOS/iPadOS 27 to apply SensitiveContentAnalysis to FairPlay Streaming-protected, on-demand HLS playback in AVPlayer, so that sensitive video is withheld before presentation, including after seeking or resuming, while preserving FairPlay protection? The intended behavior is on-device analysis of the actual protected presentation, with playback held until the required safety decision is available. This includes preventing the first sensitive frame from appearing and applying the corresponding audio intervention. The app must not obtain raw content keys or create a decrypted copy or clear proxy for analysis. I reviewed the public APIs and the iPhoneOS 27.0 SDK headers in Xcode 27.0 (27A266a): SCSensitivityAnalyzer's video-analysis entry point accepts a file URL; I have not found an entry point that attaches to an AVContentKeySession or a protected AVPlayerItem. SCVideoStreamAnalyzer is documented in terms of conference-call participants and incoming/outgoing streams. It accepts a capture-device input, a VTDecompressionSession, or individual pixel buffers. Its decompression-session path is documented to produce blank frames when sensitive content is detected, but I have not found a supported way to attach it to AVPlayer's FairPlay-protected decoding path. SCVideoStreamAnalyzer's initializer throws if both Communication Safety and Sensitive Content Warnings are off. Analysis would only be required when the relevant device policy is enabled. AVPlayer.h, lines 853–856, documents that allowsCaptureOfClearKeyVideo defaults to NO and has no effect on FairPlay Streaming content. I therefore cannot treat that property as a route to analyze protected frames through AVPlayerItemVideoOutput. Is SCVideoStreamAnalyzer supported for this protected on-demand use case? If so, which API connects it to the protected playback path, and what guarantees cover withholding sensitive frames and coordinating audio at initial playback, seek, and resume? If the requirement is unsupported with public APIs, confirmation of that limitation would help determine the product architecture. This is an API feasibility question based on documentation and header inspection. I do not yet have a focused reproduction project or a physical-device result, and I am not reporting a reproduced framework failure. References: https://developer.apple.com/documentation/sensitivecontentanalysis/scvideostreamanalyzer https://developer.apple.com/documentation/sensitivecontentanalysis/scsensitivityanalyzer/videoanalysishandler https://developer.apple.com/documentation/avfoundation/avplayer/allowscaptureofclearkeyvideo
0
0
230
2d
To Apple
Hello Apple, please bring back a feature called: “Walkie-Talkie”, To WatchOS27. That feature is convenient, it allows close family members and friends to communicate in a really fun way. Sincerely, Beny74
0
0
49
2d
Breaking change in Apple Music Recently Played API behavior
The Apple Music Recently Played API appears to have changed its behavior on 2026-08-05/2026-08-06. The endpoint no longer reports songs that are saved in a user's library. This impacts music tracking applications that rely on this API to retrieve listening history. Currently, tracks only appear in the Recently Played response when users stream them directly from the Apple Music catalog. If a user plays a song from their personal library, the playback is not reported by the endpoint and cannot be tracked. This is a breaking change that significantly affects existing integrations, but we could not find any announcement in the release notes or updates to the documentation regarding this behavior change. Could you please confirm whether this change is intentional? If so, we would appreciate updated documentation or guidance on how apps should handle tracking playback from a user's library.
10
6
1.9k
2d
Does activeLockedVideoFrameDuration limit fully manual exposure to half a frame?
On an iPhone 18 Pro running iOS 27, I’m seeing an interaction between locked frame timing and custom exposure. I configure the wide camera for 4K at 29.97 fps: input.activeLockedVideoFrameDuration = CMTime(value: 1001, timescale: 30000) With aperture and ISO fixed, I set exposure using the iOS 27 setExposureModeCustom(lensAperture:duration:iso:completionHandler:) API. A controlled comparison produced: 10 ms requested: timing lock ON → 10.000 ms; OFF → 10.000 ms. 16 ms requested: timing lock ON → 16.129 ms; OFF → 16.129 ms. 20 ms requested: timing lock ON → 16.667 ms; OFF → 20.000 ms. “OFF” means ordinary minimum and maximum frame durations both set to 1001/30000 seconds. These are exposure values from per-frame camera metadata after valid completion timestamps and a settling period. The behaviour occurs both idle and during recording. With the timing lock enabled, delivered frame timestamps show exact 30000/1001 pacing. Without it, fully manual capture measured approximately 29.964 fps. Separately, with shutter fixed at 20 ms but ISO automatic, the locked-timing configuration held 20 ms and exact 29.97. That suggests exposure ownership affects the behaviour. The documentation (https://developer.apple.com/documentation/avfoundation/avcapturedeviceinput/activelockedvideoframeduration) recommends exposure durations of half a frame or less to maintain full dynamic range, but doesn’t explicitly describe a duration clamp. Is this expected behaviour? Does fully manual exposure impose a half-frame ceiling when locked frame timing is active? Is there an API to query that effective limit? The format’s advertised exposure range includes 20 ms. Is there a supported way to retain exact fractional frame timing and a longer fully manual exposure? I can provide a minimal reproducer and device diagnostics.
0
0
53
2d
Synchronizing sensor buffer rotation with articulated Duo display planes
Physical camera sensors deliver pixel buffers in native landscape orientation, requiring coordinate transformations when rendering into portrait or split viewports. What is the recommended pipeline design using AVCaptureDeviceDirectionCoordinator and AVCaptureDevice.RotationCoordinator to guarantee that live preview layers and photo captures remain upright across varying fold angles without manual Core Graphics or Core Image buffer rotation passes? Are there specific considerations when the view hierarchy bridges across the physical hinge division?
1
0
774
4d
RemoteMediaSessionExtension: Lock Screen / Dynamic Island occasionally fail to redraw mid-track; only recovers at the next track change or by foregrounding the app
I'm seeing an intermittent split between how different Now Playing surfaces reconcile with a RemoteMediaSessionExtension (the iOS 27 com.apple.nowplaying.remote-media extension point). Control Center and Apple Watch reliably show the current track. The Lock Screen and Dynamic Island occasionally get stuck on the previous track for the remainder of that track. They'll often self-correct once the next track change happens — but not always and never mid-track. The only way to fix it before the track ends is to bring the host app to the foreground. Setup: the extension receives APNs pushes carrying playback/metadata payloads from a third-party speaker system. Each push either resumes an already-alive extension process (update(:)) or cold-starts it (session(:)), which sets content/the Artwork provider closure and returns. All three surfaces read from that exact same synchronous content value — there is no code path in the extension that could serve them differently. Cleanest isolated repro on record (device log timestamps): one track was displaying correctly everywhere. The next track triggered a cold start; the extension decoded the push, resolved and prefetched real artwork, and had content fully populated within under a second. Moments later, that cached artwork was requested and served at Control Center's own request sizes, and Control Center updated correctly. Lock Screen and Dynamic Island made zero requests of any kind — no content query, no artwork fetch — for the entire remainder of that track. This doesn’t appear to be a problem with the apns pushes, I can see from my server that they are successfully sent and Control Center updates correctly but lockscreen and Dynamic Island do not. I tried reducing the artwork size as a test to see if this worked more reliably, but still faced similar issues. Apple Watch remains a consistently-correct surface alongside Control Center, reinforcing that this is isolated to whatever presentation machinery Lock Screen and Dynamic Island specifically share. Ruled out on my side: • Push delivery/decoding — the extension's own receive-time debug dump shows the correct decoded attributes before any surface renders. • Process suspension — this has been observed with the extension actively running throughout, proven by Control Center rendering fresh data from it during the same window. Questions: Is there a known issue where Lock Screen/Dynamic Island stop re-querying a RemoteMediaSessionExtension's content mid-track, after it's already been correctly delivered and rendered elsewhere (Control Center, Watch)? Is Lock Screen/Dynamic Island's own redraw path gated on the app process being foreground, similar to requestToBecomeSystemPrimary()'s documented foreground-only effect? If so, is there any supported way to trigger that reconciliation from a background extension update, short of the user opening the app? Is there a supported way to force-invalidate/redraw Lock Screen's and Dynamic Island's cached presentation for an existing session, without ending and restarting it (which would reset the user's Lock Screen state)?
0
0
430
4d
ScreenCaptureKit on iPadOS 27 is capped at 60 fps on 120Hz ProMotion devices, even with minimumFrameInterval set to 1/120
On an iPad Pro 11-inch (M4) running iPadOS 27.0 (24A437), ScreenCaptureKit delivers a maximum of 60 frames per second when capturing the entire screen, even while an app is rendering at 120 fps (confirmed with the Metal Performance HUD). What I tested: Default configuration: exactly 60 fps, with every frame timestamp spaced 16.67ms apart. Setting minimumFrameInterval to 1/120 and queueDepth to 8, both before starting the stream and through updateConfiguration after it started: the values are accepted and read back correctly, but delivery stays at exactly 60 fps. Smaller output sizes (1/4 and 1/8 of native resolution): still 60 fps. ReplayKit broadcast upload extension: also exactly 60 fps. Also, minimumFrameInterval and queueDepth are documented as available on iOS/iPadOS 27, but the iOS 27 SDK marks them as unavailable. Request: please allow ScreenCaptureKit to capture at the display's full refresh rate (up to 120 fps) on ProMotion devices when minimumFrameInterval asks for it, and make minimumFrameInterval available in the iOS SDK.
0
0
243
4d
Virtual Front Camera: Session lifecycle, MultiCam compatibility, and pipeline stability
We are very interested in the new Virtual Front Camera capability on iPhone Duo. When the physical chassis opens or closes, how does the Virtual Front Camera handle the underlying optical handoff? Specifically, does this transition occur seamlessly within an active AVCaptureSession / AVCaptureVideoDataOutput pipeline without interrupting delivery of video frames, or does it trigger reconfiguration notifications that require pausing the session? Additionally, can the Virtual Front Camera be paired with a rear capture device inside an AVCaptureMultiCamSession while maintaining real-time performance and reasonable thermal headroom?
1
0
359
5d
Testing capture workflows on the iPhone Duo Simulator: Synthetic inputs and mock feeds
In the current Xcode iPhone Duo simulator runtime, AVCaptureDevice.DiscoverySession does not expose physical or simulated camera devices, returning empty arrays and necessitating custom synthetic mock pipelines for UI and kinematic tests. Are there plans to introduce synthetic camera device emulation directly within the Duo CoreSimulator runtime? In the interim, what is Apple’s recommended architecture for verifying camera UI, preview rendering, and capture triggers on the Duo simulator target without diverging from production AVFoundation pipelines?
1
0
346
5d
Can an AAC app start synthesized speech in an auto-answered cellular call while the iPhone is locked?
I am testing a native Swift iPhone app that adds synthesized speech to an existing cellular call using: AVAudioApplication microphone injection permission AVAudioSession.setPreferredMicrophoneInjectionMode(.spokenAudio) AVSpeechSynthesizer CXCallObserver The audio background mode Device: iPhone 16 Pro Carrier: Vodafone Romania iOS version: [enter exact version] Both the system “Add Audio in Calls” setting and the app permission are enabled. Confirmed behavior: With the app in the foreground, the iPhone’s accessibility Auto-Answer Calls feature answers the call, and the remote caller hears the synthesized greeting. Problem: With the iPhone locked, the phone answers automatically, but the greeting does not start. Logs show ringing, connected, and ended events being processed together when the app returns to the foreground. This suggests the app was suspended. The app does not record the call or play continuous audio while waiting. Questions: Is there a supported public API that lets this app wake or execute when a cellular call connects while the iPhone is locked? Can microphone injection support this use case without keeping the app in the foreground? If supported, what audio-session configuration and background execution mechanism should be used? If unsupported, can you confirm this limitation? I can provide a minimal sample project and diagnostic logs.
Replies
2
Boosts
0
Views
46
Activity
5h
Guideline 5.2.5: Apple Music previews as the subject of a music quiz
Hello, I'm building an iOS music quiz game. Players hear a song and answer a question about it, so the song itself is the content of the question, never background music. Each answer screen names the song and links to it on Apple Music. Non-subscribers would hear the catalog 30-second previews, and Apple Music subscribers the full songs through MusicKit (ApplicationMusicPlayer, with standard playback controls). Guideline 5.2.5 says previews "may not be used for their entertainment value (e.g. as the soundtrack to a game)", and the MusicKit terms say not to monetize access to Apple Music. Two questions: Is a preview that is the subject of a quiz question (not a soundtrack) an acceptable use for non-subscribers? Can such a game be a paid app or offer In-App Purchases, as long as the music is only previews or the player's own subscription? Any pointer to the right documentation or team would be appreciated. Thank you!
Replies
0
Boosts
0
Views
32
Activity
6h
Ultra Wide camera: frame-to-frame jitter below 2.0x and sharpness step at 2.0x during native zoom ramp (iPhone 17 Pro, 4K/60)
I am developing CineZoom, part of CameraControl, a remote camera-direction system (macOS app controlling an iPhone capture engine). Its core requirement is a smooth, repeatable cinematic zoom. On iPhone 17 Pro (iOS 26.5.1), using the physical Back Ultra Wide camera at 3840x2160, 60 fps, a single native ramp(toVideoZoomFactor:withRate:) from 1.7x to 2.1x over 5 seconds shows a visible stutter. I isolated it with a minimal diagnostic app (no networking) and analysed four tripod recordings frame by frame, in two locations with different lighting. The results are consistent across all four: Jitter below 2.0x: while the zoom factor is below 2.0, the image centre shifts about 2.8 px RMS between consecutive frames (peaks ~5 px), alternating almost every frame (26-28 Hz). Above 2.0x, during the same ramp at the same speed, it drops to 1.2-1.5 px. Sharpness step at 2.0x: centre-crop sharpness drops by 23-31% within a few frames exactly when the zoom factor crosses 2.0. There is no consistent effect at the reported secondaryNativeResolutionZoomFactors value (1.7838). The zoom command path itself is correct: the zoom measured from the image matches videoZoomFactor throughout, with no dropped or duplicated frames. Questions: Is this expected behaviour for the Ultra Wide camera in this zoom range? Is the jitter related to video stabilization or to how the sensor crop is positioned in this readout mode? Is there a public API that reports or controls the zoom factor at which this transition happens, so an app can plan around it? What configuration do you recommend for a smooth continuous video zoom across 1.7x-2.1x on this camera (format, stabilization mode, constituent-camera switching)? Are there existing APIs that would let an app detect or compensate this (per-frame stabilization/crop metadata, consistent processing during zoom, or a reduced-processing video stream)? I have a full technical report, per-frame measurements, charts and the original recordings, and I am happy to share them. Thank you!
Replies
0
Boosts
0
Views
38
Activity
10h
Custom AVVideoCompositing on a composition-backed AVPlayerItem fails with AVErrorUnknown Xcode 27 beta 2 / beta 3
Trivial pass-through compositor fails on Xcode 27 (beta 2, beta 3); error code -11800 underlying error -12784. Repro included https://github.com/BugorBN/avplayer-custom-compositor-repro It works well on Xcode26 and lower
Replies
4
Boosts
3
Views
864
Activity
14h
AVPlayer reports unexpected ~26-hour timeline
Hello, We are seeing an issue where AVPlayer sometimes reports time values close to 95,443 seconds (~26.5 hours), even though the actual content duration is much shorter. For example, in normal cases we see: currentTime: ~355 seconds duration: 6958 seconds seekableTimeRange: 0...6958 seconds However, in some cases AVPlayer reports values around: currentTime: ~95443 seconds duration: ~95449 seconds We checked the underlying MPEG-TS segments with ffprobe. The video and audio PTS values are around 6426 seconds and are consistent with the HLS EXTINF durations, so we do not see a 95,443-second timestamp directly in the media segments. Could you please help us understand: 1- Why can AVPlayer expose values close to 95,443 seconds? 2- Could this be related to MPEG-TS PTS wrap-around or AVFoundation timeline mapping? 3- How does AVPlayer calculate currentTime and AVPlayerItem.duration for HLS MPEG-TS content? Interestingly, Audio Only / Now Playing mode shows the expected timeline, while video playback can expose the incorrect values. Thank you.
Replies
0
Boosts
0
Views
139
Activity
17h
Using MusicKit to display a user’s currently playing Apple Music track
Hello, I’m evaluating a possible MusicKit integration and would like to clarify whether the following use is permitted. With the user’s explicit and revocable consent, our iOS app would read the song currently playing in Apple Music while our app is active and display the song title and artist to other users of our application. Our app would not play, stream, host, download or redistribute Apple Music audio. Music playback would remain entirely within Apple Music. When our app is closed, it would stop accessing Apple Music. The last synchronized song may remain displayed until the user opens our app again, at which point the currently playing song would be refreshed. If a displayed song is tapped, the user would be redirected to Apple Music. We are happy to follow Apple’s required formatting, attribution and linking rules. Album artwork is not required and can be omitted if necessary. The Apple Music functionality itself would remain free. Any monetization would relate only to separate features of the application. Could someone clarify: Is this use permitted under the MusicKit / Apple Music requirements? May the current song title and artist be displayed to other users in this way? Which official Apple framework/API is recommended for detecting the song currently playing in Apple Music while our app is active? Are there specific attribution or linking requirements for this use? Thank you.
Replies
1
Boosts
0
Views
590
Activity
23h
iPad (9th gen) headphone output ~2.5 to 4.5 dB quieter on iPadOS 27 (FB24980117)
Since iPadOS 27, the 3.5 mm headphone output on iPad (9th generation) is 2.4 to 4.5 dB quieter than on iPadOS 26, depending on frequency, with the same content, system volume and headphones. It's still present in iPadOS 27.2 beta 2 (24B5089g). It isn't app-specific. It reproduces in Safari: Connect wired headphones to the 3.5 mm jack and set system volume to 100%. Open https://www.szynalski.com/tone-generator/, set 3000 Hz, set the generator volume to 50%, and play. Measure with a sound level meter. At 3 kHz we see 2.5 to 2.9 dB less on iPadOS 27 than on iPadOS 26, across three different headphone models. Audio settings are identical between the two OS versions and Bluetooth is off. The only session-level difference we found is AVAudioSession.outputLatency, which went from 97 to 65 frames. Filed as FB24980117.
Replies
0
Boosts
0
Views
237
Activity
1d
SCStreamOutputType.audio delivers correctly-formed but all-zero PCM for VoIP background audio
Is silently zeroing .audio output for communications/VoIP-category background app audio (while leaving frame delivery, timing, and format metadata intact) expected, documented behavior on iOS? Is there an SCStreamConfiguration or SCContentFilter setting that unlocks this, or is this a known gap in the current iOS ScreenCaptureKit implementation relative to macOS (where .audio is documented/known to capture other apps' audio including calls)? A pointer to relevant documentation or a radar number would be very helpful. My test app: Rabbler Rabbler main use it turning voice to text transcriptions. ie. meeting notes. It works well using the iPhone mic or AirPods. It fails when Zoom or Teams meeting is joined. Audio is paused by a well handled interruption. But that yields lost transcription text. Environment iOS 27.0, physical device iPhone 15ProMax (not simulator) Xcode 27.0 (Build 27A266a), iPhoneOS27.0 SDK App target UIBackgroundModes: audio, screen-capture Capture another app's audio via SCStream's .audio output type, using SCContentSharingPicker for source selection, per the "Capturing screen content on iOS" sample's picker pattern. Setup (trimmed to the relevant parts) var configuration = SCContentSharingPickerConfiguration() configuration.showsMicrophoneControl = true picker.defaultConfiguration = configuration picker.add(self) picker.isActive = true picker.present() // contentSharingPicker(_:didUpdateWith:for:) -> startStream(with:) let config = SCStreamConfiguration() config.capturesAudio = true let newStream = SCStream(filter: filter, configuration: config, delegate: self) try newStream.addStreamOutput(seldlerQueue: .main) if filter.isMicrophoneEnabled { try newStream.addStreamOutputsampleHandlerQueue: .main) } try await newStream.startCapture( Sample-buffer handling, convertinmeasuring amplitude: func stream(_ stream: SCStream, deBuffer: CMSampleBuffer, of type:SCStreamOutputType) { guard sampleBuffer.isValid, tmicrophone else { return } // ... (format captured once from first buffer via CMAudioFormatDescriptionGetStream let frameCount = AVAudioFrameCount(CMSampleBufferGetNumSamples(sampleBuffer)) let pcmBuffer = AVAudioPCMBufmeCapacity: frameCount)! pcmBuffer.frameLength = frameCount let status = CMSampleBufferCost( sampleBuffer, at: 0, frameCount: Int32(frameCount), into: pcmBuffer.mutableAudioBufferList ) // status == noErr every time } Amplitude check on the resulting AVAudioPCMBuffer.floatChannelData: var peak: Float = 0, sumSquares: 0 for channel in 0..<Int(buffer.format.channelCount) { let samples = channelData[cha for frame in 0..<frameCount { let sample = samples[fram peak = max(peak, abs(sample)) sumSquares += sample * sa if sample != 0 { nonZeroCount += 1 } } } Result 1 — Music app selected as capture source (baseline, works correctly) Real audio content: writing the buffers straight to a .caf file via AVAudioFile produces a real, listenable ~9MB file matchihe capture duration (stereo, 48kHz, Float32). Confirmed by ear. Result 2 — Zoom call selected as capture source (fails silently) SCStream delivers buffers continuously and correctly-formed — same format every time (2 ch, 48000 Hz, Float32, deinterleaved)atus == noErr fromCMSampleBufferCopyPCMDataIntoAudioBufferList every time. But every sample is exactly zero: [2:17:19 PM] ScreenCaptureService: .audio first buffer format — <AVAudioFormat 0x12063fb60: 2ch, 48000 Hz, Float32, deinterlea [2:17:19 PM] ScreenCaptureService: .audio buffer #1 — peak=0.0 rms=0.0 nonZero=0/1920 [2:17:19 PM] ScreenCaptureService0.0 rms=0.0 nonZero=0/1920 ... [2:17:21 PM] ScreenCaptureServicek=0.0 rms=0.0 nonZero=0/1920 [2:18:27 PM] ScreenCaptureService: .audio buffer #3400 — peak=0.0 rms=0.0 nonZero=0/1920 That's peak=0.0/rms=0.0/0 nonZero samples across every single one of 3400+ consecutive buffersover ~70 seconds of an active Zoo Writing these buffers to a .caffile produces a valid, correctly-sized, completely silent audio file — not corrupted, not empty, genuinely all zeros. Control test — .microphone in theall With filter.isMicrophoneEnabled = on the same SCStream, during thesame Zoom call, correctly captures the local user's own voice (confirmed by ear from the resulting file) — even though the call is silently holding exclusive access to the mic hardware from Rabbler's own AVAudioEngine.inputNode tap (which gets interrupted, as expected). This rules out a session-wide permission failure -.micophone clearly has real access to audio in this exact session; .audio does not, specifically for this source. evidence now looks like this iOS 27 ScreenCaptureKit │ ├── SomaFM playback │ └── .audio → REAL PCM ✓ │ ├── Zoom remote audio │ └── .audio → ZERO PCM ✗ │ └── Teams remote audio └── .audio → ZERO PCM ✗
Replies
3
Boosts
0
Views
1k
Activity
1d
AVSpeechSynthesizer Enhanced voices produce silent audio in sandboxed Mac Catalyst app
I have reproduced an issue with AVSpeechSynthesizer on macOS 26.6.2 (25G83) using a minimal Mac Catalyst application. Environment macOS 26.6.2 (25G83) Apple Silicon Xcode 26.x Mac Catalyst AVSpeechSynthesizer Enhanced voice: com.apple.voice.enhanced.en-GB.Daniel The problem is specifically related to App Sandbox. Reproduction I created a completely new minimal Mac Catalyst application. With App Sandbox disabled: let synthesizer = AVSpeechSynthesizer() let utterance = AVSpeechUtterance(string: "Hello, this is a test.") utterance.voice = AVSpeechSynthesisVoice(identifier: "com.apple.voice.enhanced.en-GB.Daniel") synthesizer.speak(utterance) The Enhanced voice works normally. With App Sandbox enabled, with no other sandbox capabilities enabled, the same code no longer produces audible speech.
Replies
3
Boosts
0
Views
814
Activity
1d
Software volume for HDMI/DisplayPort outputs via process taps works; requesting a native option (FB24965962)
HDMI and DisplayPort audio devices expose no kAudioDevicePropertyVolumeScalar or kAudioDevicePropertyMute, so System Settings disables the volume slider and the media keys do nothing when such a display is the default output. Users end up installing virtual audio drivers or DDC/CI tools, and DDC does not pass through many HDMI paths at all. I wanted to check whether the behavior users expect can be provided with public API only, and it can: AudioHardwareCreateProcessTap with a CATapDescription that excludes the app's own process and uses CATapMutedWhenTapped, a private aggregate device with the tap as a sub-tap and the display as the main sub-device, and an IOProc that scales the tap input into the device output. The volume keys are captured with a session-level CGEvent tap. Source (three files, Swift and Objective-C): https://github.com/mevlut-geredeli/MonitorKeys Observations that may be useful to others using taps: The tap delivers IOProc callbacks only while some process is rendering; at idle there are none. That is expected, not a failure. Two process taps on the same device from different processes interfere with each other: AudioDeviceStart blocks until the other tap is torn down. The path works inside the App Sandbox with com.apple.security.device.audio-input; no microphone usage string is required for a tap. Since this is achievable in software, I filed FB24965962 requesting a per-device "control volume in software" option for these outputs, which would remove the need for the tap, the system audio permission and the Accessibility permission. If a Core Audio engineer can comment on whether that is a reasonable direction, I would be glad to test a seed build with this display (ViewSonic VX3276-QHD over HDMI, Mac mini M6, macOS 27.0 26A428).
Replies
0
Boosts
0
Views
244
Activity
2d
How to import photos into Device Hub photos app (beta 3)
In the old simulator you were able to simply drag a photo or video from your desktop into the photos app within the simulator in order to use it for testing. That doesn't seem to be working yet in Device Hub. Is there a workaround or are we just waiting on this to be fixed?
Replies
7
Boosts
1
Views
2.4k
Activity
2d
Can SensitiveContentAnalysis gate FairPlay-protected on-demand video before presentation?
Is there a supported public API on iOS/iPadOS 27 to apply SensitiveContentAnalysis to FairPlay Streaming-protected, on-demand HLS playback in AVPlayer, so that sensitive video is withheld before presentation, including after seeking or resuming, while preserving FairPlay protection? The intended behavior is on-device analysis of the actual protected presentation, with playback held until the required safety decision is available. This includes preventing the first sensitive frame from appearing and applying the corresponding audio intervention. The app must not obtain raw content keys or create a decrypted copy or clear proxy for analysis. I reviewed the public APIs and the iPhoneOS 27.0 SDK headers in Xcode 27.0 (27A266a): SCSensitivityAnalyzer's video-analysis entry point accepts a file URL; I have not found an entry point that attaches to an AVContentKeySession or a protected AVPlayerItem. SCVideoStreamAnalyzer is documented in terms of conference-call participants and incoming/outgoing streams. It accepts a capture-device input, a VTDecompressionSession, or individual pixel buffers. Its decompression-session path is documented to produce blank frames when sensitive content is detected, but I have not found a supported way to attach it to AVPlayer's FairPlay-protected decoding path. SCVideoStreamAnalyzer's initializer throws if both Communication Safety and Sensitive Content Warnings are off. Analysis would only be required when the relevant device policy is enabled. AVPlayer.h, lines 853–856, documents that allowsCaptureOfClearKeyVideo defaults to NO and has no effect on FairPlay Streaming content. I therefore cannot treat that property as a route to analyze protected frames through AVPlayerItemVideoOutput. Is SCVideoStreamAnalyzer supported for this protected on-demand use case? If so, which API connects it to the protected playback path, and what guarantees cover withholding sensitive frames and coordinating audio at initial playback, seek, and resume? If the requirement is unsupported with public APIs, confirmation of that limitation would help determine the product architecture. This is an API feasibility question based on documentation and header inspection. I do not yet have a focused reproduction project or a physical-device result, and I am not reporting a reproduced framework failure. References: https://developer.apple.com/documentation/sensitivecontentanalysis/scvideostreamanalyzer https://developer.apple.com/documentation/sensitivecontentanalysis/scsensitivityanalyzer/videoanalysishandler https://developer.apple.com/documentation/avfoundation/avplayer/allowscaptureofclearkeyvideo
Replies
0
Boosts
0
Views
230
Activity
2d
To Apple
Hello Apple, please bring back a feature called: “Walkie-Talkie”, To WatchOS27. That feature is convenient, it allows close family members and friends to communicate in a really fun way. Sincerely, Beny74
Replies
0
Boosts
0
Views
49
Activity
2d
Breaking change in Apple Music Recently Played API behavior
The Apple Music Recently Played API appears to have changed its behavior on 2026-08-05/2026-08-06. The endpoint no longer reports songs that are saved in a user's library. This impacts music tracking applications that rely on this API to retrieve listening history. Currently, tracks only appear in the Recently Played response when users stream them directly from the Apple Music catalog. If a user plays a song from their personal library, the playback is not reported by the endpoint and cannot be tracked. This is a breaking change that significantly affects existing integrations, but we could not find any announcement in the release notes or updates to the documentation regarding this behavior change. Could you please confirm whether this change is intentional? If so, we would appreciate updated documentation or guidance on how apps should handle tracking playback from a user's library.
Replies
10
Boosts
6
Views
1.9k
Activity
2d
Does activeLockedVideoFrameDuration limit fully manual exposure to half a frame?
On an iPhone 18 Pro running iOS 27, I’m seeing an interaction between locked frame timing and custom exposure. I configure the wide camera for 4K at 29.97 fps: input.activeLockedVideoFrameDuration = CMTime(value: 1001, timescale: 30000) With aperture and ISO fixed, I set exposure using the iOS 27 setExposureModeCustom(lensAperture:duration:iso:completionHandler:) API. A controlled comparison produced: 10 ms requested: timing lock ON → 10.000 ms; OFF → 10.000 ms. 16 ms requested: timing lock ON → 16.129 ms; OFF → 16.129 ms. 20 ms requested: timing lock ON → 16.667 ms; OFF → 20.000 ms. “OFF” means ordinary minimum and maximum frame durations both set to 1001/30000 seconds. These are exposure values from per-frame camera metadata after valid completion timestamps and a settling period. The behaviour occurs both idle and during recording. With the timing lock enabled, delivered frame timestamps show exact 30000/1001 pacing. Without it, fully manual capture measured approximately 29.964 fps. Separately, with shutter fixed at 20 ms but ISO automatic, the locked-timing configuration held 20 ms and exact 29.97. That suggests exposure ownership affects the behaviour. The documentation (https://developer.apple.com/documentation/avfoundation/avcapturedeviceinput/activelockedvideoframeduration) recommends exposure durations of half a frame or less to maintain full dynamic range, but doesn’t explicitly describe a duration clamp. Is this expected behaviour? Does fully manual exposure impose a half-frame ceiling when locked frame timing is active? Is there an API to query that effective limit? The format’s advertised exposure range includes 20 ms. Is there a supported way to retain exact fractional frame timing and a longer fully manual exposure? I can provide a minimal reproducer and device diagnostics.
Replies
0
Boosts
0
Views
53
Activity
2d
Synchronizing sensor buffer rotation with articulated Duo display planes
Physical camera sensors deliver pixel buffers in native landscape orientation, requiring coordinate transformations when rendering into portrait or split viewports. What is the recommended pipeline design using AVCaptureDeviceDirectionCoordinator and AVCaptureDevice.RotationCoordinator to guarantee that live preview layers and photo captures remain upright across varying fold angles without manual Core Graphics or Core Image buffer rotation passes? Are there specific considerations when the view hierarchy bridges across the physical hinge division?
Replies
1
Boosts
0
Views
774
Activity
4d
RemoteMediaSessionExtension: Lock Screen / Dynamic Island occasionally fail to redraw mid-track; only recovers at the next track change or by foregrounding the app
I'm seeing an intermittent split between how different Now Playing surfaces reconcile with a RemoteMediaSessionExtension (the iOS 27 com.apple.nowplaying.remote-media extension point). Control Center and Apple Watch reliably show the current track. The Lock Screen and Dynamic Island occasionally get stuck on the previous track for the remainder of that track. They'll often self-correct once the next track change happens — but not always and never mid-track. The only way to fix it before the track ends is to bring the host app to the foreground. Setup: the extension receives APNs pushes carrying playback/metadata payloads from a third-party speaker system. Each push either resumes an already-alive extension process (update(:)) or cold-starts it (session(:)), which sets content/the Artwork provider closure and returns. All three surfaces read from that exact same synchronous content value — there is no code path in the extension that could serve them differently. Cleanest isolated repro on record (device log timestamps): one track was displaying correctly everywhere. The next track triggered a cold start; the extension decoded the push, resolved and prefetched real artwork, and had content fully populated within under a second. Moments later, that cached artwork was requested and served at Control Center's own request sizes, and Control Center updated correctly. Lock Screen and Dynamic Island made zero requests of any kind — no content query, no artwork fetch — for the entire remainder of that track. This doesn’t appear to be a problem with the apns pushes, I can see from my server that they are successfully sent and Control Center updates correctly but lockscreen and Dynamic Island do not. I tried reducing the artwork size as a test to see if this worked more reliably, but still faced similar issues. Apple Watch remains a consistently-correct surface alongside Control Center, reinforcing that this is isolated to whatever presentation machinery Lock Screen and Dynamic Island specifically share. Ruled out on my side: • Push delivery/decoding — the extension's own receive-time debug dump shows the correct decoded attributes before any surface renders. • Process suspension — this has been observed with the extension actively running throughout, proven by Control Center rendering fresh data from it during the same window. Questions: Is there a known issue where Lock Screen/Dynamic Island stop re-querying a RemoteMediaSessionExtension's content mid-track, after it's already been correctly delivered and rendered elsewhere (Control Center, Watch)? Is Lock Screen/Dynamic Island's own redraw path gated on the app process being foreground, similar to requestToBecomeSystemPrimary()'s documented foreground-only effect? If so, is there any supported way to trigger that reconciliation from a background extension update, short of the user opening the app? Is there a supported way to force-invalidate/redraw Lock Screen's and Dynamic Island's cached presentation for an existing session, without ending and restarting it (which would reset the user's Lock Screen state)?
Replies
0
Boosts
0
Views
430
Activity
4d
ScreenCaptureKit on iPadOS 27 is capped at 60 fps on 120Hz ProMotion devices, even with minimumFrameInterval set to 1/120
On an iPad Pro 11-inch (M4) running iPadOS 27.0 (24A437), ScreenCaptureKit delivers a maximum of 60 frames per second when capturing the entire screen, even while an app is rendering at 120 fps (confirmed with the Metal Performance HUD). What I tested: Default configuration: exactly 60 fps, with every frame timestamp spaced 16.67ms apart. Setting minimumFrameInterval to 1/120 and queueDepth to 8, both before starting the stream and through updateConfiguration after it started: the values are accepted and read back correctly, but delivery stays at exactly 60 fps. Smaller output sizes (1/4 and 1/8 of native resolution): still 60 fps. ReplayKit broadcast upload extension: also exactly 60 fps. Also, minimumFrameInterval and queueDepth are documented as available on iOS/iPadOS 27, but the iOS 27 SDK marks them as unavailable. Request: please allow ScreenCaptureKit to capture at the display's full refresh rate (up to 120 fps) on ProMotion devices when minimumFrameInterval asks for it, and make minimumFrameInterval available in the iOS SDK.
Replies
0
Boosts
0
Views
243
Activity
4d
Virtual Front Camera: Session lifecycle, MultiCam compatibility, and pipeline stability
We are very interested in the new Virtual Front Camera capability on iPhone Duo. When the physical chassis opens or closes, how does the Virtual Front Camera handle the underlying optical handoff? Specifically, does this transition occur seamlessly within an active AVCaptureSession / AVCaptureVideoDataOutput pipeline without interrupting delivery of video frames, or does it trigger reconfiguration notifications that require pausing the session? Additionally, can the Virtual Front Camera be paired with a rear capture device inside an AVCaptureMultiCamSession while maintaining real-time performance and reasonable thermal headroom?
Replies
1
Boosts
0
Views
359
Activity
5d
Testing capture workflows on the iPhone Duo Simulator: Synthetic inputs and mock feeds
In the current Xcode iPhone Duo simulator runtime, AVCaptureDevice.DiscoverySession does not expose physical or simulated camera devices, returning empty arrays and necessitating custom synthetic mock pipelines for UI and kinematic tests. Are there plans to introduce synthetic camera device emulation directly within the Duo CoreSimulator runtime? In the interim, what is Apple’s recommended architecture for verifying camera UI, preview rendering, and capture triggers on the Duo simulator target without diverging from production AVFoundation pipelines?
Replies
1
Boosts
0
Views
346
Activity
5d