aacenc_tns: re-enable coefficient compression
authorRostislav Pehlivanov <atomnuker@gmail.com>
Fri, 21 Aug 2015 20:36:06 +0000 (21:36 +0100)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Fri, 21 Aug 2015 20:36:06 +0000 (21:36 +0100)
This time in a platform/compiler-generic way.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
libavcodec/aacenc_tns.c

index fd20923..3b6e835 100644 (file)
@@ -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;
 }
 
 /**