[Bf-blender-cvs] [1a87699] multiview: Merge remote-tracking branch 'origin/master' into multiview

Dalai Felinto noreply at git.blender.org
Wed Feb 4 20:45:57 CET 2015


Commit: 1a8769917c868154c000de70a7a7cb95666aee6e
Author: Dalai Felinto
Date:   Wed Feb 4 17:43:55 2015 -0200
Branches: multiview
https://developer.blender.org/rB1a8769917c868154c000de70a7a7cb95666aee6e

Merge remote-tracking branch 'origin/master' into multiview

(aka the typo fix commit in master, just to prevent having to solve this
conflict if someone else had fixed this first ;)

Conflicts:
	source/blender/blenkernel/intern/sequencer.c

===================================================================



===================================================================

diff --cc source/blender/blenkernel/intern/sequencer.c
index 0689a2a,83287fe..727a154
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@@ -3119,116 -2786,35 +3119,116 @@@ monoview_image
  
  		case SEQ_TYPE_MOVIE:
  		{
 -			seq_open_anim_file(seq, false);
 +			StripAnim *sanim;
 +			bool is_multiview = (context->scene->r.scemode & R_MULTIVIEW) != 0;
 +
 +			/* load all the videos */
 +			seq_open_anim_file(context->scene, seq, false);
 +
 +			if (is_multiview) {
 +				ImBuf **ibuf_arr;
 +				size_t totviews;
 +				size_t totfiles = seq_num_files(context->scene, seq->views_format);
 +				int i;
 +
 +				if (totfiles != BLI_listbase_count_ex(&seq->anims, totfiles + 1))
 +					goto monoview_movie;
 +
 +				totviews = BKE_scene_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);
 +						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 sze failed, try fetching the original isntead */
++					/* 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,
 +						                         IMB_PROXY_NONE);
 +					}
 +						if (ibuf_arr[i]) {
 +							/* we don't need both (speed reasons)! */
 +							if (ibuf_arr[i]->rect_float && ibuf_arr[i]->rect)
 +								imb_freerectImBuf(ibuf_arr[i]);
 +						}
 +					}
 +				}
  
 -			if (seq->anim) {
 -				IMB_Proxy_Size proxy_size = seq_rendersize_to_proxysize(context->preview_render_size);
 -				IMB_anim_set_preseek(seq->anim, seq->anim_preseek);
 +				if (seq->views_format == R_IMF_VIEWS_STEREO_3D) {
 +					if (ibuf_arr[0]) {
 +						IMB_ImBufFromStereo(seq->stereo3d_format, &ibuf_arr[0], &ibuf_arr[1]);
 +					}
 +					else {
 +						/* probably proxy hasn't been created yet */
 +						MEM_freeN(ibuf_arr);
 +						break;
 +					}
 +				}
  
 -				ibuf = IMB_anim_absolute(seq->anim, nr + seq->anim_startofs,
 -				                         seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN,
 -				                         proxy_size);
 +				for (i = 0; i < totviews; i++) {
 +					SeqRenderData localcontext = *context;
 +					localcontext.view_id = i;
  
 -				/* fetching for requested proxy size failed, try fetching the original instead */
 -				if (!ibuf && proxy_size != IMB_PROXY_NONE) {
 -					ibuf = IMB_anim_absolute(seq->anim, nr + seq->anim_startofs,
 -					                         seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN,
 -					                         IMB_PROXY_NONE);
 +					if (ibuf_arr[i]) {
 +						/* all sequencer color is done in SRGB space, linear gives odd crossfades */
 +						BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf_arr[i], false);
 +					}
 +					copy_to_ibuf_still(&localcontext, seq, nr, ibuf_arr[i]);
  				}
 +
 +				/* return the original requested ImBuf */
 +				ibuf = ibuf_arr[context->view_id];
  				if (ibuf) {
 -					BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf, false);
 +					seq->strip->stripdata->orig_width = ibuf->x;
 +					seq->strip->stripdata->orig_height = ibuf->y;
 +				}
  
 -					/* we don't need both (speed reasons)! */
 -					if (ibuf->rect_float && ibuf->rect) {
 -						imb_freerectImBuf(ibuf);
 +				/* "remove" the others (decrease their refcount) */
 +				for (i = 0; i < totviews; i++) {
 +					if (ibuf_arr[i] != ibuf) {
 +						IMB_freeImBuf(ibuf_arr[i]);
  					}
 +				}
  
 -					seq->strip->stripdata->orig_width = ibuf->x;
 -					seq->strip->stripdata->orig_height = ibuf->y;
 +				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);
 +					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 sze failed, try fetching the original isntead */
++					/* 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,
 +						                         IMB_PROXY_NONE);
 +					}
 +					if (ibuf) {
 +						BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf, false);
 +
 +						/* we don't need both (speed reasons)! */
 +						if (ibuf->rect_float && ibuf->rect) {
 +							imb_freerectImBuf(ibuf);
 +						}
 +
 +						seq->strip->stripdata->orig_width = ibuf->x;
 +						seq->strip->stripdata->orig_height = ibuf->y;
 +					}
  				}
 +				copy_to_ibuf_still(context, seq, nr, ibuf);
  			}
 -			copy_to_ibuf_still(context, seq, nr, ibuf);
  			break;
  		}




More information about the Bf-blender-cvs mailing list