[FFmpeg-cvslog] aacenc_tns: re-enable coefficient compression
Rostislav Pehlivanov
git at videolan.org
Fri Aug 21 22:37:23 CEST 2015
ffmpeg | branch: master | Rostislav Pehlivanov <atomnuker at gmail.com> | Fri Aug 21 21:36:06 2015 +0100| [5df166e4305498d58db0350f78f7fade1ec0c029] | committer: Rostislav Pehlivanov
aacenc_tns: re-enable coefficient compression
This time in a platform/compiler-generic way.
Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5df166e4305498d58db0350f78f7fade1ec0c029
---
libavcodec/aacenc_tns.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/libavcodec/aacenc_tns.c b/libavcodec/aacenc_tns.c
index fd20923..3b6e835 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;
}
/**
More information about the ffmpeg-cvslog
mailing list