mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-05 14:50:25 +00:00
lavc/pixblockdsp: specialise aligned 16-bit get_pixels
The current code assumes that we have unaligned rows, which hurts on platforms with slower unaligned accesses. (Also, this lets the compiler unroll manually, which it seems to do in practice.)
This commit is contained in:
parent
656a9664bf
commit
d527d23872
@ -26,6 +26,13 @@
|
||||
|
||||
static void get_pixels_16_c(int16_t *restrict block, const uint8_t *pixels,
|
||||
ptrdiff_t stride)
|
||||
{
|
||||
for (int i = 0; i < 8; i++)
|
||||
AV_COPY128(block + i * 8, pixels + i * stride);
|
||||
}
|
||||
|
||||
static void get_pixels_unaligned_16_c(int16_t *restrict block,
|
||||
const uint8_t *pixels, ptrdiff_t stride)
|
||||
{
|
||||
AV_COPY128U(block + 0 * 8, pixels + 0 * stride);
|
||||
AV_COPY128U(block + 1 * 8, pixels + 1 * stride);
|
||||
@ -90,7 +97,7 @@ av_cold void ff_pixblockdsp_init(PixblockDSPContext *c, AVCodecContext *avctx)
|
||||
case 10:
|
||||
case 12:
|
||||
case 14:
|
||||
c->get_pixels_unaligned =
|
||||
c->get_pixels_unaligned = get_pixels_unaligned_16_c;
|
||||
c->get_pixels = get_pixels_16_c;
|
||||
break;
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user