[FFmpeg-devel] Fw: [PATCH] Refactor two near-identical clauses.
Shlomi Fish
shlomif at shlomifish.org
Tue Jun 12 12:53:20 EEST 2018
This message did not arrive to the list after three submissions.
Begin forwarded message:
Date: Tue, 12 Jun 2018 12:42:52 +0300
From: Shlomi Fish <shlomif at shlomifish.org>
To: ffmpeg-devel at ffmpeg.org
Cc: Shlomi Fish <shlomif at shlomifish.org>
Subject: [PATCH] Refactor two near-identical clauses.
Placed under the Expat licence . All tests pass.
---
libavfilter/vf_weave.c | 33 ++++++++++++++-------------------
1 file changed, 14 insertions(+), 19 deletions(-)
diff --git a/libavfilter/vf_weave.c b/libavfilter/vf_weave.c
index 037f5d1cf2..be371201e1 100644
--- a/libavfilter/vf_weave.c
+++ b/libavfilter/vf_weave.c
@@ -23,6 +23,7 @@
#include "libavutil/pixdesc.h"
#include "avfilter.h"
#include "internal.h"
+#include <stdbool.h>
typedef struct WeaveContext {
const AVClass *class;
@@ -84,6 +85,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
AVFilterLink *outlink = ctx->outputs[0];
AVFrame *out;
int i;
+ bool weave;
+ int field1, field2;
if (!s->prev) {
s->prev = in;
@@ -98,26 +101,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
}
av_frame_copy_props(out, in);
+ weave = (s->double_weave && !(inlink->frame_count_out & 1));
+ field1 = s->first_field * weave;
+ field2 = s->first_field * !weave;
for (i = 0; i < s->nb_planes; i++) {
- if (s->double_weave && !(inlink->frame_count_out & 1)) {
- av_image_copy_plane(out->data[i] + out->linesize[i] *
s->first_field,
- out->linesize[i] * 2,
- in->data[i], in->linesize[i],
- s->linesize[i], s->planeheight[i]);
- av_image_copy_plane(out->data[i] + out->linesize[i]
* !s->first_field,
- out->linesize[i] * 2,
- s->prev->data[i], s->prev->linesize[i],
- s->linesize[i], s->planeheight[i]);
- } else {
- av_image_copy_plane(out->data[i] + out->linesize[i]
* !s->first_field,
- out->linesize[i] * 2,
- in->data[i], in->linesize[i],
- s->linesize[i], s->planeheight[i]);
- av_image_copy_plane(out->data[i] + out->linesize[i] *
s->first_field,
- out->linesize[i] * 2,
- s->prev->data[i], s->prev->linesize[i],
- s->linesize[i], s->planeheight[i]);
- }
+ av_image_copy_plane(out->data[i] + out->linesize[i] * field1,
+ out->linesize[i] * 2,
+ in->data[i], in->linesize[i],
+ s->linesize[i], s->planeheight[i]);
+ av_image_copy_plane(out->data[i] + out->linesize[i] * field2,
+ out->linesize[i] * 2,
+ s->prev->data[i], s->prev->linesize[i],
+ s->linesize[i], s->planeheight[i]);
}
out->pts = s->double_weave ? s->prev->pts : in->pts / 2;
--
2.17.0
More information about the ffmpeg-devel
mailing list