summaryrefslogtreecommitdiff
path: root/vp9/encoder/x86
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2014-12-19 15:02:58 +0000
committerPaul Wilkins <paulwilkins@google.com>2014-12-19 15:02:58 +0000
commit9946ee23e0a4c158e26a505b162a072f81b8a3be (patch)
tree166e50bf8f9a3597165533d0630ce6e889f3529b /vp9/encoder/x86
parent8ac3f9adaa25ab3f22dfbdc14e578a075afead53 (diff)
downloadlibvpx-9946ee23e0a4c158e26a505b162a072f81b8a3be.tar
libvpx-9946ee23e0a4c158e26a505b162a072f81b8a3be.tar.gz
libvpx-9946ee23e0a4c158e26a505b162a072f81b8a3be.tar.bz2
libvpx-9946ee23e0a4c158e26a505b162a072f81b8a3be.zip
Revert "Removal of legacy zbin_extra / zbin_oq_value."
This reverts commit e9b586e21bb899e247346e82bccf5afb42604910. Change-Id: I5b36e6727da6c05278d97e2c37b80c109f79bed4
Diffstat (limited to 'vp9/encoder/x86')
-rw-r--r--vp9/encoder/x86/vp9_dct_sse2.c3
-rw-r--r--vp9/encoder/x86/vp9_dct_ssse3.c3
-rw-r--r--vp9/encoder/x86/vp9_highbd_quantize_intrin_sse2.c26
-rw-r--r--vp9/encoder/x86/vp9_quantize_sse2.c8
4 files changed, 24 insertions, 16 deletions
diff --git a/vp9/encoder/x86/vp9_dct_sse2.c b/vp9/encoder/x86/vp9_dct_sse2.c
index ae22a0b32..e671f3998 100644
--- a/vp9/encoder/x86/vp9_dct_sse2.c
+++ b/vp9/encoder/x86/vp9_dct_sse2.c
@@ -254,7 +254,7 @@ void vp9_fdct8x8_quant_sse2(const int16_t *input, int stride,
const int16_t* round_ptr, const int16_t* quant_ptr,
const int16_t* quant_shift_ptr, int16_t* qcoeff_ptr,
int16_t* dqcoeff_ptr, const int16_t* dequant_ptr,
- uint16_t* eob_ptr,
+ int zbin_oq_value, uint16_t* eob_ptr,
const int16_t* scan_ptr,
const int16_t* iscan_ptr) {
__m128i zero;
@@ -287,6 +287,7 @@ void vp9_fdct8x8_quant_sse2(const int16_t *input, int stride,
(void)scan_ptr;
(void)zbin_ptr;
(void)quant_shift_ptr;
+ (void)zbin_oq_value;
(void)coeff_ptr;
// Pre-condition input (shift by two)
diff --git a/vp9/encoder/x86/vp9_dct_ssse3.c b/vp9/encoder/x86/vp9_dct_ssse3.c
index 5c0ad7892..237c5e278 100644
--- a/vp9/encoder/x86/vp9_dct_ssse3.c
+++ b/vp9/encoder/x86/vp9_dct_ssse3.c
@@ -23,7 +23,7 @@ void vp9_fdct8x8_quant_ssse3(const int16_t *input, int stride,
const int16_t* quant_shift_ptr,
int16_t* qcoeff_ptr,
int16_t* dqcoeff_ptr, const int16_t* dequant_ptr,
- uint16_t* eob_ptr,
+ int zbin_oq_value, uint16_t* eob_ptr,
const int16_t* scan_ptr,
const int16_t* iscan_ptr) {
__m128i zero;
@@ -57,6 +57,7 @@ void vp9_fdct8x8_quant_ssse3(const int16_t *input, int stride,
(void)scan_ptr;
(void)zbin_ptr;
(void)quant_shift_ptr;
+ (void)zbin_oq_value;
(void)coeff_ptr;
// Pre-condition input (shift by two)
diff --git a/vp9/encoder/x86/vp9_highbd_quantize_intrin_sse2.c b/vp9/encoder/x86/vp9_highbd_quantize_intrin_sse2.c
index 0bce9c321..55c6ed71f 100644
--- a/vp9/encoder/x86/vp9_highbd_quantize_intrin_sse2.c
+++ b/vp9/encoder/x86/vp9_highbd_quantize_intrin_sse2.c
@@ -24,6 +24,7 @@ void vp9_highbd_quantize_b_sse2(const tran_low_t *coeff_ptr,
tran_low_t *qcoeff_ptr,
tran_low_t *dqcoeff_ptr,
const int16_t *dequant_ptr,
+ int zbin_oq_value,
uint16_t *eob_ptr,
const int16_t *scan,
const int16_t *iscan) {
@@ -31,11 +32,11 @@ void vp9_highbd_quantize_b_sse2(const tran_low_t *coeff_ptr,
__m128i zbins[2];
__m128i nzbins[2];
- zbins[0] = _mm_set_epi32((int)zbin_ptr[1],
- (int)zbin_ptr[1],
- (int)zbin_ptr[1],
- (int)zbin_ptr[0]);
- zbins[1] = _mm_set1_epi32((int)zbin_ptr[1]);
+ zbins[0] = _mm_set_epi32((int)(zbin_ptr[1] + zbin_oq_value),
+ (int)(zbin_ptr[1] + zbin_oq_value),
+ (int)(zbin_ptr[1] + zbin_oq_value),
+ (int)(zbin_ptr[0] + zbin_oq_value));
+ zbins[1] = _mm_set1_epi32((int)(zbin_ptr[1] + zbin_oq_value));
nzbins[0] = _mm_setzero_si128();
nzbins[1] = _mm_setzero_si128();
@@ -110,6 +111,7 @@ void vp9_highbd_quantize_b_32x32_sse2(const tran_low_t *coeff_ptr,
tran_low_t *qcoeff_ptr,
tran_low_t *dqcoeff_ptr,
const int16_t *dequant_ptr,
+ int zbin_oq_value,
uint16_t *eob_ptr,
const int16_t *scan,
const int16_t *iscan) {
@@ -118,14 +120,14 @@ void vp9_highbd_quantize_b_32x32_sse2(const tran_low_t *coeff_ptr,
int idx = 0;
int idx_arr[1024];
int i, eob = -1;
- const int zbin0_tmp = ROUND_POWER_OF_TWO(zbin_ptr[0], 1);
- const int zbin1_tmp = ROUND_POWER_OF_TWO(zbin_ptr[1], 1);
+ const int zbin0_tmp = ROUND_POWER_OF_TWO(zbin_ptr[0] + zbin_oq_value, 1);
+ const int zbin1_tmp = ROUND_POWER_OF_TWO(zbin_ptr[1] + zbin_oq_value, 1);
(void)scan;
- zbins[0] = _mm_set_epi32(zbin1_tmp,
- zbin1_tmp,
- zbin1_tmp,
- zbin0_tmp);
- zbins[1] = _mm_set1_epi32(zbin1_tmp);
+ zbins[0] = _mm_set_epi32((zbin1_tmp + zbin_oq_value),
+ (zbin1_tmp + zbin_oq_value),
+ (zbin1_tmp + zbin_oq_value),
+ (zbin0_tmp + zbin_oq_value));
+ zbins[1] = _mm_set1_epi32((zbin1_tmp + zbin_oq_value));
nzbins[0] = _mm_setzero_si128();
nzbins[1] = _mm_setzero_si128();
diff --git a/vp9/encoder/x86/vp9_quantize_sse2.c b/vp9/encoder/x86/vp9_quantize_sse2.c
index 679c66e30..e06eb2f15 100644
--- a/vp9/encoder/x86/vp9_quantize_sse2.c
+++ b/vp9/encoder/x86/vp9_quantize_sse2.c
@@ -18,7 +18,7 @@ void vp9_quantize_b_sse2(const int16_t* coeff_ptr, intptr_t n_coeffs,
const int16_t* round_ptr, const int16_t* quant_ptr,
const int16_t* quant_shift_ptr, int16_t* qcoeff_ptr,
int16_t* dqcoeff_ptr, const int16_t* dequant_ptr,
- uint16_t* eob_ptr,
+ int zbin_oq_value, uint16_t* eob_ptr,
const int16_t* scan_ptr,
const int16_t* iscan_ptr) {
__m128i zero;
@@ -39,10 +39,13 @@ void vp9_quantize_b_sse2(const int16_t* coeff_ptr, intptr_t n_coeffs,
// Setup global values
{
+ __m128i zbin_oq;
__m128i pw_1;
+ zbin_oq = _mm_set1_epi16(zbin_oq_value);
zbin = _mm_load_si128((const __m128i*)zbin_ptr);
round = _mm_load_si128((const __m128i*)round_ptr);
quant = _mm_load_si128((const __m128i*)quant_ptr);
+ zbin = _mm_add_epi16(zbin, zbin_oq);
pw_1 = _mm_set1_epi16(1);
zbin = _mm_sub_epi16(zbin, pw_1);
dequant = _mm_load_si128((const __m128i*)dequant_ptr);
@@ -226,13 +229,14 @@ void vp9_quantize_fp_sse2(const int16_t* coeff_ptr, intptr_t n_coeffs,
const int16_t* round_ptr, const int16_t* quant_ptr,
const int16_t* quant_shift_ptr, int16_t* qcoeff_ptr,
int16_t* dqcoeff_ptr, const int16_t* dequant_ptr,
- uint16_t* eob_ptr,
+ int zbin_oq_value, uint16_t* eob_ptr,
const int16_t* scan_ptr,
const int16_t* iscan_ptr) {
__m128i zero;
(void)scan_ptr;
(void)zbin_ptr;
(void)quant_shift_ptr;
+ (void)zbin_oq_value;
coeff_ptr += n_coeffs;
iscan_ptr += n_coeffs;