swscale: Fix AltiVec/VSX build with recent GCC

The argument to vec_splat_u16 must be a literal. By making the
function always inline and marking the arguments const, gcc can
turn those into literals, and avoid build errors like:

swscale_vsx.c:165:53: error: argument 1 must be a 5-bit signed literal

Fixes #7861.

Signed-off-by: Daniel Kolesa <daniel@octaforge.org>
Signed-off-by: Lauri Kasanen <cand@gmx.com>
This commit is contained in:
Daniel Kolesa 2019-08-07 19:39:07 +02:00 committed by Lauri Kasanen
parent 1bdb47b734
commit e6625ca41f
1 changed files with 8 additions and 4 deletions

View File

@ -154,8 +154,10 @@ static void yuv2plane1_nbps_u(const int16_t *src, uint16_t *dest, int dstW,
}
}
static void yuv2plane1_nbps_vsx(const int16_t *src, uint16_t *dest, int dstW,
int big_endian, int output_bits)
static av_always_inline void yuv2plane1_nbps_vsx(const int16_t *src,
uint16_t *dest, int dstW,
const int big_endian,
const int output_bits)
{
const int dst_u = -(uintptr_t)dest & 7;
const int shift = 15 - output_bits;
@ -273,8 +275,10 @@ static void yuv2plane1_16_u(const int32_t *src, uint16_t *dest, int dstW,
}
}
static void yuv2plane1_16_vsx(const int32_t *src, uint16_t *dest, int dstW,
int big_endian, int output_bits)
static av_always_inline void yuv2plane1_16_vsx(const int32_t *src,
uint16_t *dest, int dstW,
const int big_endian,
int output_bits)
{
const int dst_u = -(uintptr_t)dest & 7;
const int shift = 3;