[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48936] branches/soc-2011-tomato/source/ blender/render/intern/source/pipeline.c: Color management: color management support for saving movie files
Sergey Sharybin
sergey.vfx at gmail.com
Sun Jul 15 12:43:50 CEST 2012
Revision: 48936
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48936
Author: nazgul
Date: 2012-07-15 10:43:50 +0000 (Sun, 15 Jul 2012)
Log Message:
-----------
Color management: color management support for saving movie files
This enables color management for movie files saving when rendering
animation. It uses the same settings as saving byte images.
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/render/intern/source/pipeline.c
Modified: branches/soc-2011-tomato/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/soc-2011-tomato/source/blender/render/intern/source/pipeline.c 2012-07-15 10:43:45 UTC (rev 48935)
+++ branches/soc-2011-tomato/source/blender/render/intern/source/pipeline.c 2012-07-15 10:43:50 UTC (rev 48936)
@@ -2078,7 +2078,7 @@
G.rendering = 0;
}
-static void colormanage_image_for_write(ImBuf *ibuf, Scene *scene)
+static void colormanage_image_for_write(Scene *scene, ImBuf *ibuf)
{
IMB_display_buffer_to_imbuf_rect(ibuf, &scene->r.im_format.view_settings,
&scene->r.im_format.display_settings);
@@ -2099,19 +2099,27 @@
/* write movie or image */
if (BKE_imtype_is_movie(scene->r.im_format.imtype)) {
int do_free = FALSE;
- unsigned int *rect32 = (unsigned int *)rres.rect32;
+ ImBuf *ibuf = render_result_rect_to_ibuf(&rres, &scene->r);
+
/* note; the way it gets 32 bits rects is weak... */
- if (rres.rect32 == NULL) {
- rect32 = MEM_mapallocN(sizeof(int) * rres.rectx * rres.recty, "temp 32 bits rect");
- RE_ResultGet32(re, rect32);
+ if (ibuf->rect == NULL) {
+ ibuf->rect = MEM_mapallocN(sizeof(int) * rres.rectx * rres.recty, "temp 32 bits rect");
+ RE_ResultGet32(re, ibuf->rect);
do_free = TRUE;
}
- ok = mh->append_movie(&re->r, scene->r.sfra, scene->r.cfra, (int *)rect32,
- rres.rectx, rres.recty, re->reports);
+ colormanage_image_for_write(scene, ibuf);
+
+ ok = mh->append_movie(&re->r, scene->r.sfra, scene->r.cfra, (int *) ibuf->rect,
+ ibuf->x, ibuf->y, re->reports);
if (do_free) {
- MEM_freeN(rect32);
+ MEM_freeN(ibuf->rect);
+ ibuf->rect = NULL;
}
+
+ /* imbuf knows which rects are not part of ibuf */
+ IMB_freeImBuf(ibuf);
+
printf("Append frame %d", scene->r.cfra);
}
else {
@@ -2133,7 +2141,7 @@
do_colormanagement = !BKE_imtype_supports_float(scene->r.im_format.imtype);
if (do_colormanagement)
- colormanage_image_for_write(ibuf, scene);
+ colormanage_image_for_write(scene, ibuf);
ok = BKE_imbuf_write_stamp(scene, camera, ibuf, name, &scene->r.im_format);
@@ -2152,7 +2160,7 @@
BKE_add_image_extension(name, R_IMF_IMTYPE_JPEG90);
ibuf->planes = 24;
- colormanage_image_for_write(ibuf, scene);
+ colormanage_image_for_write(scene, ibuf);
BKE_imbuf_write_stamp(scene, camera, ibuf, name, &imf);
printf("\nSaved: %s", name);
More information about the Bf-blender-cvs
mailing list