summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavfilter/hflip.h1
-rw-r--r--libavfilter/vf_hflip.c14
2 files changed, 11 insertions, 4 deletions
diff --git a/libavfilter/hflip.h b/libavfilter/hflip.h
index cbe1fb3d8c..204090dbb4 100644
--- a/libavfilter/hflip.h
+++ b/libavfilter/hflip.h
@@ -33,6 +33,7 @@ typedef struct FlipContext {
void (*flip_line[4])(const uint8_t *src, uint8_t *dst, int w);
} FlipContext;
+int ff_hflip_init(FlipContext *s, int step[4], int nb_planes);
void ff_hflip_init_x86(FlipContext *s, int step[4], int nb_planes);
#endif /* AVFILTER_HFLIP_H */
diff --git a/libavfilter/vf_hflip.c b/libavfilter/vf_hflip.c
index 957ddd9900..b77afc77fc 100644
--- a/libavfilter/vf_hflip.c
+++ b/libavfilter/vf_hflip.c
@@ -131,7 +131,7 @@ static int config_props(AVFilterLink *inlink)
const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(inlink->format);
const int hsub = pix_desc->log2_chroma_w;
const int vsub = pix_desc->log2_chroma_h;
- int nb_planes, i;
+ int nb_planes;
av_image_fill_max_pixsteps(s->max_step, NULL, pix_desc);
s->planewidth[0] = s->planewidth[3] = inlink->w;
@@ -141,8 +141,15 @@ static int config_props(AVFilterLink *inlink)
nb_planes = av_pix_fmt_count_planes(inlink->format);
+ return ff_hflip_init(s, s->max_step, nb_planes);
+}
+
+int ff_hflip_init(FlipContext *s, int step[4], int nb_planes)
+{
+ int i;
+
for (i = 0; i < nb_planes; i++) {
- switch (s->max_step[i]) {
+ switch (step[i]) {
case 1: s->flip_line[i] = hflip_byte_c; break;
case 2: s->flip_line[i] = hflip_short_c; break;
case 3: s->flip_line[i] = hflip_b24_c; break;
@@ -153,9 +160,8 @@ static int config_props(AVFilterLink *inlink)
return AVERROR_BUG;
}
}
-
if (ARCH_X86)
- ff_hflip_init_x86(s, s->max_step, nb_planes);
+ ff_hflip_init_x86(s, step, nb_planes);
return 0;
}