Nonstrict
Home Blog
Join forces

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

Tom Lokhorst

July 10·3 min read

Engineering

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.

Tom Lokhorst

Tom Lokhorst

June 27·4 min read

Engineering

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

Mathijs Kadijk

June 21·3 min read

Engineering

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.

Tom Lokhorst

Tom Lokhorst

June 14·5 min read

Engineering

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.

Mathijs Kadijk

Mathijs Kadijk

May 26·2 min read

Engineering

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).

Tom Lokhorst

Tom Lokhorst

March 13·1 min read

Engineering

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.

Tom Lokhorst

Tom Lokhorst

January 31·7 min read

Engineering

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.

Mathijs Kadijk

Mathijs Kadijk

January 30·7 min read

Engineering

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.

Tom Lokhorst

Tom Lokhorst

January 29·2 min read
E-mail GitHub Mastodon Mathijs Kadijk on Mastodon Tom Lokhorst on Mastodon Twitter LinkedIn

© 2023 Nonstrict B.V. based in Amersfoort, The Netherlands — KVK 89067657