Previously raw images were not cached if image wasn't preprocessed.
This caused issue, that image had to be read from disk on every redraw.
Effect strips must be excluded, because this would cause problem with
invalidation. Effect strips can use preprocessing however. This is
mainly to allow usimg modifiers on them.
This change should follow rBf448ff2afe7a77, but I have wrongly assumed,
that it has been implemented already.
ref T80278
Error handling added in 512a23c3d6 caused that reading header of new
file failed, since it is empty.
Don't attempt to read header if file is empty. If header can not be read
anyway, try to delete the file. Add asserts, as this should never
happen.
Reviewed By: sybren
Differential Revision: https://developer.blender.org/D9954
Adjust default cache settings for all files to store raw and final
images.
All settings are still available when developer extras option is
enabled in user preferences.
This is part of design task T80278
Differential Revision: https://developer.blender.org/D9745
New UUID was generated for original strip not new one.
Bug caused "invisible" sound strip playing that is impossible to
remove. Especially noticable when transforming pasted strips. In such
case, file reload was necessary.
Reviewed By: mont29
Differential Revision: https://developer.blender.org/D9912
Respond to return values of `fscanf()` and `fread()` to detect and
handle I/O errors. Not only is error handling a good idea, this also
prevents warnings from GCC that `fread()` and `fscanf()` return values
are ignored.
Reviewed By: ISS
Differential Revision: https://developer.blender.org/D9915
This value was meant to be used for keeping images that are slowest to
render in cache. Method of measurement was flawed, because it doesn't
take UI overhead into consideration.
Cache panel is to be removed because users should not have to tweak
settings like this. It is not useful for development either, therefore
it is removed completely.
If image is cached twice, it's size has been counted twice as well, but
only image reference count is increased, not memory usage.
Use `MEM_get_memory_in_use()` instead of size own tracking.
Crash happens when using relative path to image in operator properties
and checking image dimensions by loading image with `IMB_loadiffname()`
Ensure path is absolute.
Crash on null dereference in `SEQ_timeline_boundbox()`. This function was
generalized in rB9e4a4c2e996c to work on arbitrary `seqbase`.
Fixed by refactoring `SEQ_timeline_boundbox()` functions to return default
sane values if `seqbase` is `NULL`
Reviewed By: HooglyBoogly
Differential Revision: https://developer.blender.org/D9878
This commit resolves problem introduced in e1665c3d31 - it was
difficult to import media at their original resolution.
This is done by using original resolution as reference for scale.
All crop and strip transform values and their animation is converted
form old files.
To make both workflows easy to use, sequencer tool settings have been
created with preset for preffered scaling method. This setting is in
sequencer timeline header and add image or movie strip operator
properties.
Two new operators have been added:
`sequencer.strip_transform_fit` operator with 3 options: Scale To Fit,
Scale to Fill and Stretch To Fill.
Operator can fail if strip image or video is not loaded currently, this
case should be either sanitized or data loaded on demand.
`sequencer.strip_transform_clear` operator with 4 options:
Clear position, scale, rotation and all (previous 3 options combined).
Reviewed By: sergey, fsiddi
Differential Revision: https://developer.blender.org/D9582
Logic was broken into finding gaps and ofsetting strips.
Functions were modified so they work on explicitly defined seqbase,
so they can be used as python API functions.
Functional changes:
- Improve performance by calculating gap length and offseting strips
at once. Previously strips were offset by one frame.
- Calculate gap from start frame. Previously gap was considered only
inbetween strips.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9730
Remove DNA headers, using forward declarations where possible.
Also removed duplicate header, header including it's self
and unnecessary inclusion of libc system headers from BKE header.
Code was rewritten to work on per-sequence basis returning reference to
created strip.
There should be no functional changes.
Selection logic is left as is for now. I could simplify it, but it
belongs to operator, not split logic.
Reviewed By: sergey
Differential Revision: developer.blender.org/D9592
In 8d1978a8e0 bmain entry is updated when prefetching is started,
but this must be done before seq_prefetch_update_context(). Otherwise
created cache keys will be incorrect.
This happens immediately after prefetch is started. When it's refreshed
problem goes away.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9581
Use either scene render size or fixed preview scale factor.
Previously scene render size was used as baseline value for text size
correction. This is incorrect.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9563
Move most functions into separate files.
File sequencer.c is reserved for alloc, free and duplicating functions.
There should be no functional changes.
Remove `static int clear_scene_in_allseqs_fn(...)`. It was a utility
function for `BKE_sequencer_clear_scene_in_allseqs()`, which was removed
in c063813c30.
No functional changes.
This adds a Box option to the Text strip's style properties, plus related Box Margin value:
{F9208309}
When enabled the text is placed on top of a solid-filled rectangle of a chosen color, as shown below:
{F9208324}
When the box option is disabled the text strip works the same as it does now. When the box option is enabled the meaning of the Shadow option changes to provide a drop-shadow on the rectangle (and not on the text itself). The latter made more sense to me.
The box margin is specified as a fraction of the image width. The offset of the drop-down box shadow is fixed to a specific fraction of the image width as well.
I tested this feature on a movie of a couple of minutes containing dozens of text strips (all with box background), edge cases like multi-line strings and text overlapping the image edges.
Reviewed By: ISS
Differential Revision: https://developer.blender.org/D9468
Proxies are expected to be fast to read. Storing them in cache has
little to no effect on performance.
This change also allows to omit invalidation of cache when user switch
between proxies and original media.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9473
Variables renaned:
- cfra -> timeline_frame
- nr -> frame index
- cfra_over -> overlap_frame
Function seq_give_stripelem_index was renamed to seq_give_frame_index.
Map frame for cached raw images to strip input media frame range. This
means that static images or extended frame range of movies will only
generate one cache entry.
timeline_frame is stored in cache key as a reference - on what frame
was this entry created, so we don't have to reverse lookup frame range.
Since each media frame corresponds to one cache frame with same frame
index key, there is no need to invalidate raw cache when changing time
remapping properties like use_reverse_frames or strobe
No changes are needed for disk cache, since invalidating raw entry
assumes all data will be invalidated.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9462
Replace BKE_sequencer wirh SEQ_render or SEQ_proxy prefixes.
In cases where function is very generic, only SEQ prefix is used.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9439
Move functions closely related to rendering images and proxies into
render.c and proxy.c files. render.h and proxy.h are created for
functions used internally.
There should be no functional changes.