*/
#include <limits.h>
#include "avcodec.h"
-#include "common.h"
#include "bitstream.h"
/**
typedef struct G726Tables {
int bits; /**< bits per sample */
- int* quant; /**< quantization table */
- int* iquant; /**< inverse quantization table */
- int* W; /**< special table #1 ;-) */
- int* F; /**< special table #2 */
+ const int* quant; /**< quantization table */
+ const int* iquant; /**< inverse quantization table */
+ const int* W; /**< special table #1 ;-) */
+ const int* F; /**< special table #2 */
} G726Tables;
typedef struct G726Context {
- G726Tables* tbls; /**< static tables needed for computation */
+ const G726Tables* tbls; /**< static tables needed for computation */
Float11 sr[2]; /**< prev. reconstructed samples */
Float11 dq[6]; /**< prev. difference */
int y; /**< quantizer scaling factor for the next iteration */
} G726Context;
-static int quant_tbl16[] = /**< 16kbit/s 2bits per sample */
+static const int quant_tbl16[] = /**< 16kbit/s 2bits per sample */
{ 260, INT_MAX };
-static int iquant_tbl16[] =
+static const int iquant_tbl16[] =
{ 116, 365, 365, 116 };
-static int W_tbl16[] =
+static const int W_tbl16[] =
{ -22, 439, 439, -22 };
-static int F_tbl16[] =
+static const int F_tbl16[] =
{ 0, 7, 7, 0 };
-static int quant_tbl24[] = /**< 24kbit/s 3bits per sample */
+static const int quant_tbl24[] = /**< 24kbit/s 3bits per sample */
{ 7, 217, 330, INT_MAX };
-static int iquant_tbl24[] =
+static const int iquant_tbl24[] =
{ INT_MIN, 135, 273, 373, 373, 273, 135, INT_MIN };
-static int W_tbl24[] =
+static const int W_tbl24[] =
{ -4, 30, 137, 582, 582, 137, 30, -4 };
-static int F_tbl24[] =
+static const int F_tbl24[] =
{ 0, 1, 2, 7, 7, 2, 1, 0 };
-static int quant_tbl32[] = /**< 32kbit/s 4bits per sample */
+static const int quant_tbl32[] = /**< 32kbit/s 4bits per sample */
{ -125, 79, 177, 245, 299, 348, 399, INT_MAX };
-static int iquant_tbl32[] =
+static const int iquant_tbl32[] =
{ INT_MIN, 4, 135, 213, 273, 323, 373, 425,
425, 373, 323, 273, 213, 135, 4, INT_MIN };
-static int W_tbl32[] =
+static const int W_tbl32[] =
{ -12, 18, 41, 64, 112, 198, 355, 1122,
1122, 355, 198, 112, 64, 41, 18, -12};
-static int F_tbl32[] =
+static const int F_tbl32[] =
{ 0, 0, 0, 1, 1, 1, 3, 7, 7, 3, 1, 1, 1, 0, 0, 0 };
-static int quant_tbl40[] = /**< 40kbit/s 5bits per sample */
+static const int quant_tbl40[] = /**< 40kbit/s 5bits per sample */
{ -122, -16, 67, 138, 197, 249, 297, 338,
377, 412, 444, 474, 501, 527, 552, INT_MAX };
-static int iquant_tbl40[] =
+static const int iquant_tbl40[] =
{ INT_MIN, -66, 28, 104, 169, 224, 274, 318,
358, 395, 429, 459, 488, 514, 539, 566,
566, 539, 514, 488, 459, 429, 395, 358,
318, 274, 224, 169, 104, 28, -66, INT_MIN };
-static int W_tbl40[] =
+static const int W_tbl40[] =
{ 14, 14, 24, 39, 40, 41, 58, 100,
141, 179, 219, 280, 358, 440, 529, 696,
696, 529, 440, 358, 280, 219, 179, 141,
100, 58, 41, 40, 39, 24, 14, 14 };
-static int F_tbl40[] =
+static const int F_tbl40[] =
{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6,
6, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
-static G726Tables G726Tables_pool[] =
+static const G726Tables G726Tables_pool[] =
{{ 2, quant_tbl16, iquant_tbl16, W_tbl16, F_tbl16 },
{ 3, quant_tbl24, iquant_tbl24, W_tbl24, F_tbl24 },
{ 4, quant_tbl32, iquant_tbl32, W_tbl32, F_tbl32 },
c->b[i] = 0;
} else {
/* This is a bit crazy, but it really is +255 not +256 */
- fa1 = clip((-c->a[0]*c->pk[0]*pk0)>>5, -256, 255);
+ fa1 = av_clip((-c->a[0]*c->pk[0]*pk0)>>5, -256, 255);
c->a[1] += 128*pk0*c->pk[1] + fa1 - (c->a[1]>>7);
- c->a[1] = clip(c->a[1], -12288, 12288);
+ c->a[1] = av_clip(c->a[1], -12288, 12288);
c->a[0] += 64*3*pk0*c->pk[0] - (c->a[0] >> 8);
- c->a[0] = clip(c->a[0], -(15360 - c->a[1]), 15360 - c->a[1]);
+ c->a[0] = av_clip(c->a[0], -(15360 - c->a[1]), 15360 - c->a[1]);
for (i=0; i<6; i++)
c->b[i] += 128*dq0*sgn(-c->dq[i].sign) - (c->b[i]>>8);
c->ap += (0x200 - c->ap) >> 4;
/* Update Yu and Yl */
- c->yu = clip(c->y + (((c->tbls->W[I] << 5) - c->y) >> 5), 544, 5120);
+ c->yu = av_clip(c->y + (((c->tbls->W[I] << 5) - c->y) >> 5), 544, 5120);
c->yl += c->yu + ((-c->yl)>>6);
/* Next iteration for Y */
c->se += mult(i2f(c->a[i] >> 2, &f), &c->sr[i]);
c->se >>= 1;
- return clip(re_signal << 2, -0xffff, 0xffff);
+ return av_clip(re_signal << 2, -0xffff, 0xffff);
}
static int g726_reset(G726Context* c, int bit_rate)
static int g726_decode_frame(AVCodecContext *avctx,
void *data, int *data_size,
- uint8_t *buf, int buf_size)
+ const uint8_t *buf, int buf_size)
{
AVG726Context *c = avctx->priv_data;
short *samples = data;
mask = (1<<c->code_size) - 1;
init_get_bits(&gb, buf, buf_size * 8);
if (c->bits_left) {
- int s = c->code_size - c->bits_left;;
+ int s = c->code_size - c->bits_left;
code = (c->bit_buffer << s) | get_bits(&gb, s);
*samples++ = g726_decode(&c->c, code & mask);
}