Age | Commit message (Collapse) | Author |
|
The clamp added will ensure immediate speed direction change on
changing to/from positive/negative speed factor when using the Speed
effect strip's Multiply mode.
Reviewed By: ISS, sergey
Differential Revision: https://developer.blender.org/D12462
|
|
|
|
|
|
Draw thumbnails as strip overlay. This works for movie and image strips.
To draw thumbnails, this overlay has to be enabled and strips must be
tall enough.
The thumbnails are loaded from source file using separate thread and
stored in cache.
Drawing code uses only images stored in cache, and if any is missing,
background rendering job is started. If job can not render thumbnail,
to prevent endless loop of creating job for missing image it sets
`SEQ_FLAG_SKIP_THUMBNAILS` bit of `Sequence` flag.
To prevent visual glitches during timeline panning and zooming, `View2D`
flag `V2D_IS_NAVIGATING` is implemented. If bit is set, drawing code
will look for set of evenly distributed thumbnails that should be
guaranteed to exist and also set of previously displayed thumbnails.
Due to volatile nature of cache these thumbnails can be missing anyway,
in which case no new thumbnails will be drawn for particular strip.
Cache capacity is limited to 5000 thumbnails and performs cleanup of
non visible images when limit is reached.
ref T89143
Reviewed By: ISS
Differential Revision: https://developer.blender.org/D12266
|
|
Add tools for image manipulation in sequencer preview region.
This includes:
- Translate, rotate and resize operators, tools and gizmos
- Origin for image transformation
- Median point and individual origins pivot modes
- Select and Box select operator works in preview
- Image overlay drawing
ref T90156
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D12105
|
|
On the blender side this commit fixes importing video files with audio
and video streams that do not share the same start time and duration.
Differential Revision: https://developer.blender.org/D12353
|
|
|
|
Callers that require lazy initialization can use SEQ_editing_ensure.
|
|
|
|
Math implemented in 929d7597b345 was incorrect, but also inconsistent
with previous behavior.
`SEQ_SPEED_STRETCH` should change length only when right handle is
moved. This is now documented in code.
|
|
API function `move_to_meta` should move strips without changing context
data like `MetaStack` that tells UI which meta strip should be
displayed and operated upon.
`SEQ_time_update_sequence` relied on `MetaStack` to update meta strip
content length. Instead of changing function `SEQ_time_update_sequence`,
use function `SEQ_time_update_meta_strip_range` directly. This is
because caller would have to be aware of parent meta strip that needs
update anyway.
|
|
The __LINE__ was not properly expanded.
|
|
Add mode to overwrite strips on overlap instead of resolving overlap.
When overlap is created, 3 things can happen:
- On partial overlap, handles of overlapped strip are moved
- On complete overlap with smaller strip, overlapped strip is split
- On complete overlap with larger strip, overlapped strip is removed
This mode can be enabled in header.
Reviewed By: fsiddi, mano-wii
Differential Revision: https://developer.blender.org/D11805
|
|
|
|
|
|
Reuse the existing font loading function which handles this case.
|
|
|
|
|
|
We now use a for_each function with callback to iterate through all sequences in the scene.
This has the benefit that we now only loop over the sequences in the scene once.
Before we would loop over them twice and allocate memory to store temporary data.
The allocation of temporary data lead to unintentional memory leaks if the code used returns to exit out of the iteration loop.
The new for_each callback method doesn't allocate any temporary data and only iterates though all sequences once.
Reviewed By: Richard Antalik, Bastien Montagne
Differential Revision: http://developer.blender.org/D12278
|
|
|
|
This function can be used to find metastrip parent of nested strip.
Reviewed By: ISS
Differential Revision: https://developer.blender.org/D11985
|
|
Simplify logic of speed effect frame calculation by using discrete math
where possible. Only `SEQ_SPEED_MULTIPLY` mode with animation requires
frame map to be built. Frame map building was simplified by removing
unused branches.
Functional change: Animating strip in negative range will reverse playback.
I assume this was limitation of previous system, where each frame map item
was limited to be within correct frame range. Now frame map can contain
values that point beyond usable range and they are limited by
`seq_speed_effect_target_frame_get`. This way it is possible to control
playback rate in both directions.
Mostly fixes T89120 apart from offset handling.
Reviewed By: mano-wii
Differential Revision: https://developer.blender.org/D11939
|
|
Prefetch needs to avoid rendering scene strips, because
- Rendering in background needs own dependency graph, which fails to
initialize from evaluated data.
- This locks UI and can make it unresponsive for long time periods.
In T88237 prefetch failed to avoid scene strip, because of effect strip
was attached to scene strip.
Ensure, that no effect that is attached to scene strip either directly
or indirectly would be rendered.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D11247
|
|
When splitting strips, first they are duplicated and then offsets
adjusted. This can fail on cross transitions, because some strips don't
overlap with split frame.
All strips, that relate to each other must be duplicated to ensure
correct relations after splitting, so solution is to delete non
overlapping strips from left or right side respectively.
Since cross transition don't have to overlap with source strips,
splitting such strips would lead to effect being deleted, which
could cause crash when iterating over strips in python. Therefore
splitting of such strips is now forbidden and will generate error.
Splitting of transition will also generate error solely because such
operation is illogical.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D12121
|
|
When all strips are selected and overlap is caused, this causes VSE to
hang in infinite loop, because such situation should never happen.
To prevent infinite loop, ensure, that strip overlap is not tested
against single overlapping strip itself.
Prevent overlap that can not be handled because of issue described above
by moving overlapping strip between channels.
Reviewed By: campbellbarton
Differential Revision: D12209
|
|
Rename:
- BLI_str_utf8_invalid_byte (was BLI_utf8_invalid_byte)
- BLI_str_utf8_invalid_strip (was BLI_utf8_invalid_strip)
|
|
Reviewed By: campbellbarton, brecht, mont29
Differential Revision: https://developer.blender.org/D5799
|
|
Caused by {rBbbb1936411a5}.
When adding strips via the new SEQ_add_XXX_strip functions, the
`Editing->seqbasep` pointer was passed around.
Following in `seq_add_generic_update` this `seqbasep` pointer was used
to ensure a unique name.
But `seqbasep` is the pointer to the current list of seq's being edited
(**which can be limited to the ones within a meta strip**).
We need unique names across all strips though (since these are used for
RNA paths, FCurves as reported), so now use the scene's `Editing-
>seqbase` (**which is the list of the top-most sequences**) instead.
Unfortunately this might have screwed files to a borked state, not sure
if this could easily be fixed...
Maniphest Tasks: T90737
Differential Revision: https://developer.blender.org/D12256
|
|
|
|
|
|
The duration and start time for audio strips were not correctly read in
audaspace.
Some video files have a "lead in" section of audio that plays before the
video starts playing back. Before this patch, we would play this lead in
audio at the same time as the video started and thus the audio would not
be in sync anymore.
Now the lead in audio is cut off and the duration should be correctly
calculated with this in mind.
If the audio starts after the video, the audio strip is shifted to
account for this, but it will also lead to cut off audio which might not
be wanted. However we don't have a simple way to solve this at this
point.
Differential Revision: http://developer.blender.org/D11917
|
|
|
|
Fix hold offset check causing missing snapping point when strip have
only still frames.
Fix effect strips of transformed strips causing snapping to prevoius
strip positions.
Reviewed By: mano-wii
Differential Revision: https://developer.blender.org/D11948
|
|
This reverts commit 3123f33380b35ae93afee0a30f36bc7181927b28 and
a092baa7f90b2d5f13771d46f64ff5cf86cc5a05.
|
|
**Drawing Changes:**
- F-curve drawing for Stretch, Multiply, Length and Frame Number.
- Value drawing when no keyframes for Stretch, Length and Frame Numbers.
General view of the new drawing for each speed effect mode:
{F9796642, size=full}
Detail of the horizontal zero (blue) line in the new `Multiply` mode:
{F9798520, size=full}
Nice to have (but I don't know how):
- Auto adjusting of endframe when using Multiply or Boost.
Differential Revision: https://developer.blender.org/D6110
|
|
|
|
**Changes:**
- New enums correspond to 4 modes: `Stretch`, `Multiply`, `Frame Number` and `Length`.
- "`Multiply Factor`" has been removed;
- Value corresponding to "`use as speed`" enabled is now the value appended to the `Multiply` enum;
- Value corresponding to "`use as speed`" disabled is now the value appended to the `Frame Number` enum;
- Value corresponding to "`Scale to Length`" enabled is now the value appended to the `Length` enum;
- Except `Stretch` each mode has now its respective control values.
Differential Revision: https://developer.blender.org/D11856
|
|
Use C comments for plain text.
|
|
`split_multicam` used split operator, where if more strips than
multicam were selected, all would be split, which is undesirable.
Add `Sequence.split()` RNA API function. to split individual strips.
Function accepts `frame` and `split_method arguments`. Returns right
strip after splitting.
In case when strip being split have effects, these will be split too, so
no invalid state should be created.
Selection is not handled, this is by design up to user.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D11926
|
|
|
|
.rst file.
If text strips have the same start frame but are stacked on top of each
other in different channels the order in which they are written in the
.rst file was random before.
Reviewed By: Richard Antalik
Differential Revision: https://developer.blender.org/D11903
|
|
This shows the text as part of the assertion message.
|
|
- Make the variable to store the name 'static'.
- Use STRNCPY macro.
- Set the first character to nil instead of memset for the while string.
|
|
When adding texts or various simple effects I often copy-paste strips
to reuse properties from a template such as font or position. I assume
this is common workflow. Issue with this workflow is, that active strip
is not changed after pasting, so when adjusting property, it is original
strip that is being modified.
This is not issue when duplicating strips - selection state is
transfered to duplicate strips, such that duplicate of active strip is
set to be active and duplicate of selected strip is set to selected.
Implement same selection transfering behavior in paste operator, that
exists in duplicate operator.
Since strip can be deleted after copying, it is not possible to rely
on sequencer state. This is true even when pasting strips to different
scene. Therefore active strip name must be stored in clipboard.
Reviewed By: sergey, Severin
Differential Revision: https://developer.blender.org/D11781
|
|
|
|
Also use doxy style function reference `#` prefix chars when
referencing identifiers.
|
|
SeqCollection wasn't freed.
It wasn't easy to find culprit so added argument to
SEQ_collection_create() to pass function name.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D11746
|
|
|
|
|
|
Reserve the term count for values that require calculation
(typically linked lists).
Without this convention it's difficult to know if using a length
accessor function in a loop will be O(N^2) without inspecting the
underlying implementation.
|