summaryrefslogtreecommitdiff
path: root/libavfilter/vf_kerndeint.c
diff options
context:
space:
mode:
authorClément Bœsch <ubitux@gmail.com>2013-01-06 19:34:16 +0100
committerStefano Sabatini <stefasab@gmail.com>2013-02-16 00:08:31 +0100
commit51ba843f195c11acef20e91c98c037e39d5fe79e (patch)
treed41b359d037d9bd2b16e1c7d238a90d8a487ccc6 /libavfilter/vf_kerndeint.c
parent2042cd37699f306cea011993e406e6e8d02b6897 (diff)
downloadffmpeg-51ba843f195c11acef20e91c98c037e39d5fe79e.tar.gz
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>
Diffstat (limited to 'libavfilter/vf_kerndeint.c')
-rw-r--r--libavfilter/vf_kerndeint.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/libavfilter/vf_kerndeint.c b/libavfilter/vf_kerndeint.c
index 12eb969b22..8449d00e62 100644
--- a/libavfilter/vf_kerndeint.c
+++ b/libavfilter/vf_kerndeint.c
@@ -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;