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; }