mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
swscale/swscale_internal: Hoist branch out of loop
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
c8549d480f
commit
ad1cef04a9
@ -1021,28 +1021,20 @@ int ff_sws_alphablendaway(SwsContext *c, const uint8_t *src[],
|
|||||||
static inline void fillPlane16(uint8_t *plane, int stride, int width, int height, int y,
|
static inline void fillPlane16(uint8_t *plane, int stride, int width, int height, int y,
|
||||||
int alpha, int bits, const int big_endian)
|
int alpha, int bits, const int big_endian)
|
||||||
{
|
{
|
||||||
int i, j;
|
|
||||||
uint8_t *ptr = plane + stride * y;
|
uint8_t *ptr = plane + stride * y;
|
||||||
int v = alpha ? 0xFFFF>>(16-bits) : (1<<(bits-1));
|
int v = alpha ? 0xFFFF>>(16-bits) : (1<<(bits-1));
|
||||||
for (i = 0; i < height; i++) {
|
if (big_endian != HAVE_BIGENDIAN)
|
||||||
#define FILL(wfunc) \
|
v = av_bswap16(v);
|
||||||
for (j = 0; j < width; j++) {\
|
for (int i = 0; i < height; i++) {
|
||||||
wfunc(ptr+2*j, v);\
|
for (int j = 0; j < width; j++)
|
||||||
}
|
AV_WN16(ptr + 2 * j, v);
|
||||||
if (big_endian) {
|
|
||||||
FILL(AV_WB16);
|
|
||||||
} else {
|
|
||||||
FILL(AV_WL16);
|
|
||||||
}
|
|
||||||
ptr += stride;
|
ptr += stride;
|
||||||
}
|
}
|
||||||
#undef FILL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void fillPlane32(uint8_t *plane, int stride, int width, int height, int y,
|
static inline void fillPlane32(uint8_t *plane, int stride, int width, int height, int y,
|
||||||
int alpha, int bits, const int big_endian, int is_float)
|
int alpha, int bits, const int big_endian, int is_float)
|
||||||
{
|
{
|
||||||
int i, j;
|
|
||||||
uint8_t *ptr = plane + stride * y;
|
uint8_t *ptr = plane + stride * y;
|
||||||
uint32_t v;
|
uint32_t v;
|
||||||
uint32_t onef32 = 0x3f800000;
|
uint32_t onef32 = 0x3f800000;
|
||||||
@ -1050,20 +1042,14 @@ static inline void fillPlane32(uint8_t *plane, int stride, int width, int height
|
|||||||
v = alpha ? onef32 : 0;
|
v = alpha ? onef32 : 0;
|
||||||
else
|
else
|
||||||
v = alpha ? 0xFFFFFFFF>>(32-bits) : (1<<(bits-1));
|
v = alpha ? 0xFFFFFFFF>>(32-bits) : (1<<(bits-1));
|
||||||
|
if (big_endian != HAVE_BIGENDIAN)
|
||||||
|
v = av_bswap32(v);
|
||||||
|
|
||||||
for (i = 0; i < height; i++) {
|
for (int i = 0; i < height; i++) {
|
||||||
#define FILL(wfunc) \
|
for (int j = 0; j < width; j++)
|
||||||
for (j = 0; j < width; j++) {\
|
AV_WN32(ptr + 4 * j, v);
|
||||||
wfunc(ptr+4*j, v);\
|
|
||||||
}
|
|
||||||
if (big_endian) {
|
|
||||||
FILL(AV_WB32);
|
|
||||||
} else {
|
|
||||||
FILL(AV_WL32);
|
|
||||||
}
|
|
||||||
ptr += stride;
|
ptr += stride;
|
||||||
}
|
}
|
||||||
#undef FILL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user