[FFmpeg-cvslog] r13499 - trunk/libavcodec/ra144.c

vitor subversion
Wed May 28 21:02:16 CEST 2008


Author: vitor
Date: Wed May 28 21:02:16 2008
New Revision: 13499

Log:
Make lpc coefficients 16 bit wide

Modified:
   trunk/libavcodec/ra144.c

Modified: trunk/libavcodec/ra144.c
==============================================================================
--- trunk/libavcodec/ra144.c	(original)
+++ trunk/libavcodec/ra144.c	Wed May 28 21:02:16 2008
@@ -34,11 +34,12 @@ typedef struct {
     unsigned int     old_energy;        ///< previous frame energy
 
     /* the swapped buffers */
-    unsigned int     lpc_tables[4][10];
+    unsigned int     refl_tables[2][10];
+    int16_t          coef_tables[2][10];
     unsigned int    *lpc_refl;          ///< LPC reflection coefficients
-    unsigned int    *lpc_coef;          ///< LPC coefficients
+    int16_t         *lpc_coef;          ///< LPC coefficients
     unsigned int    *lpc_refl_old;      ///< previous frame LPC reflection coefs
-    unsigned int    *lpc_coef_old;      ///< previous frame LPC coefficients
+    int16_t         *lpc_coef_old;      ///< previous frame LPC coefficients
 
     unsigned int buffer[5];
     uint16_t adapt_cb[148];             ///< adaptive codebook
@@ -48,10 +49,10 @@ static int ra144_decode_init(AVCodecCont
 {
     RA144Context *ractx = avctx->priv_data;
 
-    ractx->lpc_refl     = ractx->lpc_tables[0];
-    ractx->lpc_coef     = ractx->lpc_tables[1];
-    ractx->lpc_refl_old = ractx->lpc_tables[2];
-    ractx->lpc_coef_old = ractx->lpc_tables[3];
+    ractx->lpc_refl     = ractx->refl_tables[0];
+    ractx->lpc_coef     = ractx->coef_tables[0];
+    ractx->lpc_refl_old = ractx->refl_tables[1];
+    ractx->lpc_coef_old = ractx->coef_tables[1];
 
     return 0;
 }
@@ -72,13 +73,17 @@ static int t_sqrt(unsigned int x)
 }
 
 /* do 'voice' */
-static void do_voice(const int *a1, int *a2)
+static void do_voice(const int *a1, int16_t *a2)
 {
     int buffer[10];
+    int buffer2[10];
     int *b1 = buffer;
-    int *b2 = a2;
+    int *b2 = buffer2;
     int x, y;
 
+    for (x=0; x<10; x++)
+        buffer2[x] = a2[x];
+
     for (x=0; x < 10; x++) {
         b1[x] = a1[x] << 4;
 
@@ -89,7 +94,7 @@ static void do_voice(const int *a1, int 
     }
 
     for (x=0; x < 10; x++)
-        a2[x] >>= 4;
+        a2[x] = buffer2[x] >> 4;
 }
 
 /* rotate block */
@@ -236,7 +241,7 @@ static void do_output_subblock(RA144Cont
     final(gsp, block, output_buffer, ractx->buffer, BLOCKSIZE);
 }
 
-static int dec1(int16_t *decsp, const int *data, const int *inp, int f)
+static int dec1(int16_t *decsp, const int *data, const int16_t *inp, int f)
 {
     int i;
 
@@ -364,7 +369,7 @@ static int ra144_decode_frame(AVCodecCon
     ractx->old_energy = energy;
 
     FFSWAP(unsigned int *, ractx->lpc_refl_old, ractx->lpc_refl);
-    FFSWAP(unsigned int *, ractx->lpc_coef_old, ractx->lpc_coef);
+    FFSWAP(int16_t *     , ractx->lpc_coef_old, ractx->lpc_coef);
 
     *data_size = 2*160;
     return 20;




More information about the ffmpeg-cvslog mailing list