Fix a crash when cancelled while writing samples

Now we never force-unwrap videoInput or videoOutput. Or anything else
for that matter.
This commit is contained in:
Sami Samhuri 2025-04-04 10:26:09 -07:00
parent 2f1b859a03
commit 1e768033a1
No known key found for this signature in database

View file

@ -229,7 +229,7 @@ actor SampleWriter {
}
private func startEncodingVideoTracks() {
videoInput!.requestMediaDataWhenReady(on: queue) {
videoInput?.requestMediaDataWhenReady(on: queue) {
// NOTE: assumeIsolated crashes on macOS with Swift 6.0, fixed in 6.1
self.assumeIsolated { _self in
_self.writeAllReadySamples()
@ -243,9 +243,11 @@ actor SampleWriter {
if !hasMoreAudio { log.debug("Finished encoding audio") }
}
let hasMoreVideo = writeReadySamples(output: videoOutput!, input: videoInput!)
if let videoInput, let videoOutput {
let hasMoreVideo = writeReadySamples(output: videoOutput, input: videoInput)
if !hasMoreVideo { log.debug("Finished encoding video") }
}
}
private func writeReadySamples(output: AVAssetReaderOutput, input: AVAssetWriterInput) -> Bool {
while input.isReadyForMoreMediaData {