]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
sdl : fix audio callback (#1523)
authorGeorgi Gerganov <redacted>
Mon, 20 Nov 2023 11:16:38 +0000 (13:16 +0200)
committerGitHub <redacted>
Mon, 20 Nov 2023 11:16:38 +0000 (13:16 +0200)
examples/common-sdl.cpp
examples/common-sdl.h

index c5986332540cdb1a8f4c7367c035dd9ca1e6f8ac..5fc28e53f44bb31bd52b83ecb36d7d643832c329 100644 (file)
@@ -139,10 +139,13 @@ void audio_async::callback(uint8_t * stream, int len) {
         return;
     }
 
-    const size_t n_samples = len / sizeof(float);
+    size_t n_samples = len / sizeof(float);
 
-    m_audio_new.resize(n_samples);
-    memcpy(m_audio_new.data(), stream, n_samples * sizeof(float));
+    if (n_samples > m_audio.size()) {
+        n_samples = m_audio.size();
+
+        stream += (len - (n_samples * sizeof(float)));
+    }
 
     //fprintf(stderr, "%s: %zu samples, pos %zu, len %zu\n", __func__, n_samples, m_audio_pos, m_audio_len);
 
@@ -153,7 +156,7 @@ void audio_async::callback(uint8_t * stream, int len) {
             const size_t n0 = m_audio.size() - m_audio_pos;
 
             memcpy(&m_audio[m_audio_pos], stream, n0 * sizeof(float));
-            memcpy(&m_audio[0], &stream[n0], (n_samples - n0) * sizeof(float));
+            memcpy(&m_audio[0], stream + n0 * sizeof(float), (n_samples - n0) * sizeof(float));
 
             m_audio_pos = (m_audio_pos + n_samples) % m_audio.size();
             m_audio_len = m_audio.size();
index a5659db75743e969f1b63e1e12da472654957bbb..9ee8a320724ea27a3456743b2cf5d99b20b049bb 100644 (file)
@@ -41,7 +41,6 @@ private:
     std::mutex       m_mutex;
 
     std::vector<float> m_audio;
-    std::vector<float> m_audio_new;
     size_t             m_audio_pos = 0;
     size_t             m_audio_len = 0;
 };