I use AVPlayerItemMetadataOutput for live HLS audio stream, each segment is a 0.96 second long AAC containing id3 metadata.
In all previous versions of iOS, the AVPlayerItemMetadataOutput delegate method for this stream is called approximately every 0.96 seconds.
This behaviour has changed with iOS 15.4.1. In this version, the delegate method is called exactly every 1 second, resulting in a delay in reading the metadata for each segment.
Example:
time(sec)----|0___________1___________2___________3______
segments-----|[segment_1][segment_2][segment_3][segment_4]
|^----------^----------^----------^---------
iOS 15.2-----|call_1 call_2 call_3 call_4
|^-----------^-----------^-----------^------
iOS 15.4.1---|call_1 call_2 call_3 call_4
As it can be seen, call_4 will be called much later than segment_4 starts playing. In all previous versions of iOS, it was called simultaneously with the start of segment_4 playback.
The AVMetadataItem.time property also shows the wrong time (see attached pictures).
Tried adjusting the delegation in both main and background queue - no success. Changing advanceIntervalForDelegateInvocation did not change this behavior.