Build proxy from meta and image strips used resolution used for display,
not set by building job which leads to unusable proxies. This change should resolve issues reported in #30229: Sequencer Meta strip Proxy Fails and probably #30196 will work nicer too.
This commit is contained in:
@@ -1192,11 +1192,10 @@ static void seq_open_anim_file(Sequence * seq)
|
||||
}
|
||||
|
||||
|
||||
static int seq_proxy_get_fname(SeqRenderData context, Sequence * seq, int cfra, char * name)
|
||||
static int seq_proxy_get_fname(Sequence * seq, int cfra, int render_size, char * name)
|
||||
{
|
||||
int frameno;
|
||||
char dir[PROXY_MAXFILE];
|
||||
int render_size = context.preview_render_size;
|
||||
|
||||
if (!seq->strip->proxy) {
|
||||
return FALSE;
|
||||
@@ -1226,22 +1225,17 @@ static int seq_proxy_get_fname(SeqRenderData context, Sequence * seq, int cfra,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* dirty hack to distinguish 100% render size from PROXY_100 */
|
||||
if (render_size == 99) {
|
||||
render_size = 100;
|
||||
}
|
||||
|
||||
/* generate a separate proxy directory for each preview size */
|
||||
|
||||
if (seq->type == SEQ_IMAGE) {
|
||||
BLI_snprintf(name, PROXY_MAXFILE, "%s/images/%d/%s_proxy", dir,
|
||||
context.preview_render_size,
|
||||
render_size,
|
||||
give_stripelem(seq, cfra)->name);
|
||||
frameno = 1;
|
||||
} else {
|
||||
frameno = (int) give_stripelem_index(seq, cfra) + seq->anim_startofs;
|
||||
BLI_snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir,
|
||||
context.preview_render_size);
|
||||
render_size);
|
||||
}
|
||||
|
||||
BLI_path_abs(name, G.main->name);
|
||||
@@ -1258,6 +1252,12 @@ static struct ImBuf * seq_proxy_fetch(SeqRenderData context, Sequence * seq, int
|
||||
IMB_Proxy_Size psize = seq_rendersize_to_proxysize(
|
||||
context.preview_render_size);
|
||||
int size_flags;
|
||||
int render_size = context.preview_render_size;
|
||||
|
||||
/* dirty hack to distinguish 100% render size from PROXY_100 */
|
||||
if (render_size == 99) {
|
||||
render_size = 100;
|
||||
}
|
||||
|
||||
if (!(seq->flag & SEQ_USE_PROXY)) {
|
||||
return NULL;
|
||||
@@ -1273,7 +1273,7 @@ static struct ImBuf * seq_proxy_fetch(SeqRenderData context, Sequence * seq, int
|
||||
if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
|
||||
int frameno = (int) give_stripelem_index(seq, cfra) + seq->anim_startofs;
|
||||
if (seq->strip->proxy->anim == NULL) {
|
||||
if (seq_proxy_get_fname(context, seq, cfra, name)==0) {
|
||||
if (seq_proxy_get_fname(seq, cfra, render_size, name)==0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1292,7 +1292,7 @@ static struct ImBuf * seq_proxy_fetch(SeqRenderData context, Sequence * seq, int
|
||||
IMB_TC_NONE, IMB_PROXY_NONE);
|
||||
}
|
||||
|
||||
if (seq_proxy_get_fname(context, seq, cfra, name) == 0) {
|
||||
if (seq_proxy_get_fname(seq, cfra, render_size, name) == 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1313,7 +1313,7 @@ static void seq_proxy_build_frame(SeqRenderData context,
|
||||
int ok;
|
||||
struct ImBuf * ibuf;
|
||||
|
||||
if (!seq_proxy_get_fname(context, seq, cfra, name)) {
|
||||
if (!seq_proxy_get_fname(seq, cfra, proxy_render_size, name)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user