Defer wrapping output stream into Python object #390
Merged
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.
OutputContainer.add_stream() nicely initialises some default options
both for audio and video streams. Unfortunately, we wrap the low-level
AVCodecContext and AVStream into Python objects before we finish
initialising them.
For video streams this results in the crucial "pix_fmt" being cleared
inside VideoCodecContext._init, which leads to a crash during encoding
if the user does not set "pix_fmt" (again) themselves:
With this PR we finish the CodecContext initialization before we start
wrapping the stream into a Python object.
As a result of this fix, all video encoding examples can be simplified
to remove this:
stream.pix_fmt = 'yuv420p'