Kaynağa Gözat

LibAudio: Allow resampling from any array-like type

kleines Filmröllchen 3 yıl önce
ebeveyn
işleme
63d9ec8e94
1 değiştirilmiş dosya ile 16 ekleme ve 0 silme
  1. 16 0
      Userland/Libraries/LibAudio/Resampler.h

+ 16 - 0
Userland/Libraries/LibAudio/Resampler.h

@@ -6,6 +6,7 @@
 
 #pragma once
 
+#include <AK/Concepts.h>
 #include <AK/Types.h>
 #include <AK/Vector.h>
 
@@ -50,6 +51,21 @@ public:
         return false;
     }
 
+    template<ArrayLike<SampleType> Samples>
+    Vector<SampleType> resample(Samples&& to_resample)
+    {
+        Vector<SampleType> resampled;
+        resampled.ensure_capacity(to_resample.size() * ceil_div(m_source, m_target));
+        for (auto sample : to_resample) {
+            process_sample(sample, sample);
+
+            while (read_sample(sample, sample))
+                resampled.unchecked_append(sample);
+        }
+
+        return resampled;
+    }
+
     void reset()
     {
         m_current_ratio = 0;