52 f->
mant = i? (i<<6) >> f->
exp : 1<<5;
61 res = (((f1->
mant * f2->
mant) + 0x30) >> 4);
62 res = exp > 19 ? res << (exp - 19) : res >> (19 - exp);
63 return (f1->
sign ^ f2->
sign) ? -res : res;
68 return (value < 0) ? -1 : 1;
105 { 116, 365, 365, 116 };
107 { -22, 439, 439, -22 };
112 { 7, 217, 330, INT_MAX };
114 { INT16_MIN, 135, 273, 373, 373, 273, 135, INT16_MIN };
116 { -4, 30, 137, 582, 582, 137, 30, -4 };
118 { 0, 1, 2, 7, 7, 2, 1, 0 };
121 { -125, 79, 177, 245, 299, 348, 399, INT_MAX };
123 { INT16_MIN, 4, 135, 213, 273, 323, 373, 425,
124 425, 373, 323, 273, 213, 135, 4, INT16_MIN };
126 { -12, 18, 41, 64, 112, 198, 355, 1122,
127 1122, 355, 198, 112, 64, 41, 18, -12};
129 { 0, 0, 0, 1, 1, 1, 3, 7, 7, 3, 1, 1, 1, 0, 0, 0 };
132 { -122, -16, 67, 138, 197, 249, 297, 338,
133 377, 412, 444, 474, 501, 527, 552, INT_MAX };
135 { INT16_MIN, -66, 28, 104, 169, 224, 274, 318,
136 358, 395, 429, 459, 488, 514, 539, 566,
137 566, 539, 514, 488, 459, 429, 395, 358,
138 318, 274, 224, 169, 104, 28, -66, INT16_MIN };
140 { 14, 14, 24, 39, 40, 41, 58, 100,
141 141, 179, 219, 280, 358, 440, 529, 696,
142 696, 529, 440, 358, 280, 219, 179, 141,
143 100, 58, 41, 40, 39, 24, 14, 14 };
145 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6,
146 6, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
160 int sign, exp, i, dln;
168 dln = ((exp<<7) + (((d<<7)>>exp)&0x7f)) - (c->
y>>2);
189 dex = (dql>>7) & 0xf;
190 dqt = (1<<7) + (dql & 0x7f);
191 return (dql < 0) ? 0 : ((dqt<<dex) >> 7);
196 int dq, re_signal, pk0, fa1, i, tr, ylint, ylfrac, thr2, al, dq0;
203 ylint = (c->
yl >> 15);
204 ylfrac = (c->
yl >> 10) & 0x1f;
205 thr2 = (ylint > 9) ? 0x1f << 10 : (0x20 + ylfrac) << ylint;
206 tr= (c->
td == 1 && dq > ((3*thr2)>>2));
210 re_signal = c->
se + dq;
213 pk0 = (c->
sez + dq) ?
sgn(c->
sez + dq) : 0;
214 dq0 = dq ?
sgn(dq) : 0;
222 fa1 = av_clip_intp2((-c->
a[0]*c->
pk[0]*pk0)>>5, 8);
224 c->
a[1] += 128*pk0*c->
pk[1] + fa1 - (c->
a[1]>>7);
225 c->
a[1] = av_clip(c->
a[1], -12288, 12288);
226 c->
a[0] += 64*3*pk0*c->
pk[0] - (c->
a[0] >> 8);
227 c->
a[0] = av_clip(c->
a[0], -(15360 - c->
a[1]), 15360 - c->
a[1]);
230 c->
b[i] += 128*dq0*sgn(-c->
dq[i].
sign) - (c->
b[i]>>8);
235 c->
pk[0] = pk0 ? pk0 : 1;
237 i2f(re_signal, &c->
sr[0]);
239 c->
dq[i] = c->
dq[i-1];
243 c->
td = c->
a[1] < -11776;
251 c->
ap += (-c->
ap) >> 4;
252 if (c->
y <= 1535 || c->
td || abs((c->
dms << 2) - c->
dml) >= (c->
dml >> 3))
257 c->
yu = av_clip(c->
y + c->
tbls.
W[I] + ((-c->
y)>>5), 544, 5120);
258 c->
yl += c->
yu + ((-c->
yl)>>6);
261 al = (c->
ap >= 256) ? 1<<6 : c->
ap >> 2;
262 c->
y = (c->
yl + (c->
yu - (c->
yl>>6))*al) >> 6;
273 return av_clip(re_signal << 2, -0xffff, 0xffff);
281 for (i=0; i<2; i++) {
285 for (i=0; i<6; i++) {
296 #if CONFIG_ADPCM_G726_ENCODER
315 "allowed when the compliance level is higher than unofficial. "
316 "Resample or reduce the compliance level.\n");
346 const int16_t *samples = (
const int16_t *)frame->
data[0];
348 int i,
ret, out_size;
360 avpkt->
size = out_size;
365 #define OFFSET(x) offsetof(G726Context, x)
366 #define AE AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
372 static const AVClass g726_class = {
384 AVCodec ff_adpcm_g726_encoder = {
390 .
init = g726_encode_init,
391 .encode2 = g726_encode_frame,
395 .priv_class = &g726_class,
400 #if CONFIG_ADPCM_G726_DECODER || CONFIG_ADPCM_G726LE_DECODER
427 int *got_frame_ptr,
AVPacket *avpkt)
431 int buf_size = avpkt->
size;
435 int out_samples,
ret;
437 out_samples = buf_size * 8 / c->
code_size;
443 samples = (int16_t *)frame->
data[0];
447 while (out_samples--)
467 #if CONFIG_ADPCM_G726_DECODER
468 AVCodec ff_adpcm_g726_decoder = {
474 .
init = g726_decode_init,
475 .
decode = g726_decode_frame,
476 .
flush = g726_decode_flush,
481 #if CONFIG_ADPCM_G726LE_DECODER
482 AVCodec ff_adpcm_g726le_decoder = {
487 .
init = g726_decode_init,
488 .
decode = g726_decode_frame,
489 .
flush = g726_decode_flush,
static av_cold int g726_reset(G726Context *c)
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size)
Check AVPacket size and/or allocate data.
const struct AVCodec * codec
This structure describes decoded (raw) audio or video data.
const int16_t * W
special table #1 ;-)
ptrdiff_t const GLvoid * data
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
#define LIBAVUTIL_VERSION_INT
static av_cold int init(AVCodecContext *avctx)
static int16_t g726_decode(G726Context *c, int I)
static Float11 * i2f(int i, Float11 *f)
static const int16_t iquant_tbl32[]
static const G726Tables G726Tables_pool[]
const uint8_t * F
special table #2
static const uint8_t F_tbl32[]
int b[6]
sixth order predictor coeffs
int av_log2_16bit(unsigned v)
static int sgn(int value)
static const int quant_tbl40[]
40kbit/s 5bits per sample
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
#define av_assert0(cond)
assert() equivalent, that is always enabled.
const int * quant
quantization table
static const int quant_tbl16[]
16kbit/s 2bits per sample
void void avpriv_request_sample(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
static const uint8_t F_tbl24[]
enum AVSampleFormat sample_fmt
audio sample format
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
bitstream reader API header.
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
static const int16_t W_tbl32[]
const OptionDef options[]
int ap
scale factor control
G726Tables tbls
static tables needed for computation
static int get_bits_left(GetBitContext *gb)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static const int quant_tbl24[]
24kbit/s 3bits per sample
static const int16_t iquant_tbl16[]
#define CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static uint8_t quant(G726Context *c, int d)
Para 4.2.2 page 18: Adaptive quantizer.
simple assert() macros that are a bit more flexible than ISO C assert().
const char * name
Name of the codec implementation.
Libavcodec external API header.
uint64_t channel_layout
Audio channel layout.
int bit_rate
the average bitrate
audio channel layout utility functions
static const int16_t W_tbl24[]
GLsizei GLboolean const GLfloat * value
static const int16_t W_tbl40[]
static const int16_t iquant_tbl24[]
int se
estimated signal for the next iteration
int a[2]
second order predictor coeffs
static void flush(AVCodecContext *avctx)
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
int frame_size
Number of samples per channel in an audio frame.
#define FF_COMPLIANCE_UNOFFICIAL
Allow unofficial extensions.
AVSampleFormat
Audio sample formats.
int sample_rate
samples per second
uint8_t mant
6bit mantissa
main external API structure.
static const int16_t W_tbl16[]
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
static int16_t mult(Float11 *f1, Float11 *f2)
int little_endian
little-endian bitstream as used in aiff and Sun AU
Describe the class of an AVClass context structure.
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
static unsigned int get_bits_le(GetBitContext *s, int n)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static const uint8_t F_tbl16[]
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
common internal api header.
static void flush_put_bits(PutBitContext *s)
Pad the end of the output stream with zeros.
int dml
long average magnitude of F[i]
static const int16_t iquant_tbl40[]
static void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_size)
Initialize the PutBitContext s.
static const uint8_t F_tbl40[]
int y
quantizer scaling factor for the next iteration
const int16_t * iquant
inverse quantization table
int channels
number of audio channels
int sez
estimated second order prediction
static enum AVSampleFormat sample_fmts[]
static int16_t inverse_quant(G726Context *c, int i)
Para 4.2.3 page 22: Inverse adaptive quantizer.
static const int quant_tbl32[]
32kbit/s 4bits per sample
static const AVCodecDefault defaults[]
int dms
short average magnitude of F[i]
#define AV_CH_LAYOUT_MONO
This structure stores compressed data.
int nb_samples
number of audio samples (per channel) described by this frame
int strict_std_compliance
strictly follow the standard (MPEG4, ...).