From 0490e3910916a2bdec676ebbbb5d16baa9be254f Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Wed, 23 Aug 2023 15:20:55 -0300
Subject: [PATCH] AudioFilter: keep same audio format as the input

Change-Id: I82e6d9cda290afb3e4f158c7053e40d89f117ab7
---
 AudioFilter/CMakeLists.txt            |  2 +-
 AudioFilter/FilterAudioSubscriber.cpp | 17 +++++++++++++----
 AudioFilter/FilterAudioSubscriber.h   |  2 +-
 AudioFilter/main.cpp                  |  2 +-
 AudioFilter/manifest.json             |  2 +-
 AudioFilter/package.json              |  2 +-
 6 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/AudioFilter/CMakeLists.txt b/AudioFilter/CMakeLists.txt
index a7f024a..c1c59f4 100644
--- a/AudioFilter/CMakeLists.txt
+++ b/AudioFilter/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10)
 
 # set the project name
 set (ProjectName AudioFilter)
-set (Version 1.0.0)
+set (Version 1.0.1)
 
 project(${ProjectName} VERSION ${Version})
 
diff --git a/AudioFilter/FilterAudioSubscriber.cpp b/AudioFilter/FilterAudioSubscriber.cpp
index a1e41c3..0096c17 100644
--- a/AudioFilter/FilterAudioSubscriber.cpp
+++ b/AudioFilter/FilterAudioSubscriber.cpp
@@ -59,10 +59,19 @@ FilterAudioSubscriber::setIRFile(const std::string& irFile)
 }
 
 void
-FilterAudioSubscriber::setFilterDescription(const int pSampleRate, const int pSamples)
+FilterAudioSubscriber::setFilterDescription(const int pSampleRate, const int pSamples, const int pFormat)
 {
     int rSamples = 1024; // due to afir internal fifo
     int midSampleRate = pSampleRate * rSamples / pSamples;
+    std::string outFormat {"s16"};
+    if (pFormat == AV_SAMPLE_FMT_U8)
+        outFormat = "u8";
+    else if (pFormat == AV_SAMPLE_FMT_S32)
+        outFormat = "s32";
+    else if (pFormat == AV_SAMPLE_FMT_FLT)
+        outFormat = "f32";
+    else if (pFormat == AV_SAMPLE_FMT_DBL)
+        outFormat = "f64";
     filterDescription_
         = "[ input ] aformat=sample_fmts=s16:sample_rates=" + std::to_string(midSampleRate)
           + ":channel_layouts=stereo [ resample1 ] , "
@@ -70,9 +79,9 @@ FilterAudioSubscriber::setFilterDescription(const int pSampleRate, const int pSa
           + std::to_string(rSamples) + ":minp=" + std::to_string(rSamples)
           + " [ reverb ] , "
 #ifdef __DEBUG__
-            "[ reverb ] aformat=sample_fmts=s16p:sample_rates="
+            "[ reverb ] aformat=sample_fmts=" + outFormat + "p:sample_rates="
 #else
-            "[ reverb ] aformat=sample_fmts=s16:sample_rates="
+            "[ reverb ] aformat=sample_fmts=" + outFormat + ":sample_rates="
 #endif
           + std::to_string(pSampleRate) + ":channel_layouts=stereo ";
 }
@@ -181,7 +190,7 @@ FilterAudioSubscriber::update(Observable<AVFrame*>*, AVFrame* const& pluginFrame
         return;
 
     if (firstRun) {
-        setFilterDescription(pluginFrame->sample_rate, pluginFrame->nb_samples);
+        setFilterDescription(pluginFrame->sample_rate, pluginFrame->nb_samples, pluginFrame->format);
         AudioFormat afmt_ = AudioFormat(pluginFrame->sample_rate,
                                         pluginFrame->ch_layout.nb_channels,
                                         static_cast<AVSampleFormat>(pluginFrame->format));
diff --git a/AudioFilter/FilterAudioSubscriber.h b/AudioFilter/FilterAudioSubscriber.h
index b5ce828..a03ce6d 100644
--- a/AudioFilter/FilterAudioSubscriber.h
+++ b/AudioFilter/FilterAudioSubscriber.h
@@ -56,7 +56,7 @@ private:
     // Status variables of the processing
     bool firstRun {true};
 
-    void setFilterDescription(const int pSampleRate, const int pSamples);
+    void setFilterDescription(const int pSampleRate, const int pSamples, const int pFormat);
     void setIRAVFrame();
     AudioFormat getIRAVFrameInfos();
     std::string irFile_{};
diff --git a/AudioFilter/main.cpp b/AudioFilter/main.cpp
index 1a28e49..797af99 100644
--- a/AudioFilter/main.cpp
+++ b/AudioFilter/main.cpp
@@ -41,7 +41,7 @@
 
 #define AudioFilter_VERSION_MAJOR 1
 #define AudioFilter_VERSION_MINOR 0
-#define AudioFilter_VERSION_PATCH 0
+#define AudioFilter_VERSION_PATCH 1
 
 extern "C" {
 
diff --git a/AudioFilter/manifest.json b/AudioFilter/manifest.json
index e09f37f..c08e558 100644
--- a/AudioFilter/manifest.json
+++ b/AudioFilter/manifest.json
@@ -2,7 +2,7 @@
     "id": "AudioFilter",
     "name": "{{name}}",
     "description": "{{description_summary}}",
-    "version": "1.0.0",
+    "version": "1.0.1",
     "iconPath" : "icon.svg",
     "backgroundPath": "background.jpg"
 }
\ No newline at end of file
diff --git a/AudioFilter/package.json b/AudioFilter/package.json
index b66c19e..b3d39c3 100644
--- a/AudioFilter/package.json
+++ b/AudioFilter/package.json
@@ -1,6 +1,6 @@
 {
     "name": "AudioFilter",
-    "version": "1.0.0",
+    "version": "1.0.1",
     "extractLibs": false,
     "deps": [
         "fmt",
-- 
GitLab