[FFmpeg-cvslog] vf_blend: Reduce number of arguments for kernel function
Timothy Gu
git at videolan.org
Sun Feb 14 17:59:20 CET 2016
ffmpeg | branch: master | Timothy Gu <timothygu99 at gmail.com> | Sun Feb 14 02:01:35 2016 +0000| [45743239738bd74de6be475cd5abe4bcbee9f81c] | committer: Timothy Gu
vf_blend: Reduce number of arguments for kernel function
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=45743239738bd74de6be475cd5abe4bcbee9f81c
---
libavfilter/blend.h | 2 +-
libavfilter/vf_blend.c | 27 ++++++++++++++-------------
libavfilter/x86/vf_blend.asm | 3 +--
libavfilter/x86/vf_blend_init.c | 2 +-
4 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/libavfilter/blend.h b/libavfilter/blend.h
index 161055c..7003505 100644
--- a/libavfilter/blend.h
+++ b/libavfilter/blend.h
@@ -67,7 +67,7 @@ typedef struct FilterParams {
void (*blend)(const uint8_t *top, ptrdiff_t top_linesize,
const uint8_t *bottom, ptrdiff_t bottom_linesize,
uint8_t *dst, ptrdiff_t dst_linesize,
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end,
+ ptrdiff_t width, ptrdiff_t height,
struct FilterParams *param, double *values);
} FilterParams;
diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index 599084f..4b4d435 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
@@ -122,11 +122,11 @@ AVFILTER_DEFINE_CLASS(blend);
static void blend_copy ## src(const uint8_t *top, ptrdiff_t top_linesize, \
const uint8_t *bottom, ptrdiff_t bottom_linesize,\
uint8_t *dst, ptrdiff_t dst_linesize, \
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, \
+ ptrdiff_t width, ptrdiff_t height, \
FilterParams *param, double *values) \
{ \
av_image_copy_plane(dst, dst_linesize, src, src ## _linesize, \
- width, end - start); \
+ width, height); \
}
COPY(top)
@@ -137,13 +137,13 @@ COPY(bottom)
static void blend_normal_8bit(const uint8_t *top, ptrdiff_t top_linesize,
const uint8_t *bottom, ptrdiff_t bottom_linesize,
uint8_t *dst, ptrdiff_t dst_linesize,
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end,
+ ptrdiff_t width, ptrdiff_t height,
FilterParams *param, double *values)
{
const double opacity = param->opacity;
int i, j;
- for (i = start; i < end; i++) {
+ for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
dst[j] = top[j] * opacity + bottom[j] * (1. - opacity);
}
@@ -156,7 +156,7 @@ static void blend_normal_8bit(const uint8_t *top, ptrdiff_t top_linesize,
static void blend_normal_16bit(const uint8_t *_top, ptrdiff_t top_linesize,
const uint8_t *_bottom, ptrdiff_t bottom_linesize,
uint8_t *_dst, ptrdiff_t dst_linesize,
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end,
+ ptrdiff_t width, ptrdiff_t height,
FilterParams *param, double *values)
{
const uint16_t *top = (uint16_t*)_top;
@@ -168,7 +168,7 @@ static void blend_normal_16bit(const uint8_t *_top, ptrdiff_t top_linesize,
top_linesize /= 2;
bottom_linesize /= 2;
- for (i = start; i < end; i++) {
+ for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
dst[j] = top[j] * opacity + bottom[j] * (1. - opacity);
}
@@ -182,13 +182,13 @@ static void blend_normal_16bit(const uint8_t *_top, ptrdiff_t top_linesize,
static void blend_## name##_8bit(const uint8_t *top, ptrdiff_t top_linesize, \
const uint8_t *bottom, ptrdiff_t bottom_linesize, \
uint8_t *dst, ptrdiff_t dst_linesize, \
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, \
+ ptrdiff_t width, ptrdiff_t height, \
FilterParams *param, double *values) \
{ \
double opacity = param->opacity; \
int i, j; \
\
- for (i = start; i < end; i++) { \
+ for (i = 0; i < height; i++) { \
for (j = 0; j < width; j++) { \
dst[j] = top[j] + ((expr) - top[j]) * opacity; \
} \
@@ -202,7 +202,7 @@ static void blend_## name##_8bit(const uint8_t *top, ptrdiff_t top_linesize,
static void blend_## name##_16bit(const uint8_t *_top, ptrdiff_t top_linesize, \
const uint8_t *_bottom, ptrdiff_t bottom_linesize, \
uint8_t *_dst, ptrdiff_t dst_linesize, \
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, \
+ ptrdiff_t width, ptrdiff_t height, \
FilterParams *param, double *values) \
{ \
const uint16_t *top = (uint16_t*)_top; \
@@ -214,7 +214,7 @@ static void blend_## name##_16bit(const uint8_t *_top, ptrdiff_t top_linesize,
top_linesize /= 2; \
bottom_linesize /= 2; \
\
- for (i = start; i < end; i++) { \
+ for (i = 0; i < height; i++) { \
for (j = 0; j < width; j++) { \
dst[j] = top[j] + ((expr) - top[j]) * opacity; \
} \
@@ -306,7 +306,7 @@ DEFINE_BLEND16(linearlight,av_clip_uint16((B < 32768) ? B + 2 * A - 65535 : B +
static void blend_expr_## name(const uint8_t *_top, ptrdiff_t top_linesize, \
const uint8_t *_bottom, ptrdiff_t bottom_linesize, \
uint8_t *_dst, ptrdiff_t dst_linesize, \
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, \
+ ptrdiff_t width, ptrdiff_t height, \
FilterParams *param, double *values) \
{ \
const type *top = (type*)_top; \
@@ -318,7 +318,7 @@ static void blend_expr_## name(const uint8_t *_top, ptrdiff_t top_linesize,
top_linesize /= div; \
bottom_linesize /= div; \
\
- for (y = start; y < end; y++) { \
+ for (y = 0; y < height; y++) { \
values[VAR_Y] = y; \
for (x = 0; x < width; x++) { \
values[VAR_X] = x; \
@@ -340,6 +340,7 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
ThreadData *td = arg;
int slice_start = (td->h * jobnr ) / nb_jobs;
int slice_end = (td->h * (jobnr+1)) / nb_jobs;
+ int height = slice_end - slice_start;
const uint8_t *top = td->top->data[td->plane];
const uint8_t *bottom = td->bottom->data[td->plane];
uint8_t *dst = td->dst->data[td->plane];
@@ -358,7 +359,7 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
td->bottom->linesize[td->plane],
dst + slice_start * td->dst->linesize[td->plane],
td->dst->linesize[td->plane],
- td->w, slice_start, slice_end, td->param, &values[0]);
+ td->w, height, td->param, &values[0]);
return 0;
}
diff --git a/libavfilter/x86/vf_blend.asm b/libavfilter/x86/vf_blend.asm
index a5ea74c..47471aa 100644
--- a/libavfilter/x86/vf_blend.asm
+++ b/libavfilter/x86/vf_blend.asm
@@ -42,11 +42,10 @@ cglobal blend_%1, 5, 7, %2, top, top_linesize, bottom, bottom_linesize, dst, end
%define dst_linesizeq r5mp
%define widthq r6mp
%endif
- mov endd, dword r8m
+ mov endd, dword r7m
add topq, widthq
add bottomq, widthq
add dstq, widthq
- sub endd, dword r7m ; start
neg widthq
%endmacro
diff --git a/libavfilter/x86/vf_blend_init.c b/libavfilter/x86/vf_blend_init.c
index a6baf94..555e1e5 100644
--- a/libavfilter/x86/vf_blend_init.c
+++ b/libavfilter/x86/vf_blend_init.c
@@ -27,7 +27,7 @@
void ff_blend_##name##_##opt(const uint8_t *top, ptrdiff_t top_linesize, \
const uint8_t *bottom, ptrdiff_t bottom_linesize, \
uint8_t *dst, ptrdiff_t dst_linesize, \
- ptrdiff_t width, ptrdiff_t start, ptrdiff_t end, \
+ ptrdiff_t width, ptrdiff_t height, \
struct FilterParams *param, double *values);
BLEND_FUNC(addition, sse2)
More information about the ffmpeg-cvslog
mailing list