Commit 51ba843f authored by Clément Bœsch's avatar Clément Bœsch Committed by Stefano Sabatini

lavfi/kerndeint: use aligned linesizes for the temporary buffer.

This improves the performances just enough to match mp=kerndeint.
Signed-off-by: 's avatarStefano Sabatini <stefasab@gmail.com>
parent 2042cd37
...@@ -40,8 +40,9 @@ typedef struct { ...@@ -40,8 +40,9 @@ typedef struct {
int frame; ///< frame count, starting from 0 int frame; ///< frame count, starting from 0
int thresh, map, order, sharp, twoway; int thresh, map, order, sharp, twoway;
int vsub; int vsub;
uint8_t *tmp_data [4]; ///< temporary plane data buffer uint8_t *tmp_data [4]; ///< temporary plane data buffer
int tmp_bwidth[4]; ///< temporary plane byte width int tmp_linesize[4]; ///< temporary plane byte linesize
int tmp_bwidth [4]; ///< temporary plane byte width
} KerndeintContext; } KerndeintContext;
#define OFFSET(x) offsetof(KerndeintContext, x) #define OFFSET(x) offsetof(KerndeintContext, x)
...@@ -101,11 +102,15 @@ static int config_props(AVFilterLink *inlink) ...@@ -101,11 +102,15 @@ static int config_props(AVFilterLink *inlink)
kerndeint->vsub = desc->log2_chroma_h; kerndeint->vsub = desc->log2_chroma_h;
ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_bwidth, ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_linesize,
inlink->w, inlink->h, inlink->format, 1); inlink->w, inlink->h, inlink->format, 16);
if (ret < 0) if (ret < 0)
return ret; return ret;
memset(kerndeint->tmp_data[0], 0, ret); memset(kerndeint->tmp_data[0], 0, ret);
if ((ret = av_image_fill_linesizes(kerndeint->tmp_bwidth, inlink->format, inlink->w)) < 0)
return ret;
return 0; return 0;
} }
...@@ -161,7 +166,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic) ...@@ -161,7 +166,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic)
srcp = srcp_saved = inpic->data[plane]; srcp = srcp_saved = inpic->data[plane];
src_linesize = inpic->linesize[plane]; src_linesize = inpic->linesize[plane];
psrc_linesize = kerndeint->tmp_bwidth[plane]; psrc_linesize = kerndeint->tmp_linesize[plane];
dstp = dstp_saved = outpic->data[plane]; dstp = dstp_saved = outpic->data[plane];
dst_linesize = outpic->linesize[plane]; dst_linesize = outpic->linesize[plane];
srcp = srcp_saved + (1 - order) * src_linesize; srcp = srcp_saved + (1 - order) * src_linesize;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment