OSDN Git Service

g722: Reduce number of pointers passed to g722_apply_qmf() function
authorPeter Meerwald <pmeerw@pmeerw.net>
Sun, 15 Feb 2015 11:21:22 +0000 (12:21 +0100)
committerMartin Storsjö <martin@martin.st>
Sun, 15 Feb 2015 20:47:14 +0000 (22:47 +0200)
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Martin Storsjö <martin@martin.st>
libavcodec/g722dec.c
libavcodec/g722dsp.c
libavcodec/g722dsp.h
libavcodec/g722enc.c

index 4e18150..e7058b7 100644 (file)
@@ -106,7 +106,7 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data,
 
     for (j = 0; j < avpkt->size; j++) {
         int ilow, ihigh, rlow, rhigh, dhigh;
-        int xout1, xout2;
+        int xout[2];
 
         ihigh = get_bits(&gb, 2);
         ilow = get_bits(&gb, 6 - skip);
@@ -124,10 +124,9 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data,
 
         c->prev_samples[c->prev_samples_pos++] = rlow + rhigh;
         c->prev_samples[c->prev_samples_pos++] = rlow - rhigh;
-        c->dsp.apply_qmf(c->prev_samples + c->prev_samples_pos - 24,
-                         &xout1, &xout2);
-        *out_buf++ = av_clip_int16(xout1 >> 11);
-        *out_buf++ = av_clip_int16(xout2 >> 11);
+        c->dsp.apply_qmf(c->prev_samples + c->prev_samples_pos - 24, xout);
+        *out_buf++ = av_clip_int16(xout[0] >> 11);
+        *out_buf++ = av_clip_int16(xout[1] >> 11);
         if (c->prev_samples_pos >= PREV_SAMPLES_BUF_SIZE) {
             memmove(c->prev_samples, c->prev_samples + c->prev_samples_pos - 22,
                     22 * sizeof(c->prev_samples[0]));
index 1fefc6b..5d3aedb 100644 (file)
@@ -29,15 +29,15 @@ static const int16_t qmf_coeffs[12] = {
     3, -11, 12, 32, -210, 951, 3876, -805, 362, -156, 53, -11,
 };
 
-static void g722_apply_qmf(const int16_t *prev_samples, int *xout1, int *xout2)
+static void g722_apply_qmf(const int16_t *prev_samples, int xout[2])
 {
     int i;
 
-    *xout1 = 0;
-    *xout2 = 0;
+    xout[0] = 0;
+    xout[1] = 0;
     for (i = 0; i < 12; i++) {
-        MAC16(*xout2, prev_samples[2*i  ], qmf_coeffs[i   ]);
-        MAC16(*xout1, prev_samples[2*i+1], qmf_coeffs[11-i]);
+        MAC16(xout[1], prev_samples[2*i  ], qmf_coeffs[i   ]);
+        MAC16(xout[0], prev_samples[2*i+1], qmf_coeffs[11-i]);
     }
 }
 
index c0d3339..2cc50d9 100644 (file)
@@ -24,7 +24,7 @@
 #include <stdint.h>
 
 typedef struct G722DSPContext {
-    void (*apply_qmf)(const int16_t *prev_samples, int *xout1, int *xout2);
+    void (*apply_qmf)(const int16_t *prev_samples, int xout[2]);
 } G722DSPContext;
 
 void ff_g722dsp_init(G722DSPContext *c);
index 3a3d7b7..e67ccf5 100644 (file)
@@ -137,12 +137,12 @@ static const int16_t low_quant[33] = {
 static inline void filter_samples(G722Context *c, const int16_t *samples,
                                   int *xlow, int *xhigh)
 {
-    int xout1, xout2;
+    int xout[2];
     c->prev_samples[c->prev_samples_pos++] = samples[0];
     c->prev_samples[c->prev_samples_pos++] = samples[1];
-    c->dsp.apply_qmf(c->prev_samples + c->prev_samples_pos - 24, &xout1, &xout2);
-    *xlow  = xout1 + xout2 >> 14;
-    *xhigh = xout1 - xout2 >> 14;
+    c->dsp.apply_qmf(c->prev_samples + c->prev_samples_pos - 24, xout);
+    *xlow  = xout[0] + xout[1] >> 14;
+    *xhigh = xout[0] - xout[1] >> 14;
     if (c->prev_samples_pos >= PREV_SAMPLES_BUF_SIZE) {
         memmove(c->prev_samples,
                 c->prev_samples + c->prev_samples_pos - 22,