Commit bca59d77 authored by Michael Niedermayer's avatar Michael Niedermayer

fade: fix slice sizes

This more evenly distributes the load between threads

This also fixes the chroma filtering where the filter was applied twice
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 1d08e4b5
...@@ -163,9 +163,8 @@ static int filter_slice_luma(AVFilterContext *ctx, void *arg, int jobnr, ...@@ -163,9 +163,8 @@ static int filter_slice_luma(AVFilterContext *ctx, void *arg, int jobnr,
{ {
FadeContext *s = ctx->priv; FadeContext *s = ctx->priv;
AVFrame *frame = arg; AVFrame *frame = arg;
int slice_h = frame->height / nb_jobs; int slice_start = (frame->height * jobnr ) / nb_jobs;
int slice_start = jobnr * slice_h; int slice_end = (frame->height * (jobnr+1)) / nb_jobs;
int slice_end = (jobnr == nb_jobs - 1) ? frame->height : (jobnr + 1) * slice_h;
int i, j; int i, j;
for (i = slice_start; i < slice_end; i++) { for (i = slice_start; i < slice_end; i++) {
...@@ -187,15 +186,15 @@ static int filter_slice_chroma(AVFilterContext *ctx, void *arg, int jobnr, ...@@ -187,15 +186,15 @@ static int filter_slice_chroma(AVFilterContext *ctx, void *arg, int jobnr,
{ {
FadeContext *s = ctx->priv; FadeContext *s = ctx->priv;
AVFrame *frame = arg; AVFrame *frame = arg;
int slice_h = FFALIGN(frame->height / nb_jobs, 1 << s->vsub);
int slice_start = jobnr * slice_h;
int slice_end = (jobnr == nb_jobs - 1) ? frame->height : (jobnr + 1) * slice_h;
int i, j, plane; int i, j, plane;
const int width = FF_CEIL_RSHIFT(frame->width, s->hsub); const int width = FF_CEIL_RSHIFT(frame->width, s->hsub);
const int height= FF_CEIL_RSHIFT(frame->height, s->vsub);
int slice_start = (height * jobnr ) / nb_jobs;
int slice_end = (height * (jobnr+1)) / nb_jobs;
for (plane = 1; plane < 3; plane++) { for (plane = 1; plane < 3; plane++) {
for (i = slice_start; i < slice_end; i++) { for (i = slice_start; i < slice_end; i++) {
uint8_t *p = frame->data[plane] + (i >> s->vsub) * frame->linesize[plane]; uint8_t *p = frame->data[plane] + i * frame->linesize[plane];
for (j = 0; j < width; j++) { for (j = 0; j < width; j++) {
/* 8421367 = ((128 << 1) + 1) << 15. It is an integer /* 8421367 = ((128 << 1) + 1) << 15. It is an integer
* representation of 128.5. The .5 is for rounding * representation of 128.5. The .5 is for rounding
......
...@@ -5,20 +5,20 @@ ...@@ -5,20 +5,20 @@
0, 3, 3, 1, 152064, 0xb4e6c735 0, 3, 3, 1, 152064, 0xb4e6c735
0, 4, 4, 1, 152064, 0xb4e6c735 0, 4, 4, 1, 152064, 0xb4e6c735
0, 5, 5, 1, 152064, 0xb4e6c735 0, 5, 5, 1, 152064, 0xb4e6c735
0, 6, 6, 1, 152064, 0x54bae320 0, 6, 6, 1, 152064, 0x1f3b0657
0, 7, 7, 1, 152064, 0x53b60b7e 0, 7, 7, 1, 152064, 0x6e7547e6
0, 8, 8, 1, 152064, 0x8bed0304 0, 8, 8, 1, 152064, 0x1197524c
0, 9, 9, 1, 152064, 0x509c4b78 0, 9, 9, 1, 152064, 0xb4cdb293
0, 10, 10, 1, 152064, 0x4cf869a4 0, 10, 10, 1, 152064, 0xdd7cf1b8
0, 11, 11, 1, 152064, 0x958b7c66 0, 11, 11, 1, 152064, 0x360b1005
0, 12, 12, 1, 152064, 0x45841fbf 0, 12, 12, 1, 152064, 0x11a49918
0, 13, 13, 1, 152064, 0xcfee57ea 0, 13, 13, 1, 152064, 0xa10dd4f9
0, 14, 14, 1, 152064, 0x979ff709 0, 14, 14, 1, 152064, 0x78da71d7
0, 15, 15, 1, 152064, 0xf7ffd5e2 0, 15, 15, 1, 152064, 0x105e4cc0
0, 16, 16, 1, 152064, 0xc42f4370 0, 16, 16, 1, 152064, 0x54bfa1c5
0, 17, 17, 1, 152064, 0x71ae098f 0, 17, 17, 1, 152064, 0xd666559e
0, 18, 18, 1, 152064, 0x64146a42 0, 18, 18, 1, 152064, 0xd93faa1c
0, 19, 19, 1, 152064, 0xdb3068fd 0, 19, 19, 1, 152064, 0xb1af85ed
0, 20, 20, 1, 152064, 0xfc7bf570 0, 20, 20, 1, 152064, 0xfc7bf570
0, 21, 21, 1, 152064, 0x9dc72412 0, 21, 21, 1, 152064, 0x9dc72412
0, 22, 22, 1, 152064, 0x445d1d59 0, 22, 22, 1, 152064, 0x445d1d59
...@@ -30,20 +30,20 @@ ...@@ -30,20 +30,20 @@
0, 28, 28, 1, 152064, 0x76d2a455 0, 28, 28, 1, 152064, 0x76d2a455
0, 29, 29, 1, 152064, 0x6dc3650e 0, 29, 29, 1, 152064, 0x6dc3650e
0, 30, 30, 1, 152064, 0x0f9d6aca 0, 30, 30, 1, 152064, 0x0f9d6aca
0, 31, 31, 1, 152064, 0x11446a9b 0, 31, 31, 1, 152064, 0xddae8141
0, 32, 32, 1, 152064, 0x00be684c 0, 32, 32, 1, 152064, 0x67cb8f24
0, 33, 33, 1, 152064, 0xe5f9ee52 0, 33, 33, 1, 152064, 0xc7a72348
0, 34, 34, 1, 152064, 0x21ecafb8 0, 34, 34, 1, 152064, 0x0d7a1144
0, 35, 35, 1, 152064, 0xd42c962c 0, 35, 35, 1, 152064, 0x39adfb3d
0, 36, 36, 1, 152064, 0xe00a270d 0, 36, 36, 1, 152064, 0x0ecc70d5
0, 37, 37, 1, 152064, 0xc1b53878 0, 37, 37, 1, 152064, 0xf3a6805e
0, 38, 38, 1, 152064, 0xfc4e28dd 0, 38, 38, 1, 152064, 0xc3bd71ad
0, 39, 39, 1, 152064, 0x9c574e39 0, 39, 39, 1, 152064, 0xa9be9730
0, 40, 40, 1, 152064, 0xdd25cf9d 0, 40, 40, 1, 152064, 0xab9af790
0, 41, 41, 1, 152064, 0x32959e70 0, 41, 41, 1, 152064, 0x4c3ccd25
0, 42, 42, 1, 152064, 0xac6498d5 0, 42, 42, 1, 152064, 0xbc83c58a
0, 43, 43, 1, 152064, 0xcd595d21 0, 43, 43, 1, 152064, 0x94877df4
0, 44, 44, 1, 152064, 0x2953ff74 0, 44, 44, 1, 152064, 0xa2360ea6
0, 45, 45, 1, 152064, 0xb4e6c735 0, 45, 45, 1, 152064, 0xb4e6c735
0, 46, 46, 1, 152064, 0xb4e6c735 0, 46, 46, 1, 152064, 0xb4e6c735
0, 47, 47, 1, 152064, 0xb4e6c735 0, 47, 47, 1, 152064, 0xb4e6c735
......
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