[Bf-blender-cvs] [e1b5fe156db] master: Support showing metadata for multilayer EXR files

Sergey Sharybin noreply at git.blender.org
Tue Feb 5 14:25:50 CET 2019


Commit: e1b5fe156db2871ae0eb32d0af3e1c5fb8a7507a
Author: Sergey Sharybin
Date:   Tue Feb 5 14:23:50 2019 +0100
Branches: master
https://developer.blender.org/rBe1b5fe156db2871ae0eb32d0af3e1c5fb8a7507a

Support showing metadata for multilayer EXR files

Quite straightforward: first, convert metadata from file to
stamp data which is stored in the render result, and then
for every requested layer/pass use that as a metadata.

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

M	source/blender/blenkernel/intern/image.c

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

diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 971b79ed20d..d21e1cc7986 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -2180,6 +2180,9 @@ void BKE_imbuf_stamp_info(RenderResult *rr, struct ImBuf *ibuf)
 
 void BKE_stamp_info_from_imbuf(RenderResult *rr, struct ImBuf *ibuf)
 {
+	if (rr->stamp_data == NULL) {
+		rr->stamp_data = MEM_callocN(sizeof(StampData), "RenderResult.stamp_data");
+	}
 	struct StampData *stamp_data = rr->stamp_data;
 	IMB_metadata_ensure(&ibuf->metadata);
 	BKE_stamp_info_callback(ibuf, stamp_data, metadata_get_field, true);
@@ -3073,8 +3076,10 @@ static void image_create_multilayer(Image *ima, ImBuf *ibuf, int framenr)
 	IMB_exr_close(ibuf->userdata);
 
 	ibuf->userdata = NULL;
-	if (ima->rr)
+	if (ima->rr != NULL) {
 		ima->rr->framenr = framenr;
+		BKE_stamp_info_from_imbuf(ima->rr, ibuf);
+	}
 
 	/* set proper views */
 	image_init_multilayer_multiview(ima, ima->rr);
@@ -3275,6 +3280,8 @@ static ImBuf *image_load_sequence_multilayer(Image *ima, ImageUser *iuser, int f
 			ibuf->mall = IB_rectfloat;
 			ibuf->channels = rpass->channels;
 
+			BKE_imbuf_stamp_info(ima->rr, ibuf);
+
 			image_initialize_after_load(ima, ibuf);
 			image_assign_ibuf(ima, ibuf, iuser ? iuser->multi_index : 0, frame);
 
@@ -3586,6 +3593,8 @@ static ImBuf *image_get_ibuf_multilayer(Image *ima, ImageUser *iuser)
 			ibuf->flags |= IB_rectfloat;
 			ibuf->channels = rpass->channels;
 
+			BKE_imbuf_stamp_info(ima->rr, ibuf);
+
 			image_assign_ibuf(ima, ibuf, iuser ? iuser->multi_index : IMA_NO_INDEX, 0);
 		}
 	}



More information about the Bf-blender-cvs mailing list