[camera_avfoundation] Fix crash when restarting image stream after recording #9628
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Added a guard in
captureOutput:didOutputSampleBuffer:
to safely handle nil pixel buffers that occur when transitioning from recording to image streaming. This prevents app crashes caused by force unwrapping nil values.What
guard let
check forCMSampleBufferGetImageBuffer
result in DefaultCamera.swiftWhy
When stopping video recording and immediately restarting the image stream, the app crashes with:
This occurs because:
CMSampleBufferGetImageBuffer
to return NULL\!
) on the nil result causes an immediate crashTechnical Details
The issue happens during the transition period between recording and streaming:
CMSampleBufferGetImageBuffer
Note
Ideally, Flutter should be able to query buffer state before processing. However, this PR focuses solely on preventing the crash by safely handling nil buffers. Future improvements could include exposing buffer state information to the Flutter side for more sophisticated handling.
Test
Added
StreamingNilBufferTests.swift
with comprehensive tests for:🤖 Generated with Claude Code