mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-14 01:49:05 +00:00
[libvpx] Update to v1.8.1 from https://chromium.googlesource.com/webm/libvpx
This commit is contained in:
committed by
Andrey Volk
parent
34fcadbd53
commit
ceb051af4e
@@ -213,13 +213,12 @@ int vp8_denoiser_filter_c(unsigned char *mc_running_avg_y, int mc_avg_y_stride,
|
||||
return FILTER_BLOCK;
|
||||
}
|
||||
|
||||
int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
int mc_avg_uv_stride,
|
||||
unsigned char *running_avg_uv, int avg_uv_stride,
|
||||
int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg, int mc_avg_stride,
|
||||
unsigned char *running_avg, int avg_stride,
|
||||
unsigned char *sig, int sig_stride,
|
||||
unsigned int motion_magnitude,
|
||||
int increase_denoising) {
|
||||
unsigned char *running_avg_uv_start = running_avg_uv;
|
||||
unsigned char *running_avg_start = running_avg;
|
||||
unsigned char *sig_start = sig;
|
||||
int sum_diff_thresh;
|
||||
int r, c;
|
||||
@@ -259,13 +258,13 @@ int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
int adjustment = 0;
|
||||
int absdiff = 0;
|
||||
|
||||
diff = mc_running_avg_uv[c] - sig[c];
|
||||
diff = mc_running_avg[c] - sig[c];
|
||||
absdiff = abs(diff);
|
||||
|
||||
// When |diff| <= |3 + shift_inc1|, use pixel value from
|
||||
// last denoised raw.
|
||||
if (absdiff <= 3 + shift_inc1) {
|
||||
running_avg_uv[c] = mc_running_avg_uv[c];
|
||||
running_avg[c] = mc_running_avg[c];
|
||||
sum_diff += diff;
|
||||
} else {
|
||||
if (absdiff >= 4 && absdiff <= 7) {
|
||||
@@ -277,16 +276,16 @@ int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
}
|
||||
if (diff > 0) {
|
||||
if ((sig[c] + adjustment) > 255) {
|
||||
running_avg_uv[c] = 255;
|
||||
running_avg[c] = 255;
|
||||
} else {
|
||||
running_avg_uv[c] = sig[c] + adjustment;
|
||||
running_avg[c] = sig[c] + adjustment;
|
||||
}
|
||||
sum_diff += adjustment;
|
||||
} else {
|
||||
if ((sig[c] - adjustment) < 0) {
|
||||
running_avg_uv[c] = 0;
|
||||
running_avg[c] = 0;
|
||||
} else {
|
||||
running_avg_uv[c] = sig[c] - adjustment;
|
||||
running_avg[c] = sig[c] - adjustment;
|
||||
}
|
||||
sum_diff -= adjustment;
|
||||
}
|
||||
@@ -294,8 +293,8 @@ int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
}
|
||||
/* Update pointers for next iteration. */
|
||||
sig += sig_stride;
|
||||
mc_running_avg_uv += mc_avg_uv_stride;
|
||||
running_avg_uv += avg_uv_stride;
|
||||
mc_running_avg += mc_avg_stride;
|
||||
running_avg += avg_stride;
|
||||
}
|
||||
|
||||
sum_diff_thresh = SUM_DIFF_THRESHOLD_UV;
|
||||
@@ -314,27 +313,27 @@ int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
// Only apply the adjustment for max delta up to 3.
|
||||
if (delta < 4) {
|
||||
sig -= sig_stride * 8;
|
||||
mc_running_avg_uv -= mc_avg_uv_stride * 8;
|
||||
running_avg_uv -= avg_uv_stride * 8;
|
||||
mc_running_avg -= mc_avg_stride * 8;
|
||||
running_avg -= avg_stride * 8;
|
||||
for (r = 0; r < 8; ++r) {
|
||||
for (c = 0; c < 8; ++c) {
|
||||
int diff = mc_running_avg_uv[c] - sig[c];
|
||||
int diff = mc_running_avg[c] - sig[c];
|
||||
int adjustment = abs(diff);
|
||||
if (adjustment > delta) adjustment = delta;
|
||||
if (diff > 0) {
|
||||
// Bring denoised signal down.
|
||||
if (running_avg_uv[c] - adjustment < 0) {
|
||||
running_avg_uv[c] = 0;
|
||||
if (running_avg[c] - adjustment < 0) {
|
||||
running_avg[c] = 0;
|
||||
} else {
|
||||
running_avg_uv[c] = running_avg_uv[c] - adjustment;
|
||||
running_avg[c] = running_avg[c] - adjustment;
|
||||
}
|
||||
sum_diff -= adjustment;
|
||||
} else if (diff < 0) {
|
||||
// Bring denoised signal up.
|
||||
if (running_avg_uv[c] + adjustment > 255) {
|
||||
running_avg_uv[c] = 255;
|
||||
if (running_avg[c] + adjustment > 255) {
|
||||
running_avg[c] = 255;
|
||||
} else {
|
||||
running_avg_uv[c] = running_avg_uv[c] + adjustment;
|
||||
running_avg[c] = running_avg[c] + adjustment;
|
||||
}
|
||||
sum_diff += adjustment;
|
||||
}
|
||||
@@ -342,8 +341,8 @@ int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
// TODO(marpan): Check here if abs(sum_diff) has gone below the
|
||||
// threshold sum_diff_thresh, and if so, we can exit the row loop.
|
||||
sig += sig_stride;
|
||||
mc_running_avg_uv += mc_avg_uv_stride;
|
||||
running_avg_uv += avg_uv_stride;
|
||||
mc_running_avg += mc_avg_stride;
|
||||
running_avg += avg_stride;
|
||||
}
|
||||
if (abs(sum_diff) > sum_diff_thresh) return COPY_BLOCK;
|
||||
} else {
|
||||
@@ -351,7 +350,7 @@ int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg_uv,
|
||||
}
|
||||
}
|
||||
|
||||
vp8_copy_mem8x8(running_avg_uv_start, avg_uv_stride, sig_start, sig_stride);
|
||||
vp8_copy_mem8x8(running_avg_start, avg_stride, sig_start, sig_stride);
|
||||
return FILTER_BLOCK;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user