Mercurial > hg > svcore
comparison data/fileio/WavFileWriter.cpp @ 936:0c1d6de8f44b
Merge from branch warnfix_no_size_t
author | Chris Cannam |
---|---|
date | Wed, 18 Jun 2014 13:51:16 +0100 |
parents | 59e7fe1b1003 |
children | cc27f35aa75c |
comparison
equal
deleted
inserted
replaced
917:49618f39ff09 | 936:0c1d6de8f44b |
---|---|
23 #include <QFileInfo> | 23 #include <QFileInfo> |
24 | 24 |
25 #include <iostream> | 25 #include <iostream> |
26 | 26 |
27 WavFileWriter::WavFileWriter(QString path, | 27 WavFileWriter::WavFileWriter(QString path, |
28 size_t sampleRate, | 28 int sampleRate, |
29 size_t channels, | 29 int channels, |
30 FileWriteMode mode) : | 30 FileWriteMode mode) : |
31 m_path(path), | 31 m_path(path), |
32 m_sampleRate(sampleRate), | 32 m_sampleRate(sampleRate), |
33 m_channels(channels), | 33 m_channels(channels), |
34 m_temp(0), | 34 m_temp(0), |
118 selection->setSelection(Selection(source->getStartFrame(), | 118 selection->setSelection(Selection(source->getStartFrame(), |
119 source->getEndFrame())); | 119 source->getEndFrame())); |
120 ownSelection = true; | 120 ownSelection = true; |
121 } | 121 } |
122 | 122 |
123 size_t bs = 2048; | 123 int bs = 2048; |
124 float *ub = new float[bs]; // uninterleaved buffer (one channel) | 124 float *ub = new float[bs]; // uninterleaved buffer (one channel) |
125 float *ib = new float[bs * m_channels]; // interleaved buffer | 125 float *ib = new float[bs * m_channels]; // interleaved buffer |
126 | 126 |
127 for (MultiSelection::SelectionList::iterator i = | 127 for (MultiSelection::SelectionList::iterator i = |
128 selection->getSelections().begin(); | 128 selection->getSelections().begin(); |
129 i != selection->getSelections().end(); ++i) { | 129 i != selection->getSelections().end(); ++i) { |
130 | 130 |
131 size_t f0(i->getStartFrame()), f1(i->getEndFrame()); | 131 int f0(i->getStartFrame()), f1(i->getEndFrame()); |
132 | 132 |
133 for (size_t f = f0; f < f1; f += bs) { | 133 for (int f = f0; f < f1; f += bs) { |
134 | 134 |
135 size_t n = std::min(bs, f1 - f); | 135 int n = std::min(bs, f1 - f); |
136 | 136 |
137 for (int c = 0; c < int(m_channels); ++c) { | 137 for (int c = 0; c < int(m_channels); ++c) { |
138 source->getData(c, f, n, ub); | 138 source->getData(c, f, n, ub); |
139 for (size_t i = 0; i < n; ++i) { | 139 for (int i = 0; i < n; ++i) { |
140 ib[i * m_channels + c] = ub[i]; | 140 ib[i * m_channels + c] = ub[i]; |
141 } | 141 } |
142 } | 142 } |
143 | 143 |
144 sf_count_t written = sf_writef_float(m_file, ib, n); | 144 sf_count_t written = sf_writef_float(m_file, ib, n); |
157 | 157 |
158 return isOK(); | 158 return isOK(); |
159 } | 159 } |
160 | 160 |
161 bool | 161 bool |
162 WavFileWriter::writeSamples(float **samples, size_t count) | 162 WavFileWriter::writeSamples(float **samples, int count) |
163 { | 163 { |
164 if (!m_file) { | 164 if (!m_file) { |
165 m_error = QString("Failed to write model to audio file '%1': File not open") | 165 m_error = QString("Failed to write model to audio file '%1': File not open") |
166 .arg(getWriteFilename()); | 166 .arg(getWriteFilename()); |
167 return false; | 167 return false; |
168 } | 168 } |
169 | 169 |
170 float *b = new float[count * m_channels]; | 170 float *b = new float[count * m_channels]; |
171 for (size_t i = 0; i < count; ++i) { | 171 for (int i = 0; i < int(count); ++i) { |
172 for (size_t c = 0; c < m_channels; ++c) { | 172 for (int c = 0; c < int(m_channels); ++c) { |
173 b[i * m_channels + c] = samples[c][i]; | 173 b[i * m_channels + c] = samples[c][i]; |
174 } | 174 } |
175 } | 175 } |
176 | 176 |
177 sf_count_t written = sf_writef_float(m_file, b, count); | 177 sf_count_t written = sf_writef_float(m_file, b, count); |
178 | 178 |
179 delete[] b; | 179 delete[] b; |
180 | 180 |
181 if (written < count) { | 181 if (written < int(count)) { |
182 m_error = QString("Only wrote %1 of %2 frames") | 182 m_error = QString("Only wrote %1 of %2 frames") |
183 .arg(written).arg(count); | 183 .arg(written).arg(count); |
184 } | 184 } |
185 | 185 |
186 return isOK(); | 186 return isOK(); |