lavfi/kerndeint: use aligned linesizes for the temporary buffer.
This improves the performances just enough to match mp=kerndeint. Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
This commit is contained in:
parent
2042cd3769
commit
51ba843f19
@ -40,8 +40,9 @@ typedef struct {
|
||||
int frame; ///< frame count, starting from 0
|
||||
int thresh, map, order, sharp, twoway;
|
||||
int vsub;
|
||||
uint8_t *tmp_data [4]; ///< temporary plane data buffer
|
||||
int tmp_bwidth[4]; ///< temporary plane byte width
|
||||
uint8_t *tmp_data [4]; ///< temporary plane data buffer
|
||||
int tmp_linesize[4]; ///< temporary plane byte linesize
|
||||
int tmp_bwidth [4]; ///< temporary plane byte width
|
||||
} KerndeintContext;
|
||||
|
||||
#define OFFSET(x) offsetof(KerndeintContext, x)
|
||||
@ -101,11 +102,15 @@ static int config_props(AVFilterLink *inlink)
|
||||
|
||||
kerndeint->vsub = desc->log2_chroma_h;
|
||||
|
||||
ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_bwidth,
|
||||
inlink->w, inlink->h, inlink->format, 1);
|
||||
ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_linesize,
|
||||
inlink->w, inlink->h, inlink->format, 16);
|
||||
if (ret < 0)
|
||||
return 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;
|
||||
}
|
||||
|
||||
@ -161,7 +166,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic)
|
||||
|
||||
srcp = srcp_saved = inpic->data[plane];
|
||||
src_linesize = inpic->linesize[plane];
|
||||
psrc_linesize = kerndeint->tmp_bwidth[plane];
|
||||
psrc_linesize = kerndeint->tmp_linesize[plane];
|
||||
dstp = dstp_saved = outpic->data[plane];
|
||||
dst_linesize = outpic->linesize[plane];
|
||||
srcp = srcp_saved + (1 - order) * src_linesize;
|
||||
|
Loading…
Reference in New Issue
Block a user