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

Public API availability for AirPods custom EQ in iOS 27
Hi, Is there a public API in iOS 27 to read or modify the Low, Mid, and High values of the AirPods custom EQ shown in Settings? Specifically, I’m asking about the device-level EQ on AirPods Pro, rather than in-app audio processing using AVAudioUnitEQ. If no public API is available, is there a system-provided Shortcuts action or another officially supported way to access these settings? Thank you.
0
0
166
Sep ’26
Signaling Mach semaphores from an IOProc
What is the official stance on the safety of signaling Mach semaphores from within a Core Audio real-time context? The most recent guidance I can find says: To ensure glitch-free performance, audio processing must occur in a real-time safe context. Don’t allocate memory, perform file I/O, take locks, or interact with the Swift or Objective-C runtimes when rendering audio. Mach semaphores have internal synchronization primitives (a spinlock and perhaps others) but I also believe that the scheduling priority level is elevated internally to prevent priority inversion. So while it seems that Mach semaphores could be prohibited I wonder if that is truly the case here. So while a call to semaphore_signal does involve locks, in a Core Audio real-time context, is it safe?
0
0
326
Sep ’26
EXIF metadata is stripped when creating an asset via addResource(with:.photo, data:) on iOS 26.6
Starting with iOS 26.6, saving an image to the photo library via PHAssetCreationRequest.addResource(with: .photo, data:, options:) appears to re-encode the image, dropping all EXIF metadata. The same code preserved metadata through iOS 26.5. let creationRequest = PHAssetCreationRequest.forAsset() creationRequest.addResource(with: .photo, data: image, options: nil) I would like to know whether this change is intentional, and whether the file-based overload is the supported way to preserve an image's original metadata. What we verified The bytes we hand to PhotoKit still contain the metadata. Setting contentType explicitly does not help. We resolved the type from the data and confirmed at runtime that it was non-nil (public.jpeg): let options = PHAssetResourceCreationOptions() if #available(iOS 26.0, *) { options.contentType = contentType // verified: UTType.jpeg, not nil } let request = PHAssetCreationRequest.forAsset() request.addResource(with: .photo, data: imageData, options: options) The resulting asset still has no EXIF. Writing the identical bytes to a temporary file and using the file-based overload preserves everything: try imageData.write(to: temporaryFileURL, options: .atomic) let options = PHAssetResourceCreationOptions() options.shouldMoveFile = true let request = PHAssetCreationRequest.forAsset() request.addResource(with: .photo, fileURL: temporaryFileURL, options: options) Capture date, camera information and location are all intact. We access the library with PHAccessLevel.addOnly.
1
0
1k
Sep ’26
How can an app detect a TrueDepth pipeline failure when no depth output or drop callback is delivered?
How can an app detect a TrueDepth pipeline failure when no depth output or drop callback is delivered? We are using AVFoundation to stream synchronized RGB and depth data from the front-facing TrueDepth camera. On a small number of physical devices, the capture session and RGB stream remain healthy, but the depth pipeline becomes silent or returns unusable data. We would like to understand the intended public-API behavior and the supported way to detect this state without relying on private system logs or an application-defined timeout. We need an AVFoundation-only solution rather than ARKit. Capture configuration Our setup follows Apple's TrueDepth streaming sample: Discover .builtInTrueDepthCamera. Select an activeFormat with a nonempty supportedDepthDataFormats list. Set a supported activeDepthDataFormat, typically DepthFloat16. Add AVCaptureVideoDataOutput and AVCaptureDepthDataOutput. Enable the .depthData connection. Test both direct depth delegate delivery and AVCaptureDataOutputSynchronizer. Observe capture-session runtime errors, interruptions, connection state, and system pressure. The same code and configuration continuously deliver valid RGB and depth frames on healthy control devices. Observed failure modes 1. No depth callback of any kind The video delegate continues to receive RGB frames at the expected rate. The depth connection reports enabled and active. The capture session remains running. No AVCaptureSessionRuntimeErrorNotification or interruption is reported. System pressure is nominal. depthDataOutput(_:didOutput:timestamp:connection:) is never called. depthDataOutput(_:didDrop:timestamp:connection:reason:) is also never called. With AVCaptureDataOutputSynchronizer, RGB synchronization points may continue, but no AVCaptureSynchronizedDepthData object is present for the depth output. 2. One depth frame, followed by permanent silence On other affected devices, one depth frame is delivered shortly after startup, while hundreds of later RGB frames continue with no further depth output or drop callback. 3. A depth object is delivered, but the map is unusable We have also observed an AVDepthData object whose map is empty or has no usable spatial information, for example: a zero-sized/empty depth representation; an unfiltered map containing only NaN; or a filtered map containing a single constant value across nearly all pixels. Metadata such as depth quality, accuracy, calibration availability, supported formats, and connection state does not reliably distinguish these frames from healthy ones. Relevant documented behavior The documentation for AVCaptureSynchronizedDepthData.depthDataWasDropped says that a dropped depth object is different from a synchronization timestamp for which no depth capture occurred. In the latter case, no AVCaptureSynchronizedDepthData object is present in the collection. The documentation for depthDataOutput(_:didDrop:timestamp:connection:reason:) says that the callback reports captured depth data that wasn't processed, with an empty-shell AVDepthData object. This appears to leave a diagnostic gap: if the TrueDepth pipeline fails before a depth object is produced, the application may receive neither an output callback nor a drop callback. System-log correlation We do not want to depend on these private and undocumented strings, but sysdiagnose/device logs from affected devices correlate the public-API silence with messages such as: Can't activate Pearl projector: no projector token found PROJECTOR ON DENIED Object too close (no depth) GMC status: -2 Projector GMC hasn't completed yet - dropping depth/dx buffers Pulses exceed limit. Projector Off In the first group, depth delivery never starts. In the second group, depth may never start or may stop after one frame. RGB capture can remain active in both cases. These logs suggest that depth or disparity buffers can be rejected before they reach AVCaptureDepthDataOutput, which would explain why the application sees neither didOutput nor didDrop. However, none of these projector, IR, calibration, protection, or token states appears to be exposed by a public API. Questions Is it expected that AVCaptureDepthDataOutput delivers neither didOutput nor didDrop when no depth object is produced upstream? Is the absence of AVCaptureSynchronizedDepthData from a synchronization collection the only public signal for this condition? Is there a supported API, notification, KVO property, or error that reports that the TrueDepth IR/projector/depth provider is unavailable, disabled, protected, stalled, or unable to produce data? Can an app distinguish a healthy but temporarily delayed depth stream from a pipeline that will never deliver depth, other than by implementing its own timeout and frame-count watchdog? Is there a documented validity rule for an empty, all-NaN, or near-constant AVDepthData.depthDataMap? Should applications treat these as unavailable depth even when the AVDepthData metadata reports a normal quality or accuracy? What is the recommended recovery procedure: rebuild AVCaptureDepthDataOutput, restart the capture session, switch cameras and switch back, wait for a system notification, or stop retrying until the device state changes? ARKit can report ARError.sensorFailed when a required sensor does not deliver input. Is there an AVFoundation equivalent that identifies which required input failed, without adopting ARKit? If no public signal currently exists, would Apple consider exposing a depth-provider status/error callback that distinguishes at least: captured but dropped; no depth capture for the timestamp; provider temporarily unavailable; and provider disabled or failed until recovery/service? We can provide a minimal sample project, affected-device sysdiagnose, and synchronized timestamp traces in Feedback Assistant if that would help. Please let us know which diagnostics and logging profiles would be most useful.
0
0
202
Sep ’26
Screen capture of other apps without the broadcast picker — any public API?
Two quick questions about ReplayKit on iOS: Is there any public API or entitlement that lets an app capture the screen while another app is in the foreground without presenting RPSystemBroadcastPickerView each session? Is custom-content Picture-in-Picture (AVSampleBufferDisplayLayer with AVPictureInPictureController) considered acceptable for a non-video status overlay, or is Live Activities the intended surface for that? Thanks.
0
0
435
Sep ’26
PHAssetChangeRequest deleteAssets completionHandler for recently captured 48MP DNG sometimes never called
I want to report a issue on PHAssetChangeRequest.deleteAssets Environment iOS 18.5, iOS 26.2.5, iOS 27.0 Steps to Reproduce Capture a 48MP ProRAW (DNG) photo with the Camera app. Open my app, call the following api to delete this photo: PHPhotoLibrary.shared().performChanges({ PHAssetChangeRequest.deleteAssets(assets) }, completionHandler: completionHandler) Expected The system delete-confirmation dialog appears; after the user confirms, the asset is deleted and the completionHandler is called or report error if it failed Actual Sometime the following issue happens: The confirmation dialog never appears and the completionHandler is never called no success, no error, no timeout. The built-in Photos app can delete the affected asset but API can't. The stuck request leaks permanently. Even after the same asset is subsequently deleted via the built-in Photos app, the pending completionHandler is still never invoked. Workaround for this issue When the issue happens, restarting the iPhone or reinstall app can not help to fix it But I found if I leave the device alone for an extended period (maybe 10 min~1 hour) and restart the iPhone, finally I found PHAssetChangeRequest.deleteAssets work again. It looks like some background task for 48MP RAW image in DNG format stuck delete API. I need to wait the task finished and restart device to reset stuck status. But I can not know when the DNG is ready to delete, it looks like my app hangs I think the better behavior is completion block should return a error to tell user what happens instead of not calling completion block.
2
0
1.4k
Sep ’26
### HEVC/H.265 playback works on iPhone 13 and iPhone 15 but fails on iPhone X and iPhone 17 Pro Max
Hi Apple Developer Community, I’m investigating an HEVC/H.265 playback issue in an iOS application and would appreciate some guidance regarding device-level HEVC compatibility and AVFoundation/VideoToolbox behavior. Our application plays video content encoded in both H.264 and H.265 (HEVC). Current observations The same H.265 video content produces the following results: Device H.264 H.265 iPhone X Works Does not play iPhone 13 Works Works iPhone 15 Works Works iPhone 17 Pro Max Works Does not play H.264 playback works consistently across all tested devices. The interesting part is that H.265 works on the iPhone 13 and iPhone 15, but does not work on either the older iPhone X or the newer iPhone 17 Pro Max. This makes me unsure whether the issue is related to the device's HEVC hardware decoder, a specific HEVC profile/level/pixel format, codec/container signaling, or the playback framework. Questions Are there known differences in HEVC/H.265 decoding capabilities or supported profiles between these iPhone generations that could explain this behavior? Can a newer device such as the iPhone 17 Pro Max have compatibility limitations with a particular HEVC stream that successfully plays on an iPhone 13 or iPhone 15? Are there specific HEVC parameters that I should compare when troubleshooting this, such as: HEVC profile (Main / Main 10) Level and tier 8-bit vs 10-bit Pixel format Chroma subsampling (4:2:0 / 4:2:2) Resolution and frame rate Bitrate HDR10 / HLG / SDR Color primaries / transfer characteristics hvc1 vs hev1 MP4/fMP4 vs MPEG-TS container Audio codec Is there an Apple-recommended API or method to determine at runtime whether a particular HEVC stream is supported by the current device before attempting playback? If using AVPlayer/AVPlayerItem, what is the recommended way to diagnose whether a failure is caused by: Unsupported HEVC characteristics VideoToolbox decoding Container/codec signaling Audio decoding AVFoundation Network/streaming configuration? Are there any differences in HEVC support between local MP4 playback and HLS/fMP4 playback that I should take into account? Additional investigation I am planning to inspect the exact video characteristics using ffprobe/MediaInfo and compare a working stream against a failing stream. For example, I intend to compare: Codec Codec tag (hvc1 / hev1) Profile Level Tier Bit depth Pixel format Resolution Frame rate Bitrate Chroma subsampling Color space HDR metadata Container Audio codec I will also test the same video outside the application to determine whether this is specific to our playback implementation or to the HEVC stream/device combination. Main question The main thing I would like to understand is: How can the same H.265 content be successfully decoded on an iPhone 13 and iPhone 15, while failing on both an older iPhone X and a much newer iPhone 17 Pro Max? Is there an Apple-documented compatibility matrix or recommended diagnostic approach for identifying which HEVC characteristic is responsible for this behavior? Any guidance on the relevant Apple documentation, AVFoundation APIs, VideoToolbox APIs, or known device-specific HEVC limitations would be greatly appreciated. Thank you.
0
0
183
Sep ’26
MainCameraAccess for CameraFrameProvider Broke Between Xcode v. 26.2 and 26.6
Good Evening, I have some old code that uses the CameraFrameProvider successfully when run through Xcode versions 26.0 and 26.2, but not for 26.6. I have double checked all Custom iOS Target Properties in the project's info tab to make sure all required capabilities are added. I also updated the enterprise license by adding a new entitlements file approving main-camera-access. Somewhere between Xcode 26.2 and Xcode 26.6 what has changed that affects the ability to use CameraFrameProvider and access the Main Camera? Thank you.
2
0
838
Sep ’26
Does the PhotoKit fix in iOS 27 beta 3 also cover PHImageManager requests that never call back?
I previously reported an issue where PHImageManager.requestImageDataAndOrientation() never calls its progress or completion handler. In this thread, it was mentioned that iOS 27 beta 3 fixes a PhotoKit hang involving the deletion of recently captured 48 MP ProRAW assets. I know these involve different APIs (PHPhotoLibrary and PHImageManager). But the behavior looks the same. The request hangs without ever calling back, and later PhotoKit requests get stuck as well. Will the PHImageManager issue I reported also be fixed when iOS 27 is officially released?
0
0
574
Sep ’26
iOS 26.6.2: Live Photos Fail to Save (Only When Using the JPEG+MOV Combination)
On iOS 26.6.2, Live Photos fail to save. This issue does not occur on iOS 27.0 RC. Devices Experiencing Issues iPhone 17 (iOS 26.6.2) iPhone 17 Pro MAX(iOS 26.6.2) iPad mini 5th generation (iPadOS 26.6.2) and might be others... Description 1. For HEVC+MOV, the Livephoto is saved successfully. If you write the code exactly as shown in the official instruction the Live Photo will be saved successfully. However, the reference code uses a combination of HEVC and MOV. let photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.hevc]) 2. For JPEG+MOV, Livephoto saving fails. Some users prefer JPEG files, which offer high compatibility. Therefore, we'll modify the code as follows. let photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.jpeg]) In this case, the AVFoundation recording process itself succeeds, but when attempting to save the result to the photo library using PhotoKit, it fails with the following error. error:The operation couldn’t be completed. (PHPhotosErrorDomain error 3302.) key: __NSCFString = "_PHResourceUrlsErrorKey" Here is the code for saving Live Photos. (This is exactly the same as the code in the official reference.) PHPhotoLibrary.shared().performChanges({ let creationRequest = PHAssetCreationRequest.forAsset() creationRequest.addResource(with: .photo, data: stillImageData, options: nil) let options = PHAssetResourceCreationOptions() options.shouldMoveFile = true creationRequest.addResource(with: .pairedVideo, fileURL: livePhotoMovieURL, options: options) }) { success, error in // Handle completion. } We've posted to Apple Feedback with Sysdiagnose. FB24760461
0
1
708
Sep ’26
PHPhotoLibrary.performChanges completionHandler not called when deleting assets on iOS 26
In my app, I use api provided in Photos framework to delete specified photo. But after upgrading to iOS 26, the delete function in some iOS device no longer work. The api will never triggers the system confirmation dialog, and the completionHandler is never called. In the iOS Photos app, deletion works correctly on the same assets, but calling the API from my app does not work. Steps to Reproduce Make sure the app has Full Photo Library Access. Execute the following code: PHPhotoLibrary.shared().performChanges({ let assetsToBeDeleted = PHAsset.fetchAssets(withLocalIdentifiers: delUrls, options: nil) PHAssetChangeRequest.deleteAssets(assetsToBeDeleted) }, completionHandler: completionHandler) Expected Behavior The system should present a confirmation dialog asking the user to delete the selected photos. After the user confirms, the deletion should occur, and the completionHandler should be called with success or error. Actual Behavior The system delete confirmation dialog does not appear. The completionHandler is never called. Environment iOS Versions: 26.1 / 26.0.1 It looks like api bug. I want to check Is it a know issue and will be fixed. Thanks
5
2
1.4k
Sep ’26
AirPods audio repeatedly cuts out under CPU and memory pressure on M5 Max MacBook Pro
I filed FB24725256 with a live macOS Bluetooth diagnostic, Sysdiagnose, and System Information Report. Environment: MacBook Pro (Mac17,6), Apple M5 Max, 128 GB RAM macOS 26.5 (25F71) AirPods Pro 3, firmware 8B41 AirPods selected for both input and output because microphone input is required for dictation and voice typing Problem: Bluetooth playback repeatedly stutters and cuts out during sustained local development and AI-agent workloads. The AirPods signal is strong (roughly -46 to -52 RSSI), and the Mac remains otherwise usable. Unified logs recorded repeated AudioSkywalkReadLoop overwait events in bluetoothd, commonly 50–69 ms and previously up to 795 ms. CoreAudio also reported HALS_OverloadMessage failures because a client exceeded its I/O-cycle budget and a safety violation occurred. Steps to reproduce: Connect AirPods Pro and keep them selected for input and output. Stream audio. Run sustained CPU- and memory-intensive development work, such as multiple builds, browser workloads, simulators, or local AI agents. Observe repeated playback interruptions as CPU load and memory compression increase. Expected: macOS should protect real-time CoreAudio and Bluetooth transport deadlines on this hardware without requiring productive work to be paused or throttled. The same AirPods stream reliably from much smaller Apple devices; Apple's highest-end Mac should maintain audio continuity too. This is a platform-quality failure on a high-end Mac. This appears related to longstanding reports: Simulator/Xcode causing AirPods distortion: https://developer.apple.com/forums/thread/668170 CoreAudio overloads and dropouts associated with memory pressure: https://developer.apple.com/forums/thread/677383 Bluetooth headset interruptions on newer macOS releases: https://developer.apple.com/forums/thread/763848 If you can reproduce this, please boost this thread and file your own Feedback Assistant report with fresh Bluetooth logs and a Sysdiagnose. Include the exact occurrence time and reference FB24725256 so Apple can connect the reports.I filed FB24725256 with a live macOS Bluetooth diagnostic, Sysdiagnose, and System Information Report. Environment: MacBook Pro (Mac17,6), Apple M5 Max, 128 GB RAM macOS 26.5 (25F71) AirPods Pro 3, firmware 8B41 AirPods selected for both input and output because microphone input is required for dictation and voice typing Problem: Bluetooth playback repeatedly stutters and cuts out during sustained local development and AI-agent workloads. The AirPods signal is strong (roughly -46 to -52 RSSI), and the Mac remains otherwise usable. Unified logs recorded repeated AudioSkywalkReadLoop overwait events in bluetoothd, commonly 50–69 ms and previously up to 795 ms. CoreAudio also reported HALS_OverloadMessage failures because a client exceeded its I/O-cycle budget and a safety violation occurred. Steps to reproduce: Connect AirPods Pro and keep them selected for input and output. Stream audio. Run sustained CPU- and memory-intensive development work, such as multiple builds, browser workloads, simulators, or local AI agents. Observe repeated playback interruptions as CPU load and memory compression increase. Expected: macOS should protect real-time CoreAudio and Bluetooth transport deadlines on this hardware without requiring productive work to be paused or throttled. The same AirPods stream reliably from much smaller Apple devices; Apple's highest-end Mac should maintain audio continuity too. This is a platform-quality failure on a high-end Mac. This appears related to longstanding reports: Simulator/Xcode causing AirPods distortion: https://developer.apple.com/forums/thread/668170 CoreAudio overloads and dropouts associated with memory pressure: https://developer.apple.com/forums/thread/677383 Bluetooth headset interruptions on newer macOS releases: https://developer.apple.com/forums/thread/763848 If you can reproduce this, please boost this thread and file your own Feedback Assistant report with fresh Bluetooth logs and a Sysdiagnose. Include the exact occurrence time and reference FB24725256 so Apple can connect the reports.
1
0
631
Sep ’26
AirPlay fails when Mac is connected to iPhone Personal Hotspot
AirPlay fails when Mac is connected to iPhone Personal Hotspot I’m using AVRoutePickerView to route audio from an iPhone app to a Mac with AirPlay Receiver enabled. What works When the iPhone and Mac are connected to the same Wi-Fi network, AirPlay routing works normally. Routing audio back to the iPhone speaker or to connected AirPods over Bluetooth also works correctly. What fails When the iPhone provides a Personal Hotspot and the Mac connects to that iPhone’s hotspot, the Mac still appears as an available destination in AVRoutePickerView. However, selecting the Mac fails with: Unable to connect to “[Mac Name]” Questions Is AirPlay routing from an iPhone hosting a Personal Hotspot to a Mac connected to that hotspot a supported network topology? If it is supported, are there any additional AVAudioSession, networking, entitlement, or AirPlay configuration requirements for this scenario? The fact that the Mac is successfully discovered and displayed by AVRoutePickerView, but the connection itself fails, is the part I’m particularly trying to understand. Thank you for any guidance on the expected behavior here.
0
0
736
Sep ’26
RemoteMediaSession started while the app is in the background no longer appears in Control Center (worked in earlier betas)
My app publishes a NowPlaying.RemoteMediaSession for music playing on speakers on the local network. While the app is in the background and someone taps play on my widget, that intent runs in my app process and wakes the app in the background — it can fetch the speaker state and start and update the remote session without any trouble. As of Beta 6, the session is created successfully but never shows up in Control Center or on the Lock Screen. It only appears the moment I bring my app to the foreground. In earlier betas the same code showed the session in control center, without needing to open the app. I don't call requestToBecomeSystemPrimary() and I don’t expect it to be set as primary, only when my app is in the foreground but at least the session should appear in control center or the lock screen as an option for the user to set it to system primary. FB24439526 has been submitted with Sysdiagnose attached.
1
2
212
Sep ’26
On iOS 26.6.1 and 26.6.2, Exif (XResolution / YResolution) values become 0 when an image attached in the Gmail app is saved to the Photos app
My app is built with Xcode 26.1 and uses a customized photo picker implemented with the PhotoKit Framework. After saving an image attached in the Gmail app to the Photos app on iOS 26.6.1 or iOS 26.6.2, when my app selects and loads that image, the Exif XResolution and YResolution values are both reported as 0. Is this an iOS bug? The following code retrieves the XResolution and YResolution values from the PHAsset of the selected image. private func selectAsset(_ asset: PHAsset) { let options = PHImageRequestOptions() options.isNetworkAccessAllowed = true options.deliveryMode = .highQualityFormat PHImageManager.default().requestImageDataAndOrientation(for: asset, options: options) { data, _, _, _ in DispatchQueue.main.async { if let data { let options = PHImageRequestOptions() options.isNetworkAccessAllowed = true options.deliveryMode = .highQualityFormat PHImageManager.default().requestImageDataAndOrientation(for: asset, options: options) { data, _, _, _ in guard let data, let source = CGImageSourceCreateWithData(data as CFData, nil), let properties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as? [CFString: Any], let tiff = properties[kCGImagePropertyTIFFDictionary] as? [CFString: Any] else { print("XResolution: NaN, YResolution: NaN") return } let xResolution = tiff[kCGImagePropertyTIFFXResolution] as? Double let yResolution = tiff[kCGImagePropertyTIFFYResolution] as? Double print("XResolution: \(xResolution.map { String($0) } ?? "NaN"), YResolution: \(yResolution.map { String($0) } ?? "NaN")") } } } } } Result on iOS 26.6 XResolution: 72, YResolution: 72 Result on iOS 26.6.1 and 26.6.2 XResolution: 0, YResolution: 0
1
0
194
Sep ’26
AVAssetDownloadConfiguration does not download supplemental tracks on iOS 16
We're downloading HLS content for offline playback using AVAssetDownloadConfiguration. It's critical for our app that all subtitle tracks are downloaded together with the video, so users can watch any subtitle and audio option while offline. On iOS 16, not all tracks are downloaded, and when the user goes offline, playback fails with NSURLErrorNotConnectedToInternet (error -1009) because AVFoundation tries to fetch the missing subtitle segments over the network. On iOS 17 and later, everything works as expected — all subtitle and audio tracks are downloaded. However, on iOS 16 we observe two issues: First issue: Supplemental tracks are not downloaded on iOS 16 (device) Only the default audio track is downloaded. All non-default supplemental tracks — both subtitles and additional audio tracks — exhibit the same problem: Some supplemental tracks listed in the manifest don't even get a directory created in the .movpkg package Some supplemental tracks do get a directory created, but it contains only StreamInfoBoot.xml and StreamInfoRoot.xml — no actual segment data (.frag files) is downloaded. The StreamInfoBoot.xml for these directories shows NO, 0, and 0, with Supplemental Additionally, a Manifest.m3u8 stream directory is created with Complete=NO and no segment data. On iOS 17+ devices, all supplemental track directories are created and all contain segment data. Second issue: Downloads fail entirely on iOS 16 Simulator We receive the following error: Error Domain=NSURLErrorDomain Code=-16090 UserInfo={ NSLocalizedDescription=The operation could not be completed, _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundAVAssetDownloadTask <DEC0D555-6C05-416C-91B8-F490F5A29046>.<3>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "BackgroundAVAssetDownloadTask <DEC0D555-6C05-416C-91B8-F490F5A29046>.<3>" ), NSLocalizedFailureReason=An unknown error occurred (-16090) } On iOS 17+ Simulators, downloads work without issues. Our setup: let urlAsset = AVURLAsset(url: manifestURL) let preferredMediaSelection = try await urlAsset.load(.allMediaSelections) let config = AVAssetDownloadConfiguration(asset: urlAsset, title: title) config.primaryContentConfiguration.mediaSelections = preferredMediaSelection let task = assetDownloadURLSession.makeAssetDownloadTask(downloadConfiguration: config) task.resume() Example HLS manifest: #EXTM3U #EXT-X-VERSION:7 #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",LANGUAGE="fr",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_25/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French (forced)",LANGUAGE="fr-x-cc",DEFAULT=NO,AUTOSELECT=YES,FORCED=YES,URI="s_31/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",LANGUAGE="en",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_37/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Kazakh",LANGUAGE="kk",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_43/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Uzbek",LANGUAGE="uz",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_49/stream.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud_ec3",NAME="French 5.1",LANGUAGE="fr",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="6",URI="a_18/stream.m3u8" #EXT-X-STREAM-INF:AUDIO="aud_ec3",SUBTITLES="subs",BANDWIDTH=1931408,VIDEO-RANGE=SDR,CODECS="hvc1.1.6.L90.90,ec-3",RESOLUTION=1024x428,FRAME-RATE=25,HDCP-LEVEL=NONE v_6/stream.m3u8 #EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI="skd://XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1" Questions: What is the correct way to make sure all supplemental tracks (subtitles, non-default audio) are actually downloaded on an iOS 16 real device? We pass asset.load(.allMediaSelections) to primaryContentConfiguration.mediaSelections — is there a different configuration, or should we use auxiliaryContentConfigurations, or something else entirely? Is there any way to make asset downloads work on the iOS 16 Simulator at all? We always get NSURLErrorDomain error -16090, while iOS 17+ Simulators work fine. If the supplemental tracks download bug on iOS 16 cannot be fixed or worked around from the app side, do you have any recommended approach for handling incomplete .movpkg packages at offline playback time?
1
0
551
Sep ’26
Variable aperture on the iPhone 18 Pro
Does iOS 27 provide an API which allows developers to set the iPhone 18 Pro camera's aperture? If it does, is the aperture going to be limited to just 4 discrete settings (like in the Camera app and like mentioned in the Tech Specs for the 18 Pro) or does the hypothetical iOS API allow us to set the aperture to a continuous value in the 0.0–1.0 range (similar to how a camera's focus can be set)?
2
1
907
Sep ’26
Capturing 48mp photos with .builtInTripleCamera
I am able to capture 48mp photos using .builtInWideAngleCamera, but it seems like .builtInTripleCamera is capped at 12mp? Is there a way to capture 48mp photos using .builtInTripleCamera? Because .builtInTripleCamera provides smooth transition between cameras during zooming, and I'd like to keep this behavior. New iPhone 17 Pro have all their cameras at 48mp. Is there a chance that their .builtInTripleCamera is capable of capturing 48mp? Or is this an API limitation?
4
0
1.2k
Sep ’26
Working with kCVPixelFormatType_96VersatileBayerPacked12
Whilst AVCaptureSession is setup to capture ProRes RAW video, is it possible to get video pixel data which can read and processed, such as using CIImage(cvPixelBuffer: ) AVCaptureVideoDataOutput outputs ProRes RAW in kCVPixelFormatType_96VersatileBayerPacked12 pixel format. Is there a provided way to debayer this pixel format into something more usable?
1
1
1.2k
Sep ’26
Public API availability for AirPods custom EQ in iOS 27
Hi, Is there a public API in iOS 27 to read or modify the Low, Mid, and High values of the AirPods custom EQ shown in Settings? Specifically, I’m asking about the device-level EQ on AirPods Pro, rather than in-app audio processing using AVAudioUnitEQ. If no public API is available, is there a system-provided Shortcuts action or another officially supported way to access these settings? Thank you.
Replies
0
Boosts
0
Views
166
Activity
Sep ’26
Signaling Mach semaphores from an IOProc
What is the official stance on the safety of signaling Mach semaphores from within a Core Audio real-time context? The most recent guidance I can find says: To ensure glitch-free performance, audio processing must occur in a real-time safe context. Don’t allocate memory, perform file I/O, take locks, or interact with the Swift or Objective-C runtimes when rendering audio. Mach semaphores have internal synchronization primitives (a spinlock and perhaps others) but I also believe that the scheduling priority level is elevated internally to prevent priority inversion. So while it seems that Mach semaphores could be prohibited I wonder if that is truly the case here. So while a call to semaphore_signal does involve locks, in a Core Audio real-time context, is it safe?
Replies
0
Boosts
0
Views
326
Activity
Sep ’26
EXIF metadata is stripped when creating an asset via addResource(with:.photo, data:) on iOS 26.6
Starting with iOS 26.6, saving an image to the photo library via PHAssetCreationRequest.addResource(with: .photo, data:, options:) appears to re-encode the image, dropping all EXIF metadata. The same code preserved metadata through iOS 26.5. let creationRequest = PHAssetCreationRequest.forAsset() creationRequest.addResource(with: .photo, data: image, options: nil) I would like to know whether this change is intentional, and whether the file-based overload is the supported way to preserve an image's original metadata. What we verified The bytes we hand to PhotoKit still contain the metadata. Setting contentType explicitly does not help. We resolved the type from the data and confirmed at runtime that it was non-nil (public.jpeg): let options = PHAssetResourceCreationOptions() if #available(iOS 26.0, *) { options.contentType = contentType // verified: UTType.jpeg, not nil } let request = PHAssetCreationRequest.forAsset() request.addResource(with: .photo, data: imageData, options: options) The resulting asset still has no EXIF. Writing the identical bytes to a temporary file and using the file-based overload preserves everything: try imageData.write(to: temporaryFileURL, options: .atomic) let options = PHAssetResourceCreationOptions() options.shouldMoveFile = true let request = PHAssetCreationRequest.forAsset() request.addResource(with: .photo, fileURL: temporaryFileURL, options: options) Capture date, camera information and location are all intact. We access the library with PHAccessLevel.addOnly.
Replies
1
Boosts
0
Views
1k
Activity
Sep ’26
How can an app detect a TrueDepth pipeline failure when no depth output or drop callback is delivered?
How can an app detect a TrueDepth pipeline failure when no depth output or drop callback is delivered? We are using AVFoundation to stream synchronized RGB and depth data from the front-facing TrueDepth camera. On a small number of physical devices, the capture session and RGB stream remain healthy, but the depth pipeline becomes silent or returns unusable data. We would like to understand the intended public-API behavior and the supported way to detect this state without relying on private system logs or an application-defined timeout. We need an AVFoundation-only solution rather than ARKit. Capture configuration Our setup follows Apple's TrueDepth streaming sample: Discover .builtInTrueDepthCamera. Select an activeFormat with a nonempty supportedDepthDataFormats list. Set a supported activeDepthDataFormat, typically DepthFloat16. Add AVCaptureVideoDataOutput and AVCaptureDepthDataOutput. Enable the .depthData connection. Test both direct depth delegate delivery and AVCaptureDataOutputSynchronizer. Observe capture-session runtime errors, interruptions, connection state, and system pressure. The same code and configuration continuously deliver valid RGB and depth frames on healthy control devices. Observed failure modes 1. No depth callback of any kind The video delegate continues to receive RGB frames at the expected rate. The depth connection reports enabled and active. The capture session remains running. No AVCaptureSessionRuntimeErrorNotification or interruption is reported. System pressure is nominal. depthDataOutput(_:didOutput:timestamp:connection:) is never called. depthDataOutput(_:didDrop:timestamp:connection:reason:) is also never called. With AVCaptureDataOutputSynchronizer, RGB synchronization points may continue, but no AVCaptureSynchronizedDepthData object is present for the depth output. 2. One depth frame, followed by permanent silence On other affected devices, one depth frame is delivered shortly after startup, while hundreds of later RGB frames continue with no further depth output or drop callback. 3. A depth object is delivered, but the map is unusable We have also observed an AVDepthData object whose map is empty or has no usable spatial information, for example: a zero-sized/empty depth representation; an unfiltered map containing only NaN; or a filtered map containing a single constant value across nearly all pixels. Metadata such as depth quality, accuracy, calibration availability, supported formats, and connection state does not reliably distinguish these frames from healthy ones. Relevant documented behavior The documentation for AVCaptureSynchronizedDepthData.depthDataWasDropped says that a dropped depth object is different from a synchronization timestamp for which no depth capture occurred. In the latter case, no AVCaptureSynchronizedDepthData object is present in the collection. The documentation for depthDataOutput(_:didDrop:timestamp:connection:reason:) says that the callback reports captured depth data that wasn't processed, with an empty-shell AVDepthData object. This appears to leave a diagnostic gap: if the TrueDepth pipeline fails before a depth object is produced, the application may receive neither an output callback nor a drop callback. System-log correlation We do not want to depend on these private and undocumented strings, but sysdiagnose/device logs from affected devices correlate the public-API silence with messages such as: Can't activate Pearl projector: no projector token found PROJECTOR ON DENIED Object too close (no depth) GMC status: -2 Projector GMC hasn't completed yet - dropping depth/dx buffers Pulses exceed limit. Projector Off In the first group, depth delivery never starts. In the second group, depth may never start or may stop after one frame. RGB capture can remain active in both cases. These logs suggest that depth or disparity buffers can be rejected before they reach AVCaptureDepthDataOutput, which would explain why the application sees neither didOutput nor didDrop. However, none of these projector, IR, calibration, protection, or token states appears to be exposed by a public API. Questions Is it expected that AVCaptureDepthDataOutput delivers neither didOutput nor didDrop when no depth object is produced upstream? Is the absence of AVCaptureSynchronizedDepthData from a synchronization collection the only public signal for this condition? Is there a supported API, notification, KVO property, or error that reports that the TrueDepth IR/projector/depth provider is unavailable, disabled, protected, stalled, or unable to produce data? Can an app distinguish a healthy but temporarily delayed depth stream from a pipeline that will never deliver depth, other than by implementing its own timeout and frame-count watchdog? Is there a documented validity rule for an empty, all-NaN, or near-constant AVDepthData.depthDataMap? Should applications treat these as unavailable depth even when the AVDepthData metadata reports a normal quality or accuracy? What is the recommended recovery procedure: rebuild AVCaptureDepthDataOutput, restart the capture session, switch cameras and switch back, wait for a system notification, or stop retrying until the device state changes? ARKit can report ARError.sensorFailed when a required sensor does not deliver input. Is there an AVFoundation equivalent that identifies which required input failed, without adopting ARKit? If no public signal currently exists, would Apple consider exposing a depth-provider status/error callback that distinguishes at least: captured but dropped; no depth capture for the timestamp; provider temporarily unavailable; and provider disabled or failed until recovery/service? We can provide a minimal sample project, affected-device sysdiagnose, and synchronized timestamp traces in Feedback Assistant if that would help. Please let us know which diagnostics and logging profiles would be most useful.
Replies
0
Boosts
0
Views
202
Activity
Sep ’26
Screen capture of other apps without the broadcast picker — any public API?
Two quick questions about ReplayKit on iOS: Is there any public API or entitlement that lets an app capture the screen while another app is in the foreground without presenting RPSystemBroadcastPickerView each session? Is custom-content Picture-in-Picture (AVSampleBufferDisplayLayer with AVPictureInPictureController) considered acceptable for a non-video status overlay, or is Live Activities the intended surface for that? Thanks.
Replies
0
Boosts
0
Views
435
Activity
Sep ’26
PHAssetChangeRequest deleteAssets completionHandler for recently captured 48MP DNG sometimes never called
I want to report a issue on PHAssetChangeRequest.deleteAssets Environment iOS 18.5, iOS 26.2.5, iOS 27.0 Steps to Reproduce Capture a 48MP ProRAW (DNG) photo with the Camera app. Open my app, call the following api to delete this photo: PHPhotoLibrary.shared().performChanges({ PHAssetChangeRequest.deleteAssets(assets) }, completionHandler: completionHandler) Expected The system delete-confirmation dialog appears; after the user confirms, the asset is deleted and the completionHandler is called or report error if it failed Actual Sometime the following issue happens: The confirmation dialog never appears and the completionHandler is never called no success, no error, no timeout. The built-in Photos app can delete the affected asset but API can't. The stuck request leaks permanently. Even after the same asset is subsequently deleted via the built-in Photos app, the pending completionHandler is still never invoked. Workaround for this issue When the issue happens, restarting the iPhone or reinstall app can not help to fix it But I found if I leave the device alone for an extended period (maybe 10 min~1 hour) and restart the iPhone, finally I found PHAssetChangeRequest.deleteAssets work again. It looks like some background task for 48MP RAW image in DNG format stuck delete API. I need to wait the task finished and restart device to reset stuck status. But I can not know when the DNG is ready to delete, it looks like my app hangs I think the better behavior is completion block should return a error to tell user what happens instead of not calling completion block.
Replies
2
Boosts
0
Views
1.4k
Activity
Sep ’26
### HEVC/H.265 playback works on iPhone 13 and iPhone 15 but fails on iPhone X and iPhone 17 Pro Max
Hi Apple Developer Community, I’m investigating an HEVC/H.265 playback issue in an iOS application and would appreciate some guidance regarding device-level HEVC compatibility and AVFoundation/VideoToolbox behavior. Our application plays video content encoded in both H.264 and H.265 (HEVC). Current observations The same H.265 video content produces the following results: Device H.264 H.265 iPhone X Works Does not play iPhone 13 Works Works iPhone 15 Works Works iPhone 17 Pro Max Works Does not play H.264 playback works consistently across all tested devices. The interesting part is that H.265 works on the iPhone 13 and iPhone 15, but does not work on either the older iPhone X or the newer iPhone 17 Pro Max. This makes me unsure whether the issue is related to the device's HEVC hardware decoder, a specific HEVC profile/level/pixel format, codec/container signaling, or the playback framework. Questions Are there known differences in HEVC/H.265 decoding capabilities or supported profiles between these iPhone generations that could explain this behavior? Can a newer device such as the iPhone 17 Pro Max have compatibility limitations with a particular HEVC stream that successfully plays on an iPhone 13 or iPhone 15? Are there specific HEVC parameters that I should compare when troubleshooting this, such as: HEVC profile (Main / Main 10) Level and tier 8-bit vs 10-bit Pixel format Chroma subsampling (4:2:0 / 4:2:2) Resolution and frame rate Bitrate HDR10 / HLG / SDR Color primaries / transfer characteristics hvc1 vs hev1 MP4/fMP4 vs MPEG-TS container Audio codec Is there an Apple-recommended API or method to determine at runtime whether a particular HEVC stream is supported by the current device before attempting playback? If using AVPlayer/AVPlayerItem, what is the recommended way to diagnose whether a failure is caused by: Unsupported HEVC characteristics VideoToolbox decoding Container/codec signaling Audio decoding AVFoundation Network/streaming configuration? Are there any differences in HEVC support between local MP4 playback and HLS/fMP4 playback that I should take into account? Additional investigation I am planning to inspect the exact video characteristics using ffprobe/MediaInfo and compare a working stream against a failing stream. For example, I intend to compare: Codec Codec tag (hvc1 / hev1) Profile Level Tier Bit depth Pixel format Resolution Frame rate Bitrate Chroma subsampling Color space HDR metadata Container Audio codec I will also test the same video outside the application to determine whether this is specific to our playback implementation or to the HEVC stream/device combination. Main question The main thing I would like to understand is: How can the same H.265 content be successfully decoded on an iPhone 13 and iPhone 15, while failing on both an older iPhone X and a much newer iPhone 17 Pro Max? Is there an Apple-documented compatibility matrix or recommended diagnostic approach for identifying which HEVC characteristic is responsible for this behavior? Any guidance on the relevant Apple documentation, AVFoundation APIs, VideoToolbox APIs, or known device-specific HEVC limitations would be greatly appreciated. Thank you.
Replies
0
Boosts
0
Views
183
Activity
Sep ’26
MainCameraAccess for CameraFrameProvider Broke Between Xcode v. 26.2 and 26.6
Good Evening, I have some old code that uses the CameraFrameProvider successfully when run through Xcode versions 26.0 and 26.2, but not for 26.6. I have double checked all Custom iOS Target Properties in the project's info tab to make sure all required capabilities are added. I also updated the enterprise license by adding a new entitlements file approving main-camera-access. Somewhere between Xcode 26.2 and Xcode 26.6 what has changed that affects the ability to use CameraFrameProvider and access the Main Camera? Thank you.
Replies
2
Boosts
0
Views
838
Activity
Sep ’26
Does the PhotoKit fix in iOS 27 beta 3 also cover PHImageManager requests that never call back?
I previously reported an issue where PHImageManager.requestImageDataAndOrientation() never calls its progress or completion handler. In this thread, it was mentioned that iOS 27 beta 3 fixes a PhotoKit hang involving the deletion of recently captured 48 MP ProRAW assets. I know these involve different APIs (PHPhotoLibrary and PHImageManager). But the behavior looks the same. The request hangs without ever calling back, and later PhotoKit requests get stuck as well. Will the PHImageManager issue I reported also be fixed when iOS 27 is officially released?
Replies
0
Boosts
0
Views
574
Activity
Sep ’26
iOS 26.6.2: Live Photos Fail to Save (Only When Using the JPEG+MOV Combination)
On iOS 26.6.2, Live Photos fail to save. This issue does not occur on iOS 27.0 RC. Devices Experiencing Issues iPhone 17 (iOS 26.6.2) iPhone 17 Pro MAX(iOS 26.6.2) iPad mini 5th generation (iPadOS 26.6.2) and might be others... Description 1. For HEVC+MOV, the Livephoto is saved successfully. If you write the code exactly as shown in the official instruction the Live Photo will be saved successfully. However, the reference code uses a combination of HEVC and MOV. let photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.hevc]) 2. For JPEG+MOV, Livephoto saving fails. Some users prefer JPEG files, which offer high compatibility. Therefore, we'll modify the code as follows. let photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.jpeg]) In this case, the AVFoundation recording process itself succeeds, but when attempting to save the result to the photo library using PhotoKit, it fails with the following error. error:The operation couldn’t be completed. (PHPhotosErrorDomain error 3302.) key: __NSCFString = "_PHResourceUrlsErrorKey" Here is the code for saving Live Photos. (This is exactly the same as the code in the official reference.) PHPhotoLibrary.shared().performChanges({ let creationRequest = PHAssetCreationRequest.forAsset() creationRequest.addResource(with: .photo, data: stillImageData, options: nil) let options = PHAssetResourceCreationOptions() options.shouldMoveFile = true creationRequest.addResource(with: .pairedVideo, fileURL: livePhotoMovieURL, options: options) }) { success, error in // Handle completion. } We've posted to Apple Feedback with Sysdiagnose. FB24760461
Replies
0
Boosts
1
Views
708
Activity
Sep ’26
PHPhotoLibrary.performChanges completionHandler not called when deleting assets on iOS 26
In my app, I use api provided in Photos framework to delete specified photo. But after upgrading to iOS 26, the delete function in some iOS device no longer work. The api will never triggers the system confirmation dialog, and the completionHandler is never called. In the iOS Photos app, deletion works correctly on the same assets, but calling the API from my app does not work. Steps to Reproduce Make sure the app has Full Photo Library Access. Execute the following code: PHPhotoLibrary.shared().performChanges({ let assetsToBeDeleted = PHAsset.fetchAssets(withLocalIdentifiers: delUrls, options: nil) PHAssetChangeRequest.deleteAssets(assetsToBeDeleted) }, completionHandler: completionHandler) Expected Behavior The system should present a confirmation dialog asking the user to delete the selected photos. After the user confirms, the deletion should occur, and the completionHandler should be called with success or error. Actual Behavior The system delete confirmation dialog does not appear. The completionHandler is never called. Environment iOS Versions: 26.1 / 26.0.1 It looks like api bug. I want to check Is it a know issue and will be fixed. Thanks
Replies
5
Boosts
2
Views
1.4k
Activity
Sep ’26
AirPods audio repeatedly cuts out under CPU and memory pressure on M5 Max MacBook Pro
I filed FB24725256 with a live macOS Bluetooth diagnostic, Sysdiagnose, and System Information Report. Environment: MacBook Pro (Mac17,6), Apple M5 Max, 128 GB RAM macOS 26.5 (25F71) AirPods Pro 3, firmware 8B41 AirPods selected for both input and output because microphone input is required for dictation and voice typing Problem: Bluetooth playback repeatedly stutters and cuts out during sustained local development and AI-agent workloads. The AirPods signal is strong (roughly -46 to -52 RSSI), and the Mac remains otherwise usable. Unified logs recorded repeated AudioSkywalkReadLoop overwait events in bluetoothd, commonly 50–69 ms and previously up to 795 ms. CoreAudio also reported HALS_OverloadMessage failures because a client exceeded its I/O-cycle budget and a safety violation occurred. Steps to reproduce: Connect AirPods Pro and keep them selected for input and output. Stream audio. Run sustained CPU- and memory-intensive development work, such as multiple builds, browser workloads, simulators, or local AI agents. Observe repeated playback interruptions as CPU load and memory compression increase. Expected: macOS should protect real-time CoreAudio and Bluetooth transport deadlines on this hardware without requiring productive work to be paused or throttled. The same AirPods stream reliably from much smaller Apple devices; Apple's highest-end Mac should maintain audio continuity too. This is a platform-quality failure on a high-end Mac. This appears related to longstanding reports: Simulator/Xcode causing AirPods distortion: https://developer.apple.com/forums/thread/668170 CoreAudio overloads and dropouts associated with memory pressure: https://developer.apple.com/forums/thread/677383 Bluetooth headset interruptions on newer macOS releases: https://developer.apple.com/forums/thread/763848 If you can reproduce this, please boost this thread and file your own Feedback Assistant report with fresh Bluetooth logs and a Sysdiagnose. Include the exact occurrence time and reference FB24725256 so Apple can connect the reports.I filed FB24725256 with a live macOS Bluetooth diagnostic, Sysdiagnose, and System Information Report. Environment: MacBook Pro (Mac17,6), Apple M5 Max, 128 GB RAM macOS 26.5 (25F71) AirPods Pro 3, firmware 8B41 AirPods selected for both input and output because microphone input is required for dictation and voice typing Problem: Bluetooth playback repeatedly stutters and cuts out during sustained local development and AI-agent workloads. The AirPods signal is strong (roughly -46 to -52 RSSI), and the Mac remains otherwise usable. Unified logs recorded repeated AudioSkywalkReadLoop overwait events in bluetoothd, commonly 50–69 ms and previously up to 795 ms. CoreAudio also reported HALS_OverloadMessage failures because a client exceeded its I/O-cycle budget and a safety violation occurred. Steps to reproduce: Connect AirPods Pro and keep them selected for input and output. Stream audio. Run sustained CPU- and memory-intensive development work, such as multiple builds, browser workloads, simulators, or local AI agents. Observe repeated playback interruptions as CPU load and memory compression increase. Expected: macOS should protect real-time CoreAudio and Bluetooth transport deadlines on this hardware without requiring productive work to be paused or throttled. The same AirPods stream reliably from much smaller Apple devices; Apple's highest-end Mac should maintain audio continuity too. This is a platform-quality failure on a high-end Mac. This appears related to longstanding reports: Simulator/Xcode causing AirPods distortion: https://developer.apple.com/forums/thread/668170 CoreAudio overloads and dropouts associated with memory pressure: https://developer.apple.com/forums/thread/677383 Bluetooth headset interruptions on newer macOS releases: https://developer.apple.com/forums/thread/763848 If you can reproduce this, please boost this thread and file your own Feedback Assistant report with fresh Bluetooth logs and a Sysdiagnose. Include the exact occurrence time and reference FB24725256 so Apple can connect the reports.
Replies
1
Boosts
0
Views
631
Activity
Sep ’26
AirPlay fails when Mac is connected to iPhone Personal Hotspot
AirPlay fails when Mac is connected to iPhone Personal Hotspot I’m using AVRoutePickerView to route audio from an iPhone app to a Mac with AirPlay Receiver enabled. What works When the iPhone and Mac are connected to the same Wi-Fi network, AirPlay routing works normally. Routing audio back to the iPhone speaker or to connected AirPods over Bluetooth also works correctly. What fails When the iPhone provides a Personal Hotspot and the Mac connects to that iPhone’s hotspot, the Mac still appears as an available destination in AVRoutePickerView. However, selecting the Mac fails with: Unable to connect to “[Mac Name]” Questions Is AirPlay routing from an iPhone hosting a Personal Hotspot to a Mac connected to that hotspot a supported network topology? If it is supported, are there any additional AVAudioSession, networking, entitlement, or AirPlay configuration requirements for this scenario? The fact that the Mac is successfully discovered and displayed by AVRoutePickerView, but the connection itself fails, is the part I’m particularly trying to understand. Thank you for any guidance on the expected behavior here.
Replies
0
Boosts
0
Views
736
Activity
Sep ’26
RemoteMediaSession started while the app is in the background no longer appears in Control Center (worked in earlier betas)
My app publishes a NowPlaying.RemoteMediaSession for music playing on speakers on the local network. While the app is in the background and someone taps play on my widget, that intent runs in my app process and wakes the app in the background — it can fetch the speaker state and start and update the remote session without any trouble. As of Beta 6, the session is created successfully but never shows up in Control Center or on the Lock Screen. It only appears the moment I bring my app to the foreground. In earlier betas the same code showed the session in control center, without needing to open the app. I don't call requestToBecomeSystemPrimary() and I don’t expect it to be set as primary, only when my app is in the foreground but at least the session should appear in control center or the lock screen as an option for the user to set it to system primary. FB24439526 has been submitted with Sysdiagnose attached.
Replies
1
Boosts
2
Views
212
Activity
Sep ’26
On iOS 26.6.1 and 26.6.2, Exif (XResolution / YResolution) values become 0 when an image attached in the Gmail app is saved to the Photos app
My app is built with Xcode 26.1 and uses a customized photo picker implemented with the PhotoKit Framework. After saving an image attached in the Gmail app to the Photos app on iOS 26.6.1 or iOS 26.6.2, when my app selects and loads that image, the Exif XResolution and YResolution values are both reported as 0. Is this an iOS bug? The following code retrieves the XResolution and YResolution values from the PHAsset of the selected image. private func selectAsset(_ asset: PHAsset) { let options = PHImageRequestOptions() options.isNetworkAccessAllowed = true options.deliveryMode = .highQualityFormat PHImageManager.default().requestImageDataAndOrientation(for: asset, options: options) { data, _, _, _ in DispatchQueue.main.async { if let data { let options = PHImageRequestOptions() options.isNetworkAccessAllowed = true options.deliveryMode = .highQualityFormat PHImageManager.default().requestImageDataAndOrientation(for: asset, options: options) { data, _, _, _ in guard let data, let source = CGImageSourceCreateWithData(data as CFData, nil), let properties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as? [CFString: Any], let tiff = properties[kCGImagePropertyTIFFDictionary] as? [CFString: Any] else { print("XResolution: NaN, YResolution: NaN") return } let xResolution = tiff[kCGImagePropertyTIFFXResolution] as? Double let yResolution = tiff[kCGImagePropertyTIFFYResolution] as? Double print("XResolution: \(xResolution.map { String($0) } ?? "NaN"), YResolution: \(yResolution.map { String($0) } ?? "NaN")") } } } } } Result on iOS 26.6 XResolution: 72, YResolution: 72 Result on iOS 26.6.1 and 26.6.2 XResolution: 0, YResolution: 0
Replies
1
Boosts
0
Views
194
Activity
Sep ’26
AVAssetDownloadConfiguration does not download supplemental tracks on iOS 16
We're downloading HLS content for offline playback using AVAssetDownloadConfiguration. It's critical for our app that all subtitle tracks are downloaded together with the video, so users can watch any subtitle and audio option while offline. On iOS 16, not all tracks are downloaded, and when the user goes offline, playback fails with NSURLErrorNotConnectedToInternet (error -1009) because AVFoundation tries to fetch the missing subtitle segments over the network. On iOS 17 and later, everything works as expected — all subtitle and audio tracks are downloaded. However, on iOS 16 we observe two issues: First issue: Supplemental tracks are not downloaded on iOS 16 (device) Only the default audio track is downloaded. All non-default supplemental tracks — both subtitles and additional audio tracks — exhibit the same problem: Some supplemental tracks listed in the manifest don't even get a directory created in the .movpkg package Some supplemental tracks do get a directory created, but it contains only StreamInfoBoot.xml and StreamInfoRoot.xml — no actual segment data (.frag files) is downloaded. The StreamInfoBoot.xml for these directories shows NO, 0, and 0, with Supplemental Additionally, a Manifest.m3u8 stream directory is created with Complete=NO and no segment data. On iOS 17+ devices, all supplemental track directories are created and all contain segment data. Second issue: Downloads fail entirely on iOS 16 Simulator We receive the following error: Error Domain=NSURLErrorDomain Code=-16090 UserInfo={ NSLocalizedDescription=The operation could not be completed, _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundAVAssetDownloadTask <DEC0D555-6C05-416C-91B8-F490F5A29046>.<3>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "BackgroundAVAssetDownloadTask <DEC0D555-6C05-416C-91B8-F490F5A29046>.<3>" ), NSLocalizedFailureReason=An unknown error occurred (-16090) } On iOS 17+ Simulators, downloads work without issues. Our setup: let urlAsset = AVURLAsset(url: manifestURL) let preferredMediaSelection = try await urlAsset.load(.allMediaSelections) let config = AVAssetDownloadConfiguration(asset: urlAsset, title: title) config.primaryContentConfiguration.mediaSelections = preferredMediaSelection let task = assetDownloadURLSession.makeAssetDownloadTask(downloadConfiguration: config) task.resume() Example HLS manifest: #EXTM3U #EXT-X-VERSION:7 #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",LANGUAGE="fr",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_25/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French (forced)",LANGUAGE="fr-x-cc",DEFAULT=NO,AUTOSELECT=YES,FORCED=YES,URI="s_31/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",LANGUAGE="en",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_37/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Kazakh",LANGUAGE="kk",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_43/stream.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Uzbek",LANGUAGE="uz",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="s_49/stream.m3u8" #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud_ec3",NAME="French 5.1",LANGUAGE="fr",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="6",URI="a_18/stream.m3u8" #EXT-X-STREAM-INF:AUDIO="aud_ec3",SUBTITLES="subs",BANDWIDTH=1931408,VIDEO-RANGE=SDR,CODECS="hvc1.1.6.L90.90,ec-3",RESOLUTION=1024x428,FRAME-RATE=25,HDCP-LEVEL=NONE v_6/stream.m3u8 #EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI="skd://XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1" Questions: What is the correct way to make sure all supplemental tracks (subtitles, non-default audio) are actually downloaded on an iOS 16 real device? We pass asset.load(.allMediaSelections) to primaryContentConfiguration.mediaSelections — is there a different configuration, or should we use auxiliaryContentConfigurations, or something else entirely? Is there any way to make asset downloads work on the iOS 16 Simulator at all? We always get NSURLErrorDomain error -16090, while iOS 17+ Simulators work fine. If the supplemental tracks download bug on iOS 16 cannot be fixed or worked around from the app side, do you have any recommended approach for handling incomplete .movpkg packages at offline playback time?
Replies
1
Boosts
0
Views
551
Activity
Sep ’26
Variable aperture on the iPhone 18 Pro
Does iOS 27 provide an API which allows developers to set the iPhone 18 Pro camera's aperture? If it does, is the aperture going to be limited to just 4 discrete settings (like in the Camera app and like mentioned in the Tech Specs for the 18 Pro) or does the hypothetical iOS API allow us to set the aperture to a continuous value in the 0.0–1.0 range (similar to how a camera's focus can be set)?
Replies
2
Boosts
1
Views
907
Activity
Sep ’26
Capturing 48mp photos with .builtInTripleCamera
I am able to capture 48mp photos using .builtInWideAngleCamera, but it seems like .builtInTripleCamera is capped at 12mp? Is there a way to capture 48mp photos using .builtInTripleCamera? Because .builtInTripleCamera provides smooth transition between cameras during zooming, and I'd like to keep this behavior. New iPhone 17 Pro have all their cameras at 48mp. Is there a chance that their .builtInTripleCamera is capable of capturing 48mp? Or is this an API limitation?
Replies
4
Boosts
0
Views
1.2k
Activity
Sep ’26
Working with kCVPixelFormatType_96VersatileBayerPacked12
Whilst AVCaptureSession is setup to capture ProRes RAW video, is it possible to get video pixel data which can read and processed, such as using CIImage(cvPixelBuffer: ) AVCaptureVideoDataOutput outputs ProRes RAW in kCVPixelFormatType_96VersatileBayerPacked12 pixel format. Is there a provided way to debayer this pixel format into something more usable?
Replies
1
Boosts
1
Views
1.2k
Activity
Sep ’26