const uint8_t *chrDither = c->chrDither8;
int i;
- if (dstFormat == AV_PIX_FMT_NV12)
+ if (dstFormat == AV_PIX_FMT_NV12 ||
+ dstFormat == AV_PIX_FMT_NV24)
for (i=0; i<chrDstW; i++) {
int u = chrDither[i & 7] << 12;
int v = chrDither[(i + 3) & 7] << 12;
}
c->dither_error[0][i] = err;
} else {
- for (i = 0; i < dstW; i += 8) {
- int Y, acc = 0;
-
- Y = (buf0[i + 0] * yalpha1 + buf1[i + 0] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[0]);
- Y = (buf0[i + 1] * yalpha1 + buf1[i + 1] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[1]);
- Y = (buf0[i + 2] * yalpha1 + buf1[i + 2] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[2]);
- Y = (buf0[i + 3] * yalpha1 + buf1[i + 3] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[3]);
- Y = (buf0[i + 4] * yalpha1 + buf1[i + 4] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[4]);
- Y = (buf0[i + 5] * yalpha1 + buf1[i + 5] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[5]);
- Y = (buf0[i + 6] * yalpha1 + buf1[i + 6] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[6]);
- Y = (buf0[i + 7] * yalpha1 + buf1[i + 7] * yalpha) >> 19;
- accumulate_bit(acc, Y + d128[7]);
-
- output_pixel(*dest++, acc);
- }
+ for (i = 0; i < dstW; i += 8) {
+ int Y, acc = 0;
+
+ Y = (buf0[i + 0] * yalpha1 + buf1[i + 0] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[0]);
+ Y = (buf0[i + 1] * yalpha1 + buf1[i + 1] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[1]);
+ Y = (buf0[i + 2] * yalpha1 + buf1[i + 2] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[2]);
+ Y = (buf0[i + 3] * yalpha1 + buf1[i + 3] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[3]);
+ Y = (buf0[i + 4] * yalpha1 + buf1[i + 4] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[4]);
+ Y = (buf0[i + 5] * yalpha1 + buf1[i + 5] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[5]);
+ Y = (buf0[i + 6] * yalpha1 + buf1[i + 6] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[6]);
+ Y = (buf0[i + 7] * yalpha1 + buf1[i + 7] * yalpha) >> 19;
+ accumulate_bit(acc, Y + d128[7]);
+
+ output_pixel(*dest++, acc);
+ }
}
}
}
c->dither_error[0][i] = err;
} else {
- for (i = 0; i < dstW; i += 8) {
- int acc = 0;
- accumulate_bit(acc, ((buf0[i + 0] + 64) >> 7) + d128[0]);
- accumulate_bit(acc, ((buf0[i + 1] + 64) >> 7) + d128[1]);
- accumulate_bit(acc, ((buf0[i + 2] + 64) >> 7) + d128[2]);
- accumulate_bit(acc, ((buf0[i + 3] + 64) >> 7) + d128[3]);
- accumulate_bit(acc, ((buf0[i + 4] + 64) >> 7) + d128[4]);
- accumulate_bit(acc, ((buf0[i + 5] + 64) >> 7) + d128[5]);
- accumulate_bit(acc, ((buf0[i + 6] + 64) >> 7) + d128[6]);
- accumulate_bit(acc, ((buf0[i + 7] + 64) >> 7) + d128[7]);
-
- output_pixel(*dest++, acc);
- }
+ for (i = 0; i < dstW; i += 8) {
+ int acc = 0;
+ accumulate_bit(acc, ((buf0[i + 0] + 64) >> 7) + d128[0]);
+ accumulate_bit(acc, ((buf0[i + 1] + 64) >> 7) + d128[1]);
+ accumulate_bit(acc, ((buf0[i + 2] + 64) >> 7) + d128[2]);
+ accumulate_bit(acc, ((buf0[i + 3] + 64) >> 7) + d128[3]);
+ accumulate_bit(acc, ((buf0[i + 4] + 64) >> 7) + d128[4]);
+ accumulate_bit(acc, ((buf0[i + 5] + 64) >> 7) + d128[5]);
+ accumulate_bit(acc, ((buf0[i + 6] + 64) >> 7) + d128[6]);
+ accumulate_bit(acc, ((buf0[i + 7] + 64) >> 7) + d128[7]);
+
+ output_pixel(*dest++, acc);
+ }
}
}
V = av_clip_uint8(V);
}
- Y1 = av_clip_uint8(Y1);
- Y2 = av_clip_uint8(Y2);
- U = av_clip_uint8(U);
- V = av_clip_uint8(V);
-
output_pixels(i * 4, Y1, U, Y2, V);
}
} else {
V = av_clip_uint8(V);
}
- Y1 = av_clip_uint8(Y1);
- Y2 = av_clip_uint8(Y2);
- U = av_clip_uint8(U);
- V = av_clip_uint8(V);
-
output_pixels(i * 4, Y1, U, Y2, V);
}
}
for (i = 0; i < dstW; i++) {
int j;
- int Y = 1 << 18;
- int64_t A = 0xffff<<14;
+ int Y = -0x40000000;
+ int A = 0xffff;
for (j = 0; j < lumFilterSize; j++)
Y += lumSrc[j][i] * lumFilter[j];
Y >>= 15;
+ Y += (1<<3) + 0x8000;
Y = av_clip_uint16(Y);
if (hasAlpha) {
+ A = -0x40000000 + (1<<14);
for (j = 0; j < lumFilterSize; j++)
A += alpSrc[j][i] * lumFilter[j];
A >>= 15;
+ A += 0x8000;
A = av_clip_uint16(A);
}
output_pixel(&dest[2 * i ], Y);
- output_pixel(&dest[2 * i + 1], hasAlpha ? A : 65535);
+ output_pixel(&dest[2 * i + 1], A);
}
}
} else {
*yuv2plane1 = yuv2plane1_8_c;
*yuv2planeX = yuv2planeX_8_c;
- if (dstFormat == AV_PIX_FMT_NV12 || dstFormat == AV_PIX_FMT_NV21)
+ if (dstFormat == AV_PIX_FMT_NV12 || dstFormat == AV_PIX_FMT_NV21 ||
+ dstFormat == AV_PIX_FMT_NV24 || dstFormat == AV_PIX_FMT_NV42)
*yuv2nv12cX = yuv2nv12cX_c;
}