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.
This PR adds an
interrupt()
function to the demuxer instance. Calling interrupt will cause any blocking IO on the demuxer to abort with the AVERROR_EXIT error code.This is accomplished using the AVIOInterruptCB structure in ffmpeg https://github.com/FFmpeg/FFmpeg/blob/6087692a60699a5eac5b061dd458e5a856e0662f/libavformat/avio.h#L47-L61
I considered adding some special error handling for AVERROR_EXIT, but I wanted to get your feedback first. It might be useful for client applications to be able to differentiate between intentional early exit errors and regular errors. In my app, I'm doing a string match for "Immediate exit requested" on error.message. It's not ideal, but good enough for now.
This resolves my issue #54 and I think could also help with #53