Browse Source

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>
tags/n4.3
Daniel Kolesa Lauri Kasanen 6 years ago
parent
commit
e6625ca41f
1 changed files with 8 additions and 4 deletions
  1. +8
    -4
      libswscale/ppc/swscale_vsx.c

+ 8
- 4
libswscale/ppc/swscale_vsx.c 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;


Loading…
Cancel
Save