[FFmpeg-cvslog] avfilter/vf_blend: fix incorrect Y variable when threading is used
Paul B Mahol
git at videolan.org
Mon May 23 21:50:01 CEST 2016
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Mon May 23 21:47:02 2016 +0200| [5b8faaad6c71bbb90951ca1642391e11cf6f5f91] | committer: Paul B Mahol
avfilter/vf_blend: fix incorrect Y variable when threading is used
Signed-off-by: Paul B Mahol <onemda at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5b8faaad6c71bbb90951ca1642391e11cf6f5f91
---
libavfilter/blend.h | 2 +-
libavfilter/vf_blend.c | 16 ++++++++--------
libavfilter/x86/vf_blend_init.c | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/libavfilter/blend.h b/libavfilter/blend.h
index f0712ff..54c4fdb 100644
--- a/libavfilter/blend.h
+++ b/libavfilter/blend.h
@@ -70,7 +70,7 @@ typedef struct FilterParams {
const uint8_t *bottom, ptrdiff_t bottom_linesize,
uint8_t *dst, ptrdiff_t dst_linesize,
ptrdiff_t width, ptrdiff_t height,
- struct FilterParams *param, double *values);
+ struct FilterParams *param, double *values, int starty);
} FilterParams;
void ff_blend_init(FilterParams *param, int is_16bit);
diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index 7125a1e..a121267 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
@@ -125,7 +125,7 @@ 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 height, \
- FilterParams *param, double *values) \
+ FilterParams *param, double *values, int starty) \
{ \
av_image_copy_plane(dst, dst_linesize, src, src ## _linesize, \
width, height); \
@@ -140,7 +140,7 @@ 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 height,
- FilterParams *param, double *values)
+ FilterParams *param, double *values, int starty)
{
const double opacity = param->opacity;
int i, j;
@@ -159,7 +159,7 @@ 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 height,
- FilterParams *param, double *values)
+ FilterParams *param, double *values, int starty)
{
const uint16_t *top = (uint16_t*)_top;
const uint16_t *bottom = (uint16_t*)_bottom;
@@ -185,7 +185,7 @@ 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 height, \
- FilterParams *param, double *values) \
+ FilterParams *param, double *values, int starty) \
{ \
double opacity = param->opacity; \
int i, j; \
@@ -205,7 +205,7 @@ 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 height, \
- FilterParams *param, double *values) \
+ FilterParams *param, double *values, int starty) \
{ \
const uint16_t *top = (uint16_t*)_top; \
const uint16_t *bottom = (uint16_t*)_bottom; \
@@ -313,7 +313,7 @@ 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 height, \
- FilterParams *param, double *values) \
+ FilterParams *param, double *values, int starty) \
{ \
const type *top = (type*)_top; \
const type *bottom = (type*)_bottom; \
@@ -325,7 +325,7 @@ static void blend_expr_## name(const uint8_t *_top, ptrdiff_t top_linesize,
bottom_linesize /= div; \
\
for (y = 0; y < height; y++) { \
- values[VAR_Y] = y; \
+ values[VAR_Y] = y + starty; \
for (x = 0; x < width; x++) { \
values[VAR_X] = x; \
values[VAR_TOP] = values[VAR_A] = top[x]; \
@@ -365,7 +365,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, height, td->param, &values[0]);
+ td->w, height, td->param, &values[0], slice_start);
return 0;
}
diff --git a/libavfilter/x86/vf_blend_init.c b/libavfilter/x86/vf_blend_init.c
index ed053ba..96fe3d8 100644
--- a/libavfilter/x86/vf_blend_init.c
+++ b/libavfilter/x86/vf_blend_init.c
@@ -28,7 +28,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 height, \
- struct FilterParams *param, double *values);
+ struct FilterParams *param, double *values, int starty);
BLEND_FUNC(addition, sse2)
BLEND_FUNC(addition128, sse2)
More information about the ffmpeg-cvslog
mailing list