summaryrefslogtreecommitdiff
path: root/libavcodec/aacenc_tns.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/aacenc_tns.c')
-rw-r--r--libavcodec/aacenc_tns.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libavcodec/aacenc_tns.c b/libavcodec/aacenc_tns.c
index fd20923d7f..3b6e835067 100644
--- a/libavcodec/aacenc_tns.c
+++ b/libavcodec/aacenc_tns.c
@@ -49,12 +49,16 @@ static inline void conv_to_float(float *arr, int32_t *cof, int num)
/* Input: quantized 4 bit coef, output: 1 if first (MSB) 2 bits are the same */
static inline int coef_test_compression(int coef)
{
- int res = 0;
- /*coef = coef >> 3;
- res += ffs(coef);
- coef = coef >> 1;
- res += ffs(coef);*/
- return 0;
+ int tmp = coef >> 2;
+ int res = ff_ctz(tmp);
+ if (res > 1)
+ return 1; /* ...00 -> compressable */
+ else if (res == 1)
+ return 0; /* ...10 -> uncompressable */
+ else if (ff_ctz(tmp >> 1) > 0)
+ return 0; /* ...0 1 -> uncompressable */
+ else
+ return 1; /* ...1 1 -> compressable */
}
static inline int compress_coef(int *coefs, int num)
@@ -62,7 +66,7 @@ static inline int compress_coef(int *coefs, int num)
int i, res = 0;
for (i = 0; i < num; i++)
res += coef_test_compression(coefs[i]);
- return 0;
+ return res == num ? 1 : 0;
}
/**