Fix for x264 encoder errors causing egress failures at the end of the recording #1095
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.
The original fix for the issue was to make sure video track is removed (and input selector switched to to the testsrc for video track) before appwriter sends EOS. However there is an escape path in case of read errors (handleReadError) - it will cause the EOS to get to the selector while the video track is still connected to it - later on, on onTrackUnsubscribed/onTrackFinished selector input will be switched but by that time it's already too late as the encoder has seen EOS and will complain the same way when test source starts pushing data which will cause egress to be marked as failed just at the end. The fix is to make sure the src is removed before drain for this case as well.