|
|
|
@@ -74,12 +74,12 @@ static int query_formats(AVFilterContext *ctx) |
|
|
|
|
|
|
|
static int config_props(AVFilterLink *inlink) |
|
|
|
{ |
|
|
|
FlipContext *flip = inlink->dst->priv; |
|
|
|
FlipContext *s = inlink->dst->priv; |
|
|
|
const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(inlink->format); |
|
|
|
|
|
|
|
av_image_fill_max_pixsteps(flip->max_step, NULL, pix_desc); |
|
|
|
flip->hsub = pix_desc->log2_chroma_w; |
|
|
|
flip->vsub = pix_desc->log2_chroma_h; |
|
|
|
av_image_fill_max_pixsteps(s->max_step, NULL, pix_desc); |
|
|
|
s->hsub = pix_desc->log2_chroma_w; |
|
|
|
s->vsub = pix_desc->log2_chroma_h; |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
@@ -87,7 +87,7 @@ static int config_props(AVFilterLink *inlink) |
|
|
|
static int filter_frame(AVFilterLink *inlink, AVFrame *in) |
|
|
|
{ |
|
|
|
AVFilterContext *ctx = inlink->dst; |
|
|
|
FlipContext *flip = ctx->priv; |
|
|
|
FlipContext *s = ctx->priv; |
|
|
|
AVFilterLink *outlink = ctx->outputs[0]; |
|
|
|
AVFrame *out; |
|
|
|
uint8_t *inrow, *outrow; |
|
|
|
@@ -101,9 +101,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) |
|
|
|
av_frame_copy_props(out, in); |
|
|
|
|
|
|
|
for (plane = 0; plane < 4 && in->data[plane]; plane++) { |
|
|
|
step = flip->max_step[plane]; |
|
|
|
hsub = (plane == 1 || plane == 2) ? flip->hsub : 0; |
|
|
|
vsub = (plane == 1 || plane == 2) ? flip->vsub : 0; |
|
|
|
step = s->max_step[plane]; |
|
|
|
hsub = (plane == 1 || plane == 2) ? s->hsub : 0; |
|
|
|
vsub = (plane == 1 || plane == 2) ? s->vsub : 0; |
|
|
|
|
|
|
|
outrow = out->data[plane]; |
|
|
|
inrow = in ->data[plane] + ((inlink->w >> hsub) - 1) * step; |
|
|
|
|