vf_tonemap_opencl: Move update_metadata() to a shared file
authorVittorio Giovara <vittorio.giovara@gmail.com>
Wed, 25 Jul 2018 15:02:45 +0000 (17:02 +0200)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Mon, 6 Aug 2018 16:35:52 +0000 (18:35 +0200)
libavfilter/colorspace.c
libavfilter/colorspace.h
libavfilter/vf_tonemap_opencl.c

index d6f6055..c668221 100644 (file)
@@ -118,3 +118,20 @@ double ff_determine_signal_peak(AVFrame *in)
 
     return peak;
 }
+
+void ff_update_hdr_metadata(AVFrame *in, double peak)
+{
+    AVFrameSideData *sd = av_frame_get_side_data(in, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
+
+    if (sd) {
+        AVContentLightMetadata *clm = (AVContentLightMetadata *)sd->data;
+        clm->MaxCLL = (unsigned)(peak * REFERENCE_WHITE);
+    }
+
+    sd = av_frame_get_side_data(in, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
+    if (sd) {
+        AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sd->data;
+        if (metadata->has_luminance)
+            metadata->max_luminance = av_d2q(peak * REFERENCE_WHITE, 10000);
+    }
+}
index 75705ec..9366818 100644 (file)
@@ -45,5 +45,6 @@ void ff_fill_rgb2xyz_table(const struct PrimaryCoefficients *coeffs,
                            double rgb2xyz[3][3]);
 
 double ff_determine_signal_peak(AVFrame *in);
+void ff_update_hdr_metadata(AVFrame *in, double peak);
 
 #endif
index 7455ebb..5da2333 100644 (file)
@@ -21,7 +21,6 @@
 #include "libavutil/bprint.h"
 #include "libavutil/common.h"
 #include "libavutil/imgutils.h"
-#include "libavutil/mastering_display_metadata.h"
 #include "libavutil/mem.h"
 #include "libavutil/opt.h"
 #include "libavutil/pixdesc.h"
@@ -342,22 +341,6 @@ fail:
     return err;
 }
 
-static void update_metadata(AVFrame *in, double peak) {
-    AVFrameSideData *sd = av_frame_get_side_data(in, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
-
-    if (sd) {
-        AVContentLightMetadata *clm = (AVContentLightMetadata *)sd->data;
-        clm->MaxCLL = (unsigned)(peak * REFERENCE_WHITE);
-    }
-
-    sd = av_frame_get_side_data(in, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
-    if (sd) {
-        AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sd->data;
-        if (metadata->has_luminance)
-            metadata->max_luminance =av_d2q(peak * REFERENCE_WHITE, 10000);
-    }
-}
-
 static int tonemap_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input)
 {
     AVFilterContext    *avctx = inlink->dst;
@@ -444,7 +427,7 @@ static int tonemap_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input)
 
     av_frame_free(&input);
 
-    update_metadata(output, ctx->target_peak);
+    ff_update_hdr_metadata(output, ctx->target_peak);
 
     av_log(ctx, AV_LOG_DEBUG, "Tone-mapping output: %s, %ux%u (%"PRId64").\n",
            av_get_pix_fmt_name(output->format),