ggerganov commited on
Commit
cd7b137
·
unverified ·
1 Parent(s): 5938aed

sdl : fix audio callback (#1523)

Browse files
Files changed (2) hide show
  1. examples/common-sdl.cpp +7 -4
  2. examples/common-sdl.h +0 -1
examples/common-sdl.cpp CHANGED
@@ -139,10 +139,13 @@ void audio_async::callback(uint8_t * stream, int len) {
139
  return;
140
  }
141
 
142
- const size_t n_samples = len / sizeof(float);
143
 
144
- m_audio_new.resize(n_samples);
145
- memcpy(m_audio_new.data(), stream, n_samples * sizeof(float));
 
 
 
146
 
147
  //fprintf(stderr, "%s: %zu samples, pos %zu, len %zu\n", __func__, n_samples, m_audio_pos, m_audio_len);
148
 
@@ -153,7 +156,7 @@ void audio_async::callback(uint8_t * stream, int len) {
153
  const size_t n0 = m_audio.size() - m_audio_pos;
154
 
155
  memcpy(&m_audio[m_audio_pos], stream, n0 * sizeof(float));
156
- memcpy(&m_audio[0], &stream[n0], (n_samples - n0) * sizeof(float));
157
 
158
  m_audio_pos = (m_audio_pos + n_samples) % m_audio.size();
159
  m_audio_len = m_audio.size();
 
139
  return;
140
  }
141
 
142
+ size_t n_samples = len / sizeof(float);
143
 
144
+ if (n_samples > m_audio.size()) {
145
+ n_samples = m_audio.size();
146
+
147
+ stream += (len - (n_samples * sizeof(float)));
148
+ }
149
 
150
  //fprintf(stderr, "%s: %zu samples, pos %zu, len %zu\n", __func__, n_samples, m_audio_pos, m_audio_len);
151
 
 
156
  const size_t n0 = m_audio.size() - m_audio_pos;
157
 
158
  memcpy(&m_audio[m_audio_pos], stream, n0 * sizeof(float));
159
+ memcpy(&m_audio[0], stream + n0 * sizeof(float), (n_samples - n0) * sizeof(float));
160
 
161
  m_audio_pos = (m_audio_pos + n_samples) % m_audio.size();
162
  m_audio_len = m_audio.size();
examples/common-sdl.h CHANGED
@@ -41,7 +41,6 @@ private:
41
  std::mutex m_mutex;
42
 
43
  std::vector<float> m_audio;
44
- std::vector<float> m_audio_new;
45
  size_t m_audio_pos = 0;
46
  size_t m_audio_len = 0;
47
  };
 
41
  std::mutex m_mutex;
42
 
43
  std::vector<float> m_audio;
 
44
  size_t m_audio_pos = 0;
45
  size_t m_audio_len = 0;
46
  };