mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-28 03:17:31 +09:00
Sync libwebp sources with https://chromium.googlesource.com/webm/libwebp/+/v1.0.0
This commit is contained in:
parent
96f65ed0eb
commit
57e9b57974
86 changed files with 3796 additions and 2250 deletions
|
|
@ -11,13 +11,13 @@
|
|||
//
|
||||
// Author: Skal (pascal.massimino@gmail.com)
|
||||
|
||||
#include "./dsp.h"
|
||||
#include "../dsp/dsp.h"
|
||||
|
||||
#if defined(WEBP_USE_NEON)
|
||||
#if defined(WEBP_USE_NEON) && !defined(WEBP_REDUCE_SIZE)
|
||||
|
||||
#include <arm_neon.h>
|
||||
#include <assert.h>
|
||||
#include "./neon.h"
|
||||
#include "../dsp/neon.h"
|
||||
#include "../utils/rescaler_utils.h"
|
||||
|
||||
#define ROUNDER (WEBP_RESCALER_ONE >> 1)
|
||||
|
|
@ -41,9 +41,9 @@
|
|||
#error "MULT_FIX/WEBP_RESCALER_RFIX need some more work"
|
||||
#endif
|
||||
|
||||
static uint32x4_t Interpolate(const rescaler_t* const frow,
|
||||
const rescaler_t* const irow,
|
||||
uint32_t A, uint32_t B) {
|
||||
static uint32x4_t Interpolate_NEON(const rescaler_t* const frow,
|
||||
const rescaler_t* const irow,
|
||||
uint32_t A, uint32_t B) {
|
||||
LOAD_32x4(frow, A0);
|
||||
LOAD_32x4(irow, B0);
|
||||
const uint64x2_t C0 = vmull_n_u32(vget_low_u32(A0), A);
|
||||
|
|
@ -56,7 +56,7 @@ static uint32x4_t Interpolate(const rescaler_t* const frow,
|
|||
return E;
|
||||
}
|
||||
|
||||
static void RescalerExportRowExpand(WebPRescaler* const wrk) {
|
||||
static void RescalerExportRowExpand_NEON(WebPRescaler* const wrk) {
|
||||
int x_out;
|
||||
uint8_t* const dst = wrk->dst;
|
||||
rescaler_t* const irow = wrk->irow;
|
||||
|
|
@ -91,9 +91,9 @@ static void RescalerExportRowExpand(WebPRescaler* const wrk) {
|
|||
const uint32_t A = (uint32_t)(WEBP_RESCALER_ONE - B);
|
||||
for (x_out = 0; x_out < max_span; x_out += 8) {
|
||||
const uint32x4_t C0 =
|
||||
Interpolate(frow + x_out + 0, irow + x_out + 0, A, B);
|
||||
Interpolate_NEON(frow + x_out + 0, irow + x_out + 0, A, B);
|
||||
const uint32x4_t C1 =
|
||||
Interpolate(frow + x_out + 4, irow + x_out + 4, A, B);
|
||||
Interpolate_NEON(frow + x_out + 4, irow + x_out + 4, A, B);
|
||||
const uint32x4_t D0 = MULT_FIX(C0, fy_scale_half);
|
||||
const uint32x4_t D1 = MULT_FIX(C1, fy_scale_half);
|
||||
const uint16x4_t E0 = vmovn_u32(D0);
|
||||
|
|
@ -112,7 +112,7 @@ static void RescalerExportRowExpand(WebPRescaler* const wrk) {
|
|||
}
|
||||
}
|
||||
|
||||
static void RescalerExportRowShrink(WebPRescaler* const wrk) {
|
||||
static void RescalerExportRowShrink_NEON(WebPRescaler* const wrk) {
|
||||
int x_out;
|
||||
uint8_t* const dst = wrk->dst;
|
||||
rescaler_t* const irow = wrk->irow;
|
||||
|
|
@ -175,8 +175,8 @@ static void RescalerExportRowShrink(WebPRescaler* const wrk) {
|
|||
extern void WebPRescalerDspInitNEON(void);
|
||||
|
||||
WEBP_TSAN_IGNORE_FUNCTION void WebPRescalerDspInitNEON(void) {
|
||||
WebPRescalerExportRowExpand = RescalerExportRowExpand;
|
||||
WebPRescalerExportRowShrink = RescalerExportRowShrink;
|
||||
WebPRescalerExportRowExpand = RescalerExportRowExpand_NEON;
|
||||
WebPRescalerExportRowShrink = RescalerExportRowShrink_NEON;
|
||||
}
|
||||
|
||||
#else // !WEBP_USE_NEON
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue