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>
pull/323/head
Daniel Kolesa 5 years ago committed by Lauri Kasanen
parent 1bdb47b734
commit e6625ca41f
  1. 12
      libswscale/ppc/swscale_vsx.c

@ -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;

Loading…
Cancel
Save