Signed-off-by: Paul B Mahol <onemda@gmail.com>
Paul B Mahol authored on 2013/10/02 19:28:04... | ... |
@@ -62,17 +62,16 @@ static char *get_metadata_val(AVFrame *insamples, const char *key) |
62 | 62 |
static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) |
63 | 63 |
{ |
64 | 64 |
int i; |
65 |
- SilenceDetectContext *silence = inlink->dst->priv; |
|
65 |
+ SilenceDetectContext *s = inlink->dst->priv; |
|
66 | 66 |
const int nb_channels = inlink->channels; |
67 | 67 |
const int srate = inlink->sample_rate; |
68 | 68 |
const int nb_samples = insamples->nb_samples * nb_channels; |
69 |
- const int64_t nb_samples_notify = srate * silence->duration * nb_channels; |
|
69 |
+ const int64_t nb_samples_notify = srate * s->duration * nb_channels; |
|
70 | 70 |
|
71 | 71 |
// scale number of null samples to the new sample rate |
72 |
- if (silence->last_sample_rate && silence->last_sample_rate != srate) |
|
73 |
- silence->nb_null_samples = |
|
74 |
- srate * silence->nb_null_samples / silence->last_sample_rate; |
|
75 |
- silence->last_sample_rate = srate; |
|
72 |
+ if (s->last_sample_rate && s->last_sample_rate != srate) |
|
73 |
+ s->nb_null_samples = srate * s->nb_null_samples / s->last_sample_rate; |
|
74 |
+ s->last_sample_rate = srate; |
|
76 | 75 |
|
77 | 76 |
// TODO: support more sample formats |
78 | 77 |
// TODO: document metadata |
... | ... |
@@ -80,29 +79,29 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) |
80 | 80 |
double *p = (double *)insamples->data[0]; |
81 | 81 |
|
82 | 82 |
for (i = 0; i < nb_samples; i++, p++) { |
83 |
- if (*p < silence->noise && *p > -silence->noise) { |
|
84 |
- if (!silence->start) { |
|
85 |
- silence->nb_null_samples++; |
|
86 |
- if (silence->nb_null_samples >= nb_samples_notify) { |
|
87 |
- silence->start = insamples->pts - (int64_t)(silence->duration / av_q2d(inlink->time_base) + .5); |
|
83 |
+ if (*p < s->noise && *p > -s->noise) { |
|
84 |
+ if (!s->start) { |
|
85 |
+ s->nb_null_samples++; |
|
86 |
+ if (s->nb_null_samples >= nb_samples_notify) { |
|
87 |
+ s->start = insamples->pts - (int64_t)(s->duration / av_q2d(inlink->time_base) + .5); |
|
88 | 88 |
av_dict_set(&insamples->metadata, "lavfi.silence_start", |
89 |
- av_ts2timestr(silence->start, &inlink->time_base), 0); |
|
90 |
- av_log(silence, AV_LOG_INFO, "silence_start: %s\n", |
|
89 |
+ av_ts2timestr(s->start, &inlink->time_base), 0); |
|
90 |
+ av_log(s, AV_LOG_INFO, "silence_start: %s\n", |
|
91 | 91 |
get_metadata_val(insamples, "lavfi.silence_start")); |
92 | 92 |
} |
93 | 93 |
} |
94 | 94 |
} else { |
95 |
- if (silence->start) { |
|
95 |
+ if (s->start) { |
|
96 | 96 |
av_dict_set(&insamples->metadata, "lavfi.silence_end", |
97 | 97 |
av_ts2timestr(insamples->pts, &inlink->time_base), 0); |
98 | 98 |
av_dict_set(&insamples->metadata, "lavfi.silence_duration", |
99 |
- av_ts2timestr(insamples->pts - silence->start, &inlink->time_base), 0); |
|
100 |
- av_log(silence, AV_LOG_INFO, |
|
99 |
+ av_ts2timestr(insamples->pts - s->start, &inlink->time_base), 0); |
|
100 |
+ av_log(s, AV_LOG_INFO, |
|
101 | 101 |
"silence_end: %s | silence_duration: %s\n", |
102 | 102 |
get_metadata_val(insamples, "lavfi.silence_end"), |
103 | 103 |
get_metadata_val(insamples, "lavfi.silence_duration")); |
104 | 104 |
} |
105 |
- silence->nb_null_samples = silence->start = 0; |
|
105 |
+ s->nb_null_samples = s->start = 0; |
|
106 | 106 |
} |
107 | 107 |
} |
108 | 108 |
} |