static void get_proxy_filename(struct anim *anim, IMB_Proxy_Size preview_size, char *fname, int temp) { char index_dir[FILE_MAXDIR]; int i = IMB_proxy_size_to_array_index(preview_size); char proxy_name[256]; char proxy_temp_name[256]; char stream_suffix[20]; stream_suffix[0] = 0; if (anim->streamindex > 0) { BLI_snprintf(stream_suffix, sizeof(stream_suffix), "_st%d", anim->streamindex); } BLI_snprintf(proxy_name, sizeof(proxy_name), "proxy_%d%s.avi", (int) (proxy_fac[i] * 100), stream_suffix); BLI_snprintf(proxy_temp_name, sizeof(proxy_temp_name), "proxy_%d%s_part.avi", (int) (proxy_fac[i] * 100), stream_suffix); get_index_dir(anim, index_dir, sizeof(index_dir)); BLI_join_dirfile(fname, FILE_MAXFILE + FILE_MAXDIR, index_dir, temp ? proxy_temp_name : proxy_name); }
struct anim *IMB_anim_open_proxy( struct anim *anim, IMB_Proxy_Size preview_size) { char fname[FILE_MAX]; int i = IMB_proxy_size_to_array_index(preview_size); if (anim->proxy_anim[i]) { return anim->proxy_anim[i]; } if (anim->proxies_tried & preview_size) { return NULL; } get_proxy_filename(anim, preview_size, fname, FALSE); anim->proxy_anim[i] = IMB_open_anim(fname, 0, 0); anim->proxies_tried |= preview_size; return anim->proxy_anim[i]; }
struct anim *IMB_anim_open_proxy( struct anim *anim, IMB_Proxy_Size preview_size) { char fname[FILE_MAX]; int i = IMB_proxy_size_to_array_index(preview_size); if (anim->proxy_anim[i]) { return anim->proxy_anim[i]; } if (anim->proxies_tried & preview_size) { return NULL; } get_proxy_filename(anim, preview_size, fname, false); /* proxies are generated in the same color space as animation itself */ anim->proxy_anim[i] = IMB_open_anim(fname, 0, 0, anim->colorspace); anim->proxies_tried |= preview_size; return anim->proxy_anim[i]; }