History

avfilter/vf_mix: improve speed of processing

Paul B Mahol committed 4 years ago

Commit 0da255d1 parent e235c761 file · +7 −6Browse files

Unified · Split

libavfilter/vf_mix.c+7−6
@@ -138,6 +138,7 @@ static int mix_frames(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) · 137 unmodified lines
138138 ThreadData *td = arg;
139139 AVFrame **in = td->in;
140140 AVFrame *out = td->out;
141+ const float *weights = s->weights;
141142 int i, p, x, y;
142143
143144 if (s->depth <= 8) {
@@ -148,15 +149,15 @@ static int mix_frames(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) · 4 unmodified lines
148149
149150 for (y = slice_start; y < slice_end; y++) {
150151 for (x = 0; x < s->linesize[p]; x++) {
151− int val = 0;
152+ float val = 0.f;
152153
153154 for (i = 0; i < s->nb_inputs; i++) {
154155 uint8_t src = in[i]->data[p][y * in[i]->linesize[p] + x];
155156
156− val += src * s->weights[i];
157+ val += src * weights[i];
157158 }
158159
159− dst[x] = av_clip_uint8(val * s->wfactor);
160+ dst[x] = av_clip_uint8(lrintf(val * s->wfactor));
160161 }
161162
162163 dst += out->linesize[p];
@@ -170,15 +171,15 @@ static int mix_frames(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) · 7 unmodified lines
170171
171172 for (y = slice_start; y < slice_end; y++) {
172173 for (x = 0; x < s->linesize[p] / 2; x++) {
173− int val = 0;
174+ float val = 0.f;
174175
175176 for (i = 0; i < s->nb_inputs; i++) {
176177 uint16_t src = AV_RN16(in[i]->data[p] + y * in[i]->linesize[p] + x * 2);
177178
178− val += src * s->weights[i];
179+ val += src * weights[i];
179180 }
180181
181− dst[x] = av_clip(val * s->wfactor, 0, s->max);
182+ dst[x] = av_clip(lrintf(val * s->wfactor), 0, s->max);
182183 }
183184
184185 dst += out->linesize[p] / 2;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t