From 9fb15545bd10693b1de0b99aa3fd1c5fbbdb38b8 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Tue, 18 Jul 2023 23:08:21 +0300 Subject: [PATCH] GstEnginePipeline: Perform EBU R 128 Loudness Normalization in floating-point --- src/engine/gstenginepipeline.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/engine/gstenginepipeline.cpp b/src/engine/gstenginepipeline.cpp index 117f42166..54b8913c9 100644 --- a/src/engine/gstenginepipeline.cpp +++ b/src/engine/gstenginepipeline.cpp @@ -667,10 +667,15 @@ bool GstEnginePipeline::InitAudioBin(QString &error) { // Link EBU R 128 loudness normalization volume element if enabled. if (ebur128_loudness_normalization_ && ebur128_volume_) { - if (!gst_element_link(element_link, ebur128_volume_)) { + GstStaticCaps static_raw_fp_audio_caps = GST_STATIC_CAPS( + "audio/x-raw," + "format = (string) { F32LE, F64LE }"); + GstCaps *raw_fp_audio_caps = gst_static_caps_get(&static_raw_fp_audio_caps); + if (!gst_element_link_filtered(element_link, ebur128_volume_, raw_fp_audio_caps)) { error = "Failed to link EBU R 128 volume element."; return false; } + gst_caps_unref(raw_fp_audio_caps); element_link = ebur128_volume_; }