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: Michael Niedermayer <michaelni@gmx.at>
pull/18/merge
Michael Niedermayer 12 years ago
parent 1d08e4b584
commit bca59d7745
  1. 13
      libavfilter/vf_fade.c
  2. 56
      tests/ref/fate/filter-fade

@ -163,9 +163,8 @@ static int filter_slice_luma(AVFilterContext *ctx, void *arg, int jobnr,
{
FadeContext *s = ctx->priv;
AVFrame *frame = arg;
int slice_h = frame->height / nb_jobs;
int slice_start = jobnr * slice_h;
int slice_end = (jobnr == nb_jobs - 1) ? frame->height : (jobnr + 1) * slice_h;
int slice_start = (frame->height * jobnr ) / nb_jobs;
int slice_end = (frame->height * (jobnr+1)) / nb_jobs;
int i, j;
for (i = slice_start; i < slice_end; i++) {
@ -187,15 +186,15 @@ static int filter_slice_chroma(AVFilterContext *ctx, void *arg, int jobnr,
{
FadeContext *s = ctx->priv;
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;
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 (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++) {
/* 8421367 = ((128 << 1) + 1) << 15. It is an integer
* representation of 128.5. The .5 is for rounding

@ -5,20 +5,20 @@
0, 3, 3, 1, 152064, 0xb4e6c735
0, 4, 4, 1, 152064, 0xb4e6c735
0, 5, 5, 1, 152064, 0xb4e6c735
0, 6, 6, 1, 152064, 0x54bae320
0, 7, 7, 1, 152064, 0x53b60b7e
0, 8, 8, 1, 152064, 0x8bed0304
0, 9, 9, 1, 152064, 0x509c4b78
0, 10, 10, 1, 152064, 0x4cf869a4
0, 11, 11, 1, 152064, 0x958b7c66
0, 12, 12, 1, 152064, 0x45841fbf
0, 13, 13, 1, 152064, 0xcfee57ea
0, 14, 14, 1, 152064, 0x979ff709
0, 15, 15, 1, 152064, 0xf7ffd5e2
0, 16, 16, 1, 152064, 0xc42f4370
0, 17, 17, 1, 152064, 0x71ae098f
0, 18, 18, 1, 152064, 0x64146a42
0, 19, 19, 1, 152064, 0xdb3068fd
0, 6, 6, 1, 152064, 0x1f3b0657
0, 7, 7, 1, 152064, 0x6e7547e6
0, 8, 8, 1, 152064, 0x1197524c
0, 9, 9, 1, 152064, 0xb4cdb293
0, 10, 10, 1, 152064, 0xdd7cf1b8
0, 11, 11, 1, 152064, 0x360b1005
0, 12, 12, 1, 152064, 0x11a49918
0, 13, 13, 1, 152064, 0xa10dd4f9
0, 14, 14, 1, 152064, 0x78da71d7
0, 15, 15, 1, 152064, 0x105e4cc0
0, 16, 16, 1, 152064, 0x54bfa1c5
0, 17, 17, 1, 152064, 0xd666559e
0, 18, 18, 1, 152064, 0xd93faa1c
0, 19, 19, 1, 152064, 0xb1af85ed
0, 20, 20, 1, 152064, 0xfc7bf570
0, 21, 21, 1, 152064, 0x9dc72412
0, 22, 22, 1, 152064, 0x445d1d59
@ -30,20 +30,20 @@
0, 28, 28, 1, 152064, 0x76d2a455
0, 29, 29, 1, 152064, 0x6dc3650e
0, 30, 30, 1, 152064, 0x0f9d6aca
0, 31, 31, 1, 152064, 0x11446a9b
0, 32, 32, 1, 152064, 0x00be684c
0, 33, 33, 1, 152064, 0xe5f9ee52
0, 34, 34, 1, 152064, 0x21ecafb8
0, 35, 35, 1, 152064, 0xd42c962c
0, 36, 36, 1, 152064, 0xe00a270d
0, 37, 37, 1, 152064, 0xc1b53878
0, 38, 38, 1, 152064, 0xfc4e28dd
0, 39, 39, 1, 152064, 0x9c574e39
0, 40, 40, 1, 152064, 0xdd25cf9d
0, 41, 41, 1, 152064, 0x32959e70
0, 42, 42, 1, 152064, 0xac6498d5
0, 43, 43, 1, 152064, 0xcd595d21
0, 44, 44, 1, 152064, 0x2953ff74
0, 31, 31, 1, 152064, 0xddae8141
0, 32, 32, 1, 152064, 0x67cb8f24
0, 33, 33, 1, 152064, 0xc7a72348
0, 34, 34, 1, 152064, 0x0d7a1144
0, 35, 35, 1, 152064, 0x39adfb3d
0, 36, 36, 1, 152064, 0x0ecc70d5
0, 37, 37, 1, 152064, 0xf3a6805e
0, 38, 38, 1, 152064, 0xc3bd71ad
0, 39, 39, 1, 152064, 0xa9be9730
0, 40, 40, 1, 152064, 0xab9af790
0, 41, 41, 1, 152064, 0x4c3ccd25
0, 42, 42, 1, 152064, 0xbc83c58a
0, 43, 43, 1, 152064, 0x94877df4
0, 44, 44, 1, 152064, 0xa2360ea6
0, 45, 45, 1, 152064, 0xb4e6c735
0, 46, 46, 1, 152064, 0xb4e6c735
0, 47, 47, 1, 152064, 0xb4e6c735

Loading…
Cancel
Save