56 int16_t
sample, int16_t *prev_y,
int intensity);
59 #define OFFSET(x) offsetof(ShowWavesContext, x)
60 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
136 outlink->
w = showwaves->
w;
137 outlink->
h = showwaves->
h;
181 #define MAX_INT16 ((1<<15) -1)
184 int16_t
sample, int16_t *prev_y,
int intensity)
187 if (h >= 0 && h < height)
188 buf[h * linesize] += intensity;
192 int16_t
sample, int16_t *prev_y,
int intensity)
196 int start = height/2;
197 int end = av_clip(h, 0, height-1);
199 FFSWAP(int16_t, start, end);
200 for (k = start; k <
end; k++)
201 buf[k * linesize] += intensity;
205 int16_t
sample, int16_t *prev_y,
int intensity)
209 if (h >= 0 && h < height) {
210 buf[h * linesize] += intensity;
211 if (*prev_y && h != *prev_y) {
213 int end = av_clip(h, 0, height-1);
215 FFSWAP(int16_t, start, end);
216 for (k = start + 1; k <
end; k++)
217 buf[k * linesize] += intensity;
224 int16_t
sample, int16_t *prev_y,
int intensity)
227 const int h =
av_rescale(abs(sample), height, UINT16_MAX);
228 const int start = (height - h) / 2;
229 const int end = start + h;
230 for (k = start; k <
end; k++)
231 buf[k * linesize] += intensity;
241 int linesize = outpicref ? outpicref->
linesize[0] : 0;
242 int16_t *p = (int16_t *)insamples->
data[0];
245 const int n = showwaves->
n;
250 for (i = 0; i < nb_samples; i++) {
256 outpicref->
width = outlink->
w;
257 outpicref->
height = outlink->
h;
258 outpicref->
pts = insamples->
pts +
263 for (j = 0; j < outlink->
h; j++)
264 memset(outpicref->
data[0] + j * linesize, 0, outlink->
w);
269 buf += j*ch_height*linesize;
270 showwaves->
draw_sample(buf, ch_height, linesize, *p++,
279 if (showwaves->
buf_idx == showwaves->
w)
293 switch (showwaves->
mode) {
330 .
inputs = showwaves_inputs,
332 .priv_class = &showwaves_class,