Engineering
Display reconfigurations on macOS
Observing display reconfiguration changes on macOS. Moving from C function-pointer based API to a modern Swift AsyncStream.
Tom Lokhorst
Working with C callback functions in Swift using parameter packs
Moving from a C function-pointer based callback API to Swift closures with generics. And a look at the future with parameter packs.
AVAssetWriter leaking memory when segment data is used in Swift
Segment data delivered to AVAssetWriterDelegate is leaked when the delegate is implemented in Swift. You either need to implement the delegate in Objective-C or deallocate the data yourself. This issue is fixed by Apple in macOS 13.3.
Mathijs Kadijk
A look at ScreenCaptureKit on macOS Sonoma
The new macOS introduces three new features: Presenter Overlay to add your webcam to a screen share, a new screenshot API, and a built-in picker UI to select a window or screen to share.
AVAssetWriter crash creating CMAF compliant segments
Using AVAssetWriter to create CMAF compliant segments in realtime is unstable on Intel macs when the frame rate is dynamic. You either need to switch away from CMAF, disable expectsMediaDataInRealTime or ensure a stable frame rate.
Mentioning SCStreamError crashes on older macOS versions
A public service annoucement for those using ScreenCaptureKit in an app that also needs to run on macOS < 12.3 (Monterey).
Recording to disk using ScreenCaptureKit
Saving a screen capture to disk has some interesting edge cases when using ScreenCaptureKit. The documentation and WWDC videos don't really cover using the captured frame samples. We created an example.
Using async/await in a commandline tool on older macOS versions
Building a commandline tool using Swift concurrency isn't as straight forward as you'd hope. Running on macOS pre-12 linker errors appear and back deployment is undocumented. We figured it out and documented it in this article.
Recording to disk using AVCaptureScreenInput
On older macOS versions, ScreenCaptureKit isn't available. We created an example project demonstrating screen recording using the older AVCaptureScreenInput.