FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
g722.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) CMU 1993 Computer Science, Speech Group
3
* Chengxiang Lu and Alex Hauptmann
4
* Copyright (c) 2005 Steve Underwood <steveu at coppice.org>
5
* Copyright (c) 2009 Kenan Gillet
6
* Copyright (c) 2010 Martin Storsjo
7
*
8
* This file is part of FFmpeg.
9
*
10
* FFmpeg is free software; you can redistribute it and/or
11
* modify it under the terms of the GNU Lesser General Public
12
* License as published by the Free Software Foundation; either
13
* version 2.1 of the License, or (at your option) any later version.
14
*
15
* FFmpeg is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
* Lesser General Public License for more details.
19
*
20
* You should have received a copy of the GNU Lesser General Public
21
* License along with FFmpeg; if not, write to the Free Software
22
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23
*/
24
25
#ifndef AVCODEC_G722_H
26
#define AVCODEC_G722_H
27
28
#include <stdint.h>
29
#include "
avcodec.h
"
30
31
#define PREV_SAMPLES_BUF_SIZE 1024
32
33
typedef
struct
G722Context
{
34
const
AVClass
*
class
;
35
int
bits_per_codeword
;
36
int16_t
prev_samples
[
PREV_SAMPLES_BUF_SIZE
];
///< memory of past decoded samples
37
int
prev_samples_pos
;
///< the number of values in prev_samples
38
39
/**
40
* The band[0] and band[1] correspond respectively to the lower band and higher band.
41
*/
42
struct
G722Band
{
43
int16_t
s_predictor
;
///< predictor output value
44
int32_t
s_zero
;
///< previous output signal from zero predictor
45
int8_t
part_reconst_mem
[2];
///< signs of previous partially reconstructed signals
46
int16_t
prev_qtzd_reconst
;
///< previous quantized reconstructed signal (internal value, using low_inv_quant4)
47
int16_t
pole_mem
[2];
///< second-order pole section coefficient buffer
48
int32_t
diff_mem
[6];
///< quantizer difference signal memory
49
int16_t
zero_mem
[6];
///< Seventh-order zero section coefficient buffer
50
int16_t
log_factor
;
///< delayed 2-logarithmic quantizer factor
51
int16_t
scale_factor
;
///< delayed quantizer scale factor
52
}
band
[2];
53
54
struct
TrellisNode
{
55
struct
G722Band
state
;
56
uint32_t
ssd
;
57
int
path
;
58
} *
node_buf
[2], **
nodep_buf
[2];
59
60
struct
TrellisPath
{
61
int
value
;
62
int
prev
;
63
} *
paths
[2];
64
}
G722Context
;
65
66
extern
const
int16_t
ff_g722_high_inv_quant
[4];
67
extern
const
int16_t
ff_g722_low_inv_quant4
[16];
68
extern
const
int16_t
ff_g722_low_inv_quant6
[64];
69
70
void
ff_g722_update_low_predictor
(
struct
G722Band *
band
,
const
int
ilow);
71
72
void
ff_g722_update_high_predictor
(
struct
G722Band *
band
,
const
int
dhigh,
73
const
int
ihigh);
74
75
void
ff_g722_apply_qmf
(
const
int16_t *prev_samples,
int
*xout1,
int
*xout2);
76
77
#endif
/* AVCODEC_G722_H */
Generated on Sat Jan 25 2014 19:51:47 for FFmpeg by
1.8.2