Commit 867dadcd authored by Stefan Westerfeld's avatar Stefan Westerfeld

Refactor skipping code.

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent e9de5719
...@@ -245,14 +245,16 @@ public: ...@@ -245,14 +245,16 @@ public:
size_t size_t
skip (size_t zeros) skip (size_t zeros)
{ {
assert (zeros == Params::frame_size); assert (zeros % Params::frame_size == 0 && zeros > 0);
size_t out = 0;
if (first_frame) if (first_frame)
{ {
first_frame = false; first_frame = false;
return 0; return zeros - Params::frame_size;
} }
else else
return Params::frame_size; return zeros;
} }
}; };
...@@ -310,11 +312,12 @@ public: ...@@ -310,11 +312,12 @@ public:
size_t size_t
skip (size_t zeros) skip (size_t zeros)
{ {
assert (zeros == Params::frame_size); assert (zeros % Params::frame_size == 0);
bump_frame_number(); for (int i = 0; i < zeros / Params::frame_size; i++)
bump_frame_number();
return wm_synth.skip (Params::frame_size); return wm_synth.skip (zeros);
} }
void void
bump_frame_number() bump_frame_number()
...@@ -564,23 +567,22 @@ public: ...@@ -564,23 +567,22 @@ public:
skip (size_t zeros) skip (size_t zeros)
{ {
assert (zeros % Params::frame_size == 0); assert (zeros % Params::frame_size == 0);
size_t out = 0; if (!need_resampler)
while (zeros)
{ {
if (!need_resampler) return wm_gen.skip (zeros); /* cheap case */
{ }
out += wm_gen.skip (Params::frame_size); /* cheap case */ else
} {
else /* FIXME: inefficient */
vector<float> samples (Params::frame_size * n_channels);
size_t out = 0;
while (zeros)
{ {
/* FIXME: inefficient */ zeros -= Params::frame_size;
vector<float> samples (Params::frame_size * n_channels); out += run (samples).size() / n_channels;
size_t n_values = run (samples).size();
out += n_values / n_channels;
} }
zeros -= Params::frame_size; return out;
} }
return out;
} }
int int
data_blocks() const data_blocks() const
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment