Fix T43986: VSE Mask Modifier don't move with video-Clip.
Now mask animation is offset to start of strip, instead of staying at frame 1! Warning: this may break existing files, in case some would be using (hacking around!) current bad behavior...
This commit is contained in:
parent
03d945095a
commit
6786ef6783
Notes:
blender-bot
2023-02-14 09:22:41 +01:00
Referenced by commit 8850775ce8
, Sequencer: Add option to use absolute mask animation time
Referenced by issue #43986, VSE Mask Modifier don't move with video-Clip
|
@ -449,7 +449,9 @@ void BKE_sequence_modifier_list_copy(struct Sequence *seqn, struct Sequence *seq
|
|||
int BKE_sequence_supports_modifiers(struct Sequence *seq);
|
||||
|
||||
/* internal filters */
|
||||
struct ImBuf *BKE_sequencer_render_mask_input(const SeqRenderData *context, int mask_input_type, struct Sequence *mask_sequence, struct Mask *mask_id, int cfra, bool make_float);
|
||||
struct ImBuf *BKE_sequencer_render_mask_input(
|
||||
const SeqRenderData *context, int mask_input_type, struct Sequence *mask_sequence, struct Mask *mask_id,
|
||||
int cfra, int fra_offset, bool make_float);
|
||||
void BKE_sequencer_color_balance_apply(struct StripColorBalance *cb, struct ImBuf *ibuf, float mul, bool make_float, struct ImBuf *mask_input);
|
||||
|
||||
#endif /* __BKE_SEQUENCER_H__ */
|
||||
|
|
|
@ -77,9 +77,9 @@ typedef struct ModifierThread {
|
|||
} ModifierThread;
|
||||
|
||||
|
||||
static ImBuf *modifier_mask_get(SequenceModifierData *smd, const SeqRenderData *context, int cfra, bool make_float)
|
||||
static ImBuf *modifier_mask_get(SequenceModifierData *smd, const SeqRenderData *context, int cfra, int fra_offset, bool make_float)
|
||||
{
|
||||
return BKE_sequencer_render_mask_input(context, smd->mask_input_type, smd->mask_sequence, smd->mask_id, cfra, make_float);
|
||||
return BKE_sequencer_render_mask_input(context, smd->mask_input_type, smd->mask_sequence, smd->mask_id, cfra, fra_offset, make_float);
|
||||
}
|
||||
|
||||
static void modifier_init_handle(void *handle_v, int start_line, int tot_line, void *init_data_v)
|
||||
|
@ -667,7 +667,7 @@ ImBuf *BKE_sequence_modifier_apply_stack(const SeqRenderData *context, Sequence
|
|||
continue;
|
||||
|
||||
if (smti->apply) {
|
||||
ImBuf *mask = modifier_mask_get(smd, context, cfra, ibuf->rect_float != NULL);
|
||||
ImBuf *mask = modifier_mask_get(smd, context, cfra, seq->start, ibuf->rect_float != NULL);
|
||||
|
||||
if (processed_ibuf == ibuf)
|
||||
processed_ibuf = IMB_dupImBuf(ibuf);
|
||||
|
|
|
@ -1920,7 +1920,10 @@ static void *color_balance_do_thread(void *thread_data_v)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ImBuf *BKE_sequencer_render_mask_input(const SeqRenderData *context, int mask_input_type, Sequence *mask_sequence, Mask *mask_id, int cfra, bool make_float)
|
||||
/* cfra is offset by fra_offset only in case we are using a real mask. */
|
||||
ImBuf *BKE_sequencer_render_mask_input(
|
||||
const SeqRenderData *context, int mask_input_type, Sequence *mask_sequence, Mask *mask_id,
|
||||
int cfra, int fra_offset, bool make_float)
|
||||
{
|
||||
ImBuf *mask_input = NULL;
|
||||
|
||||
|
@ -1939,7 +1942,7 @@ ImBuf *BKE_sequencer_render_mask_input(const SeqRenderData *context, int mask_in
|
|||
}
|
||||
}
|
||||
else if (mask_input_type == SEQUENCE_MASK_INPUT_ID) {
|
||||
mask_input = seq_render_mask(context, mask_id, cfra, make_float);
|
||||
mask_input = seq_render_mask(context, mask_id, cfra - fra_offset, make_float);
|
||||
}
|
||||
|
||||
return mask_input;
|
||||
|
|
Loading…
Reference in New Issue