Blender Git Loki
February 26, 2021, 02:09 (GMT) |
Merge branch 'master' into temp-vse-fast-scrubbing |
February 26, 2021, 01:54 (GMT) |
VSE/FFmpeg: Scrubbing performance optimization Decode only I-frames when scrubbing This means, that scrubbing is as fast as possible, but not precise. With some files with extreme GOP lengths, this may be not optimal, as seeking would jump from one place to another. Another issue is, that when zoomed in to movie strip, fine scrubbing is not possible. Both issues can be resolved by decoding exact frame on second request. In first case this would cause UI to be laggy. In both cases this may also cause glitchy behavior. To eliminate glitchy behavior, there would have to be a buffer where previous frames are stored and determine if seek has to be precise or not. This analysis would have to be heuristic ultimately, and it could significantly increase code complexity. Also this analysis would be best done from VSE, because with imprecise seeking, cache needs to be disabled, because image does not correspond to what should be displayed. If analysis is done on VSE side, when switching to precise scrubbing, cache can remain active and scrubbing backwards, which is very likely can be aided by cache. FFmpeg can't seek backwards efficiently. Ultimately this patch assumes that files are encoded with fairly short GOP sizes. If file is not optimal, proxy system is best solution for achieving best performance. |