changeset 27119:7c07e13eeae3

Get rid of 16-bit sign extension macro
author reimar
date Sun, 29 Jun 2008 08:47:56 +0000
parents 5798fb7fceb6
children ea18c012330a
files libmpcodecs/ad_imaadpcm.c
diffstat 1 files changed, 4 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/ad_imaadpcm.c	Sun Jun 29 08:42:53 2008 +0000
+++ b/libmpcodecs/ad_imaadpcm.c	Sun Jun 29 08:47:56 2008 +0000
@@ -63,8 +63,6 @@
 #define CLAMP_S16(x) x = av_clip_int16(x);
 // clamp a number above 16
 #define CLAMP_ABOVE_16(x)  if (x < 16) x = 16;
-// sign extend a 16-bit value
-#define SE_16BIT(x) x = (int16_t)x;
 // sign extend a 4-bit value
 #define SE_4BIT(x)  if (x & 0x8) x -= 0x10;
 
@@ -185,11 +183,10 @@
     return -1;
 
   for (i = 0; i < channels; i++) {
-    initial_index[i] = initial_predictor[i] = BE_16(&input[i * QT_IMA_ADPCM_BLOCK_SIZE]);
+    initial_index[i] = initial_predictor[i] = (int16_t)BE_16(&input[i * QT_IMA_ADPCM_BLOCK_SIZE]);
 
     // mask, sign-extend, and clamp the predictor portion
-    initial_predictor[i] &= 0xFF80;
-    SE_16BIT(initial_predictor[i]);
+    initial_predictor[i] &= ~0x7F;
     CLAMP_S16(initial_predictor[i]);
 
     // mask and clamp the index portion
@@ -236,8 +233,7 @@
     return -1;
 
   for (i = 0; i < channels; i++) {
-    predictor[i] = LE_16(&input[i * 4]);
-    SE_16BIT(predictor[i]);
+    predictor[i] = (int16_t)LE_16(&input[i * 4]);
     index[i] = input[i * 4 + 2];
   }
 
@@ -301,8 +297,7 @@
 
   for (i = 0; i < channels; i++) {
     // the first predictor value goes straight to the output
-    predictor[i] = output[i] = LE_16(&input[i * 4]);
-    SE_16BIT(predictor[i]);
+    predictor[i] = output[i] = (int16_t)LE_16(&input[i * 4]);
     index[i] = input[i * 4 + 2];
   }