Release Notes for v4.10.1 (2025.03.12) — Latest

 

Overview

 

Xcode Shenanigans

 

A few months ago I switched from Xcode 15 to Xcode 16 while retaining use of Swift 5. I naively assumed that would not cause any regressions. I was so wrong. The long term stability of the Streamie builds from Xcode 16 were incredibly bad. I’m guessing it has something to do with changing to the iOS / tvOS SDK v18. I started the process of reverting back to Xcode 15 after that. Yesterday, when pushing a new v4.10.1 TestFlight build, Xcode alerted me that come April, I would no longer be allowed to push builds from Xcode 15 / SDK v17. So, I’m once again moving to Xcode 16. In addition to stability issues, the new SDK also makes some unwelcome UI changes because I made the mistake of relying on built-in UI components. Let that be a lesson to ya’ll.

 

Xcode Dumb

 

Gentoo RTSP Server

 

I have been contemplating making a barebones RTSP server that I can use for various testing purposes with Streamie. Scalability testing would be one of those things. It’d also be nice to have an ONVIF server to be able to manually trigger events and that sort of thing. Anyway, I decided to let Grok take a stab at coding the RTSP server, which is internally named Gentoo.

 

Gentoo takes some parameters via URL which it uses to configure image generation and the video encoder. Frames are pushed to the RTSP client connections. Super easy. Super convenient. And a great way to find out where Streamie breaks in terms of number of concurrent video streams.

 

Gentoo RTSP

 

Going back to Grok for a moment, I was reasonably impressed with how much of the work it handled for me. It required prompting with specific knowledge of RTSP, and its code had some bugs that I was only able to fix because I understood RTSP, but overall it definitely saved me a lot of time and I doubt I would have gotten around to tackling this project without its assistance. Pretty awesome.

 

Changes

 

Adds

 

- Adds G.726 audio decoder support. If your camera uses G.726, Streamie now supports decoding, playing and recording this audio stream.

 

Changes

 

- Changes the timeout after which an alert can be displayed in-app to the user. This was formerly set to 18 hours. I'm trying out 4 hours now. You guys are way too eager to ignore important messages, so I'm making them more obnoxious.

 

Updates

 

- Updates the release notes for v4.10.1.

- Updates the Streamie Xcode project format to v16 from v3.2. I don't know why I'm doing this. I guess it can't hurt though. It probably will hurt.

- Updates the default QOS for the Dispatch Queue that StreamingSession uses for handing video frames to sinks. I'm thinking maybe this'll help get the display layer to be a little smoother under load?

- Updates the H.265 encoder settings to explicitly use _Main_AutoLevel, which is probably the default behavior, but at least now it is explicitly set.

 

Fixes

 

- Fixes a crash related to choosing a Function for a camera. The crash would occur when you've already enabled all available functions for that camera and you try to enable another one.

- Fixes some collection view related crashes in the camera configuration screens that had several async tasks happen during reload that caused a race condition. Specifically this impacted URL, ONVIF and UniFi camera configurations.

- Fixes a crash that can occur in CMCBufferView if one thread replaces self.format while another thread is counting on it being present.

- Fixes a crash that might be related to getting back a CGSize.zero from CVImageBufferGetDisplaySize().

- Fixes an exception related to purging old, cached recording files on the main queue.

- Fixes a crash in the Shares screen when a user taps on a placeholder cell in the Inactive section. This is another example of a copy-paste bug.

 

Improves

 

- Improves CMCBufferView by using the DisplayImmediately flag on sample buffers when appropriate.

- Improves the Settings => Integrations screen, converting it to the Screen v2 framework. The screen now features a placeholder cell when there are no integrations.

- Improves camera stream display information. In the case that a camera does not put frame rate information in the SDP, and its video encoder does not include frame timing information in the SPS (from which a frame rate can be calculated), Krill will now calculate a frame rate from the presentation times of two video frames.

 

Other

 

- Extracts BitReader from RawStreamingSession into CMCBitReader for reuse in G726Converter.

 

 

Details

 

Created: 1 month ago

Updated: 2 weeks ago

Author: Curtis Jones

Topics: Release Notes

 

About Streamie

 

Streamie provides a best-in-class user experience on your iPhone, iPad, Apple TV and Apple Silicon Mac, with an intuitive user interface that makes it simple to discover, stream, record, monitor and share your HomeKit, Google Nest, Ubiquiti UniFi Protect and ONVIF-compatible IP and RTSP cameras. Streamie keeps you informed with motion event notifications and it works with most cameras using its advanced audio and video codec support. You can watch your cameras from anywhere, record 24/7 to your private NAS, remotely manage multiple locations, device permissions and seamlessly synchronize settings across your devices; configure Hubitat smart home automations, live stream to YouTube and rely on the in-app technical support system when you need help -- and you can also reach us by phone. Download Streamie today for all of your CCTV needs.