diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 56e34bbeb11..2b68e811d17 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2945,20 +2945,25 @@ static ImBuf *seq_render_movie_strip(const SeqRenderData *context, Sequence *seq if (totfiles != BLI_listbase_count_at_most(&seq->anims, totfiles + 1)) goto monoview_movie; totviews = BKE_scene_multiview_num_views_get(&context->scene->r); ibuf_arr = MEM_callocN(sizeof(ImBuf *) * totviews, "Sequence Image Views Imbufs"); for (i = 0, sanim = seq->anims.first; sanim; sanim = sanim->next, i++) { if (sanim->anim) { IMB_Proxy_Size proxy_size = seq_rendersize_to_proxysize(context->preview_render_size); + + if ((seq->flag & SEQ_USE_PROXY) == 0) { + proxy_size = IMB_PROXY_NONE; + } + IMB_anim_set_preseek(sanim->anim, seq->anim_preseek); ibuf_arr[i] = IMB_anim_absolute(sanim->anim, nr + seq->anim_startofs, seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN, proxy_size); /* fetching for requested proxy size failed, try fetching the original instead */ if (!ibuf_arr[i] && proxy_size != IMB_PROXY_NONE) { ibuf_arr[i] = IMB_anim_absolute(sanim->anim, nr + seq->anim_startofs, seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN, @@ -3011,20 +3016,25 @@ static ImBuf *seq_render_movie_strip(const SeqRenderData *context, Sequence *seq } } MEM_freeN(ibuf_arr); } else { monoview_movie: sanim = seq->anims.first; if (sanim && sanim->anim) { IMB_Proxy_Size proxy_size = seq_rendersize_to_proxysize(context->preview_render_size); + + if ((seq->flag & SEQ_USE_PROXY) == 0) { + proxy_size = IMB_PROXY_NONE; + } + IMB_anim_set_preseek(sanim->anim, seq->anim_preseek); ibuf = IMB_anim_absolute(sanim->anim, nr + seq->anim_startofs, seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN, proxy_size); /* fetching for requested proxy size failed, try fetching the original instead */ if (!ibuf && proxy_size != IMB_PROXY_NONE) { ibuf = IMB_anim_absolute(sanim->anim, nr + seq->anim_startofs, seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN, diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c01f59582d1..d0ddeb0c514 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -318,21 +318,23 @@ static void rna_Sequence_frame_offset_range(PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax)) { Sequence *seq = (Sequence *)ptr->data; *min = ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) ? 0 : INT_MIN; *max = INT_MAX; } static void rna_Sequence_use_proxy_set(PointerRNA *ptr, bool value) { Sequence *seq = (Sequence *)ptr->data; + Scene *scene = (Scene *)ptr->id.data; BKE_sequencer_proxy_set(seq, value != 0); + BKE_sequence_invalidate_cache(scene, seq); } static void rna_Sequence_use_translation_set(PointerRNA *ptr, bool value) { Sequence *seq = (Sequence *)ptr->data; if (value) { seq->flag |= SEQ_USE_TRANSFORM; if (seq->strip->transform == NULL) { seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); }