summaryrefslogtreecommitdiff
path: root/libavfilter/vf_hflip.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <ceffmpeg@gmail.com>2020-07-26 21:58:31 +0200
committerCarl Eugen Hoyos <ceffmpeg@gmail.com>2020-08-25 01:29:24 +0200
commitb61376bdee61c08732105fa331eb076497eface9 (patch)
tree0e8ab0e86d92e4e2ea639d55ee677b5bb8707fd8 /libavfilter/vf_hflip.c
parent3092a53cbc48252d29007177205f599c9c6f8769 (diff)
lavfi/hflip: Support Bayer pixel formats.
Fixes part of ticket #8819.
Diffstat (limited to 'libavfilter/vf_hflip.c')
-rw-r--r--libavfilter/vf_hflip.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavfilter/vf_hflip.c b/libavfilter/vf_hflip.c
index b77afc77fc..8d7bd9b4db 100644
--- a/libavfilter/vf_hflip.c
+++ b/libavfilter/vf_hflip.c
@@ -138,6 +138,7 @@ static int config_props(AVFilterLink *inlink)
s->planewidth[1] = s->planewidth[2] = AV_CEIL_RSHIFT(inlink->w, hsub);
s->planeheight[0] = s->planeheight[3] = inlink->h;
s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, vsub);
+ s->bayer_plus1 = !!(pix_desc->flags & AV_PIX_FMT_FLAG_BAYER) + 1;
nb_planes = av_pix_fmt_count_planes(inlink->format);
@@ -149,6 +150,7 @@ int ff_hflip_init(FlipContext *s, int step[4], int nb_planes)
int i;
for (i = 0; i < nb_planes; i++) {
+ step[i] *= s->bayer_plus1;
switch (step[i]) {
case 1: s->flip_line[i] = hflip_byte_c; break;
case 2: s->flip_line[i] = hflip_short_c; break;
@@ -180,7 +182,7 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
int i, plane, step;
for (plane = 0; plane < 4 && in->data[plane] && in->linesize[plane]; plane++) {
- const int width = s->planewidth[plane];
+ const int width = s->planewidth[plane] / s->bayer_plus1;
const int height = s->planeheight[plane];
const int start = (height * job ) / nb_jobs;
const int end = (height * (job+1)) / nb_jobs;