diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2015-07-01 16:23:09 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-07-01 16:23:21 +0300 |
commit | f525483d837f8f91876ba395134c3ed263dcc7c2 (patch) | |
tree | 3af17ffaed6e29a21a82fd64f874de7dc1135aba /source/blender/render | |
parent | 0e084f93d923092a5da6cf821f0286ca591039eb (diff) |
Sequencer metadata:
Add option to render strip metadata to final result, bypassing current
scene metadata.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index c939c697f1c..31efdb95ac1 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2617,6 +2617,7 @@ static void do_render_seq(Render *re) if (out) { ibuf_arr[view_id] = IMB_dupImBuf(out); + IMB_metadata_copy(ibuf_arr[view_id], out); IMB_freeImBuf(out); BKE_sequencer_imbuf_from_sequencer_space(re->scene, ibuf_arr[view_id]); } @@ -2639,6 +2640,12 @@ static void do_render_seq(Render *re) /* copy ibuf into combined pixel rect */ render_result_rect_from_ibuf(rr, &re->r, ibuf_arr[view_id], view_id); + if (ibuf_arr[view_id]->metadata && (re->r.stamp & R_STAMP_STRIPMETA)) { + /* ensure render stamp info first */ + BKE_render_result_stamp_info(NULL, NULL, rr, true); + BKE_stamp_info_from_imbuf(rr, ibuf_arr[view_id]); + } + if (recurs_depth == 0) { /* with nested scenes, only free on toplevel... */ Editing *ed = re->scene->ed; if (ed) @@ -2678,6 +2685,7 @@ static void do_render_seq(Render *re) static void do_render_all_options(Render *re) { Object *camera; + bool render_seq = false; re->current_scene_update(re->suh, re->scene); @@ -2693,8 +2701,10 @@ static void do_render_all_options(Render *re) } else if (RE_seq_render_active(re->scene, &re->r)) { /* note: do_render_seq() frees rect32 when sequencer returns float images */ - if (!re->test_break(re->tbh)) + if (!re->test_break(re->tbh)) { do_render_seq(re); + render_seq = true; + } re->stats_draw(re->sdh, &re->i); re->display_update(re->duh, re->result, NULL); @@ -2714,7 +2724,9 @@ static void do_render_all_options(Render *re) /* save render result stamp if needed */ camera = RE_GetCamera(re); - BKE_render_result_stamp_info(re->scene, camera, re->result); + /* sequence rendering should have taken care of that already */ + if (!(render_seq && (re->r.stamp & R_STAMP_STRIPMETA))) + BKE_render_result_stamp_info(re->scene, camera, re->result, false); /* stamp image info here */ if ((re->r.stamp & R_STAMP_ALL) && (re->r.stamp & R_STAMP_DRAW)) { |