mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/af_silenceremove: use separate variable for size of cache
This commit is contained in:
parent
364c03d9fe
commit
aa4acc111e
|
@ -94,6 +94,7 @@ typedef struct SilenceRemoveContext {
|
||||||
int *stop_back;
|
int *stop_back;
|
||||||
|
|
||||||
int64_t window_duration;
|
int64_t window_duration;
|
||||||
|
int cache_size;
|
||||||
|
|
||||||
int start_window_pos;
|
int start_window_pos;
|
||||||
int start_window_size;
|
int start_window_size;
|
||||||
|
@ -224,10 +225,22 @@ static int config_output(AVFilterLink *outlink)
|
||||||
AVFilterContext *ctx = outlink->src;
|
AVFilterContext *ctx = outlink->src;
|
||||||
SilenceRemoveContext *s = ctx->priv;
|
SilenceRemoveContext *s = ctx->priv;
|
||||||
|
|
||||||
|
switch (s->detection) {
|
||||||
|
case D_AVG:
|
||||||
|
case D_RMS:
|
||||||
|
s->cache_size = 1;
|
||||||
|
break;
|
||||||
|
case D_MEDIAN:
|
||||||
|
case D_PEAK:
|
||||||
|
case D_PTP:
|
||||||
|
s->cache_size = s->window_duration;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
s->start_window = ff_get_audio_buffer(outlink, s->window_duration);
|
s->start_window = ff_get_audio_buffer(outlink, s->window_duration);
|
||||||
s->stop_window = ff_get_audio_buffer(outlink, s->window_duration);
|
s->stop_window = ff_get_audio_buffer(outlink, s->window_duration);
|
||||||
s->start_cache = av_calloc(outlink->ch_layout.nb_channels, s->window_duration * sizeof(*s->start_cache));
|
s->start_cache = av_calloc(outlink->ch_layout.nb_channels, s->cache_size * sizeof(*s->start_cache));
|
||||||
s->stop_cache = av_calloc(outlink->ch_layout.nb_channels, s->window_duration * sizeof(*s->stop_cache));
|
s->stop_cache = av_calloc(outlink->ch_layout.nb_channels, s->cache_size * sizeof(*s->stop_cache));
|
||||||
if (!s->start_window || !s->stop_window || !s->start_cache || !s->stop_cache)
|
if (!s->start_window || !s->stop_window || !s->start_cache || !s->stop_cache)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
|
|
|
@ -328,6 +328,7 @@ static void fn(filter_start)(AVFilterContext *ctx,
|
||||||
ftype *start_cache = (ftype *)s->start_cache;
|
ftype *start_cache = (ftype *)s->start_cache;
|
||||||
const int start_silence = s->start_silence;
|
const int start_silence = s->start_silence;
|
||||||
int window_size = start_window_nb_samples;
|
int window_size = start_window_nb_samples;
|
||||||
|
const int cache_size = s->cache_size;
|
||||||
int *front = s->start_front;
|
int *front = s->start_front;
|
||||||
int *back = s->start_back;
|
int *back = s->start_back;
|
||||||
|
|
||||||
|
@ -352,7 +353,7 @@ static void fn(filter_start)(AVFilterContext *ctx,
|
||||||
ftype start_ow = startw[start_wpos + ch];
|
ftype start_ow = startw[start_wpos + ch];
|
||||||
ftype tstart;
|
ftype tstart;
|
||||||
|
|
||||||
tstart = fn(s->compute)(start_cache + ch * start_window_nb_samples,
|
tstart = fn(s->compute)(start_cache + ch * cache_size,
|
||||||
start_sample,
|
start_sample,
|
||||||
start_ow,
|
start_ow,
|
||||||
window_size,
|
window_size,
|
||||||
|
@ -423,8 +424,9 @@ static void fn(filter_stop)(AVFilterContext *ctx,
|
||||||
const int stop_duration = s->stop_duration;
|
const int stop_duration = s->stop_duration;
|
||||||
ftype *stop_cache = (ftype *)s->stop_cache;
|
ftype *stop_cache = (ftype *)s->stop_cache;
|
||||||
const int stop_silence = s->stop_silence;
|
const int stop_silence = s->stop_silence;
|
||||||
const int restart = s->restart;
|
|
||||||
int window_size = stop_window_nb_samples;
|
int window_size = stop_window_nb_samples;
|
||||||
|
const int cache_size = s->cache_size;
|
||||||
|
const int restart = s->restart;
|
||||||
int *front = s->stop_front;
|
int *front = s->stop_front;
|
||||||
int *back = s->stop_back;
|
int *back = s->stop_back;
|
||||||
|
|
||||||
|
@ -446,7 +448,7 @@ static void fn(filter_stop)(AVFilterContext *ctx,
|
||||||
ftype stop_ow = stopw[stop_wpos + ch];
|
ftype stop_ow = stopw[stop_wpos + ch];
|
||||||
ftype tstop;
|
ftype tstop;
|
||||||
|
|
||||||
tstop = fn(s->compute)(stop_cache + ch * stop_window_nb_samples,
|
tstop = fn(s->compute)(stop_cache + ch * cache_size,
|
||||||
stop_sample,
|
stop_sample,
|
||||||
stop_ow,
|
stop_ow,
|
||||||
window_size,
|
window_size,
|
||||||
|
|
Loading…
Reference in New Issue