filter-graph: move loop out of the NULL check

This commit is contained in:
Wim Taymans 2025-07-17 12:01:14 +02:00
parent eb3d14053d
commit 4b37f3db3d

View file

@ -2821,48 +2821,49 @@ static void zeroramp_run(void * Instance, unsigned long SampleCount)
if (out == NULL) if (out == NULL)
return; return;
if (in != NULL) { if (in == NULL) {
for (n = 0; n < SampleCount; n++) { memset(out, 0, SampleCount * sizeof(float));
if (impl->mode == 0) { return;
/* normal mode, finding gaps */ }
out[n] = in[n];
if (in[n] == 0.0f) { for (n = 0; n < SampleCount; n++) {
if (++impl->count == gap) { if (impl->mode == 0) {
/* we found gap zeroes, fade out last /* normal mode, finding gaps */
* sample and go into zero mode */ out[n] = in[n];
for (c = 1, i = n; c < duration && i > 0; i--, c++) if (in[n] == 0.0f) {
out[i-1] = impl->last * if (++impl->count == gap) {
(0.5f + 0.5f * cosf(M_PIf + M_PIf * c / duration)); /* we found gap zeroes, fade out last
impl->mode = 1; * sample and go into zero mode */
} for (c = 1, i = n; c < duration && i > 0; i--, c++)
} else { out[i-1] = impl->last *
/* keep last sample to fade out when needed */ (0.5f + 0.5f * cosf(M_PIf + M_PIf * c / duration));
impl->count = 0; impl->mode = 1;
impl->last = in[n];
}
}
if (impl->mode == 1) {
/* zero mode */
if (in[n] != 0.0f) {
/* gap ended, move to fade-in mode */
impl->mode = 2;
impl->count = 0;
} else {
out[n] = 0.0f;
}
}
if (impl->mode == 2) {
/* fade-in mode */
out[n] = in[n] * (0.5f + 0.5f * cosf(M_PIf + (M_PIf * ++impl->count / duration)));
if (impl->count == duration) {
/* fade in complete, back to normal mode */
impl->count = 0;
impl->mode = 0;
} }
} else {
/* keep last sample to fade out when needed */
impl->count = 0;
impl->last = in[n];
}
}
if (impl->mode == 1) {
/* zero mode */
if (in[n] != 0.0f) {
/* gap ended, move to fade-in mode */
impl->mode = 2;
impl->count = 0;
} else {
out[n] = 0.0f;
}
}
if (impl->mode == 2) {
/* fade-in mode */
out[n] = in[n] * (0.5f + 0.5f * cosf(M_PIf + (M_PIf * ++impl->count / duration)));
if (impl->count == duration) {
/* fade in complete, back to normal mode */
impl->count = 0;
impl->mode = 0;
} }
} }
} else {
memset(out, 0, SampleCount * sizeof(float));
} }
} }