This patch changes a couple of things in the video output encoding.
- Clearer separation between container and codec. No more "format", as this is too ambiguous. As a result, codecs were removed from the container list.
- Added FFmpeg speed presets, so the user can choosen from the range "Very slow" to "Ultra fast". By default no preset is used.
- Added Constant Rate Factor (CRF) mode, which allows changing the bit-rate depending on the desired quality and the input. This generally produces the best quality videos, at the expense of not knowing the exact bit-rate and file size.
- Added optional maximum of non-B-frames between B-frames (max_b_frames).
- Presets were adjusted for these changes, and new presets added. One of the new presets is recommended for reviewing videos, as it allows players to scrub through it easily. Might be nice in weeklies. This preset also requires control over the max_b_frames setting.
- Renamed "MPEG" in the output file format menu with "FFmpeg", as this is more accurate. After all, FFmpeg is used when this option is chosen, which can also output non-MPEG files.
- Certain parts of the GUI are disabled when not in use:
- bit rate options are not used when a constant rate factor is given.
- audio bitrate & volume are not used when no audio is exported.
Note that I did not touch BKE_ffmpeg_preset_set(). There are currently
two preset systems for FFmpeg (BKE_ffmpeg_preset_set() and the Python
preset system). Before we do more work on BKE_ffmpeg_preset_set(), I think
it's a good idea to determine whether we want to keep it at all.
After this patch has been accepted, I'd be happy to go through the code and remove any then-obsolete bits, such as the handling of "XVID" as a container format.