Blender Git Loki
Git Commits -> Revision dc450a9
Revision dc450a9 by Richard Antalik (temp-vse-multi-framerates) March 29, 2021, 06:09 (GMT) |
[WIP]VSE: Allow playback of multiple framerates WARNING: Need to update FFmpeg tests Store playback rate in `Sequence` and use it to calculate length and to convert timeline frame to frame index. Playback rate is stored as absolute value which allows easy update on framechange. This means that scene framerate has to be available, so a lot of functions had to be supplied with pointer to scene. With relative value, scene frame rate properties would need `_set` accessor function that would first go over all strips to update framerate value, then scene framerate and finally update strip offsets. There is also risk of precision loss for playback rate when doing these calculations. ----- I am undecided whether to keep this property for users to utilize for other purposes (it could possibly replace speed effect). See for example D4067, which is attempt for more advanced version of this feature. Right now property is exposed in time panel (it's badly aligned...) It has no effect on effect strips, only movie, image, scene and similar strips. Problem with speed effect is, that it is more difficult to work with because whole effect chain has to be cut and time related issues and inconsistencies do require special treatment. On the other hand this approach does not work well with animation - retiming strip won' t move keyframes. So either this feature will work only for movie (and scene) strips and will be hidden under the hood Or it could replace speed effect completely. Perhaps it would be better to first make this feature invisible and catch bugs, because I am quite sure there will be some. Differential Revision: https://developer.blender.org/D10807 |
Commit Details:
Full Hash: dc450a9dfe39fbe8bae06c463f8f547b7c7a76d4
Parent Commit: 1614795
Lines Changed: +321, -192
27 Modified Paths:
/release/scripts/startup/bl_ui/space_sequencer.py (+5, -0) (Diff)
/source/blender/blenloader/intern/versioning_290.c (+9, -7) (Diff)
/source/blender/editors/space_sequencer/sequencer_add.c (+9, -5) (Diff)
/source/blender/editors/space_sequencer/sequencer_draw.c (+17, -8) (Diff)
/source/blender/editors/space_sequencer/sequencer_edit.c (+11, -10) (Diff)
/source/blender/editors/transform/transform_convert_sequencer.c (+23, -16) (Diff)
/source/blender/makesdna/DNA_sequence_types.h (+4, -0) (Diff)
/source/blender/makesrna/intern/rna_scene.c (+1, -0) (Diff)
/source/blender/makesrna/intern/rna_sequencer.c (+28, -9) (Diff)
/source/blender/makesrna/intern/rna_sequencer_api.c (+14, -5) (Diff)
/source/blender/sequencer/intern/effects.c (+23, -17) (Diff)
/source/blender/sequencer/intern/image_cache.c (+10, -5) (Diff)
/source/blender/sequencer/intern/proxy.c (+12, -8) (Diff)
/source/blender/sequencer/intern/render.c (+7, -6) (Diff)
/source/blender/sequencer/intern/strip_add.c (+17, -6) (Diff)
/source/blender/sequencer/intern/strip_edit.c (+26, -24) (Diff)
/source/blender/sequencer/intern/strip_relations.c (+20, -0) (Diff)
/source/blender/sequencer/intern/strip_time.c (+21, -21) (Diff)
/source/blender/sequencer/intern/strip_time.h (+2, -1) (Diff)
/source/blender/sequencer/intern/strip_transform.c (+32, -32) (Diff)
/source/blender/sequencer/SEQ_add.h (+4, -1) (Diff)
/source/blender/sequencer/SEQ_edit.h (+1, -1) (Diff)
/source/blender/sequencer/SEQ_effects.h (+7, -2) (Diff)
/source/blender/sequencer/SEQ_relations.h (+4, -0) (Diff)
/source/blender/sequencer/SEQ_render.h (+3, -1) (Diff)
/source/blender/sequencer/SEQ_time.h (+1, -1) (Diff)
/source/blender/sequencer/SEQ_transform.h (+10, -6) (Diff)
/source/blender/blenloader/intern/versioning_290.c (+9, -7) (Diff)
/source/blender/editors/space_sequencer/sequencer_add.c (+9, -5) (Diff)
/source/blender/editors/space_sequencer/sequencer_draw.c (+17, -8) (Diff)
/source/blender/editors/space_sequencer/sequencer_edit.c (+11, -10) (Diff)
/source/blender/editors/transform/transform_convert_sequencer.c (+23, -16) (Diff)
/source/blender/makesdna/DNA_sequence_types.h (+4, -0) (Diff)
/source/blender/makesrna/intern/rna_scene.c (+1, -0) (Diff)
/source/blender/makesrna/intern/rna_sequencer.c (+28, -9) (Diff)
/source/blender/makesrna/intern/rna_sequencer_api.c (+14, -5) (Diff)
/source/blender/sequencer/intern/effects.c (+23, -17) (Diff)
/source/blender/sequencer/intern/image_cache.c (+10, -5) (Diff)
/source/blender/sequencer/intern/proxy.c (+12, -8) (Diff)
/source/blender/sequencer/intern/render.c (+7, -6) (Diff)
/source/blender/sequencer/intern/strip_add.c (+17, -6) (Diff)
/source/blender/sequencer/intern/strip_edit.c (+26, -24) (Diff)
/source/blender/sequencer/intern/strip_relations.c (+20, -0) (Diff)
/source/blender/sequencer/intern/strip_time.c (+21, -21) (Diff)
/source/blender/sequencer/intern/strip_time.h (+2, -1) (Diff)
/source/blender/sequencer/intern/strip_transform.c (+32, -32) (Diff)
/source/blender/sequencer/SEQ_add.h (+4, -1) (Diff)
/source/blender/sequencer/SEQ_edit.h (+1, -1) (Diff)
/source/blender/sequencer/SEQ_effects.h (+7, -2) (Diff)
/source/blender/sequencer/SEQ_relations.h (+4, -0) (Diff)
/source/blender/sequencer/SEQ_render.h (+3, -1) (Diff)
/source/blender/sequencer/SEQ_time.h (+1, -1) (Diff)
/source/blender/sequencer/SEQ_transform.h (+10, -6) (Diff)