B Frames Codec Setting Does Not Save With Preset

Windows 10
Shotcut 23.11.29

  1. I change B frames to 2 from the default of 0 in the Export / Codec tab, and I change other settings.
  2. I save as a preset.
  3. When I click on that created preset from the list under Custom, B Frames reverts to 0 instead of 2.

bf=2 is saved into the encode config file, I can verify that. However, the input box reverts to 0 when the preset is selected. Therefore, it is not clear what will happen when I export using that preset, whether the B frames will be 2 as desired, or 0. I think it uses the setting of 0 based on the file size comparisons and testing I did. Only way to make sure B Frames setting is honored is to type in the box every time I export, which is hard to remember to do, defeating the purpose of having it save in the preset.

B frames

With hardware encoders the B frames is intentionally coerced to 0 for compatibility reasons (older hardware and drivers do not support it). Then, you can change it manually if you really know it works for you.

The reason it is coerced at the time of loading the presets is because the stock presets are generic and then converted to hardware encoder. That and Shotcut does not differentiate its preset parsing logic between stock and custom. I might be able to add some logic such that if the codec in the preset is a hardware encoder then respect the bf value (stock presets do not specify a hardware encoder).

Fixed for the next version.


It’s alright, don’t stress over it. Obviously I can’t test any hardware that I don’t own. I was running experiments and noticed I could half the export file size by setting b frames to 2, leaving everything else the same. Render time didn’t increase and quality didn’t decrease. I pixel peeked both, and if anything the b framed one looked the same if not better, at half the size. I don’t need them to run on old hardware, that’d be a weird need for 360 5.7k hevc footage (wouldn’t run on old hardware anyway). I’ll just try to get in the habit of setting it on each export. If it causes problems for what you see as a wider use to allow presets to fully save options, do what you need to do. My thought is if anyone knows enough to actually change a setting to a preset rather than choose an existing preset, they have a reason to do so, their decision should be honored, and they can suffer whatever consequence of their choice. But do what you think is best. I only see my angle, not the bigger picture.