[Bf-blender-cvs] [7aec4a8a456] temp-T97907-compositor-meta-data: Use file meta data in composior.

Jeroen Bakker noreply at git.blender.org
Fri May 6 16:37:18 CEST 2022


Commit: 7aec4a8a456f46c35af88df79a6e89ef06a8be56
Author: Jeroen Bakker
Date:   Fri May 6 16:13:32 2022 +0200
Branches: temp-T97907-compositor-meta-data
https://developer.blender.org/rB7aec4a8a456f46c35af88df79a6e89ef06a8be56

Use file meta data in composior.

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

M	source/blender/compositor/intern/COM_MetaData.cc
M	source/blender/compositor/intern/COM_MetaData.h
M	source/blender/compositor/operations/COM_ImageOperation.cc
M	source/blender/compositor/operations/COM_ImageOperation.h
M	source/blender/compositor/operations/COM_ViewerOperation.cc

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

diff --git a/source/blender/compositor/intern/COM_MetaData.cc b/source/blender/compositor/intern/COM_MetaData.cc
index 9ee3d7e5c22..0b64b353101 100644
--- a/source/blender/compositor/intern/COM_MetaData.cc
+++ b/source/blender/compositor/intern/COM_MetaData.cc
@@ -3,6 +3,7 @@
 
 #include "COM_MetaData.h"
 
+#include "BKE_idprop.h"
 #include "BKE_image.h"
 
 #include "RE_pipeline.h"
@@ -14,6 +15,17 @@ void MetaData::add(const blender::StringRef key, const blender::StringRef value)
   entries_.add(key, value);
 }
 
+static void add_property(IDProperty *id_prop, void *user_data)
+{
+  MetaData *meta_data = static_cast<MetaData *>(user_data);
+  meta_data->add(id_prop->name, IDP_String(id_prop));
+}
+
+void MetaData::add(IDProperty *id_prop)
+{
+  IDP_foreach_property(id_prop, IDP_TYPE_FILTER_STRING, add_property, this);
+}
+
 void MetaData::add_cryptomatte_entry(const blender::StringRef layer_name,
                                      const blender::StringRefNull key,
                                      const blender::StringRef value)
diff --git a/source/blender/compositor/intern/COM_MetaData.h b/source/blender/compositor/intern/COM_MetaData.h
index de09d9995db..c1474ac16b7 100644
--- a/source/blender/compositor/intern/COM_MetaData.h
+++ b/source/blender/compositor/intern/COM_MetaData.h
@@ -43,6 +43,8 @@ class MetaData {
    */
   void replace_hash_neutral_cryptomatte_keys(const blender::StringRef layer_name);
   void add_to_render_result(RenderResult *render_result) const;
+  void add(IDProperty *properties);
+
 #ifdef WITH_CXX_GUARDEDALLOC
   MEM_CXX_CLASS_ALLOC_FUNCS("COM:MetaData")
 #endif
diff --git a/source/blender/compositor/operations/COM_ImageOperation.cc b/source/blender/compositor/operations/COM_ImageOperation.cc
index a9ab414670f..3e0dd4f6971 100644
--- a/source/blender/compositor/operations/COM_ImageOperation.cc
+++ b/source/blender/compositor/operations/COM_ImageOperation.cc
@@ -215,4 +215,13 @@ void ImageDepthOperation::update_memory_buffer_partial(MemoryBuffer *output,
   }
 }
 
+std::unique_ptr<MetaData> ImageOperation::get_meta_data()
+{
+  std::unique_ptr<MetaData> meta_data = std::unique_ptr<MetaData>();
+  if (buffer_->metadata != nullptr) {
+    meta_data->add(buffer_->metadata);
+  }
+  return meta_data;
+}
+
 }  // namespace blender::compositor
diff --git a/source/blender/compositor/operations/COM_ImageOperation.h b/source/blender/compositor/operations/COM_ImageOperation.h
index 1eaa828fe2a..d10d283697d 100644
--- a/source/blender/compositor/operations/COM_ImageOperation.h
+++ b/source/blender/compositor/operations/COM_ImageOperation.h
@@ -78,6 +78,7 @@ class ImageOperation : public BaseImageOperation {
   void update_memory_buffer_partial(MemoryBuffer *output,
                                     const rcti &area,
                                     Span<MemoryBuffer *> inputs) override;
+  std::unique_ptr<MetaData> get_meta_data() override;
 };
 class ImageAlphaOperation : public BaseImageOperation {
  public:
diff --git a/source/blender/compositor/operations/COM_ViewerOperation.cc b/source/blender/compositor/operations/COM_ViewerOperation.cc
index 58392b8a638..8892f628466 100644
--- a/source/blender/compositor/operations/COM_ViewerOperation.cc
+++ b/source/blender/compositor/operations/COM_ViewerOperation.cc
@@ -201,6 +201,8 @@ void ViewerOperation::update_image(const rcti *rect)
                                     rect->xmax,
                                     rect->ymax);
 
+  std::unique_ptr<MetaData> metadata = image_input_->get_meta_data();
+
   /* This could be improved to use partial updates. For now disabled as the full frame compositor
    * would not use partial frames anymore and the image engine requires more testing. */
   BKE_image_partial_update_mark_full_update(image_);



More information about the Bf-blender-cvs mailing list