videoutils: add HDR metadata fields to GstVideoCodecState
authorJakub Adam <jakub.adam@collabora.com>
Tue, 25 May 2021 19:15:53 +0000 (21:15 +0200)
committerNicolas Dufresne <nicolas@ndufresne.ca>
Tue, 17 Aug 2021 14:54:06 +0000 (14:54 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1175>

gst-libs/gst/video/gstvideoutils.c
gst-libs/gst/video/gstvideoutils.h

index 7e543db..03dffcd 100644 (file)
@@ -171,6 +171,10 @@ _gst_video_codec_state_free (GstVideoCodecState * state)
     gst_caps_unref (state->allocation_caps);
   if (state->codec_data)
     gst_buffer_unref (state->codec_data);
+  if (state->mastering_display_info)
+    g_slice_free (GstVideoMasteringDisplayInfo, state->mastering_display_info);
+  if (state->content_light_level)
+    g_slice_free (GstVideoContentLightLevel, state->content_light_level);
   g_slice_free (GstVideoCodecState, state);
 }
 
index 63338ce..cbe19f0 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <gst/gst.h>
 #include <gst/video/video-prelude.h>
+#include <gst/video/video-hdr.h>
 
 G_BEGIN_DECLS
 #define GST_TYPE_VIDEO_CODEC_STATE \
@@ -47,6 +48,10 @@ typedef struct _GstVideoCodecFrame GstVideoCodecFrame;
  *     'codec_data' field of a stream, or NULL.
  * @allocation_caps: The #GstCaps for allocation query and pool
  *     negotiation. Since: 1.10
+ * @mastering_display_info: Mastering display color volume information
+ *     (HDR metadata) for the stream. Since: 1.20
+ * @content_light_level: Content light level information for the stream.
+ *     Since: 1.20
  *
  * Structure representing the state of an incoming or outgoing video
  * stream for encoders and decoders.
@@ -58,6 +63,20 @@ typedef struct _GstVideoCodecFrame GstVideoCodecFrame;
  * gst_video_decoder_set_output_state() or
  * gst_video_encoder_set_output_state() methods.
  */
+/**
+ * GstVideoCodecState.mastering_display_info:
+ *
+ * Mastering display color volume information (HDR metadata) for the stream.
+ *
+ * Since: 1.20
+ */
+/**
+ * GstVideoCodecState.content_light_level:
+ *
+ * Content light level information for the stream.
+ *
+ * Since: 1.20
+ */
 struct _GstVideoCodecState
 {
   /*< private >*/
@@ -72,8 +91,11 @@ struct _GstVideoCodecState
 
   GstCaps *allocation_caps;
 
+  GstVideoMasteringDisplayInfo *mastering_display_info;
+  GstVideoContentLightLevel *content_light_level;
+
   /*< private >*/
-  gpointer padding[GST_PADDING_LARGE - 1];
+  gpointer padding[GST_PADDING_LARGE - 3];
 };
 
 /**