예제 #1
0
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);
}
예제 #2
0
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];
}
예제 #3
0
파일: indexer.c 프로젝트: mgschwan/blensor
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];
}