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
ra144.h
Go to the documentation of this file.
1
/*
2
* Real Audio 1.0 (14.4K)
3
* Copyright (c) 2003 the ffmpeg project
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#ifndef AVCODEC_RA144_H
23
#define AVCODEC_RA144_H
24
25
#include <stdint.h>
26
#include "
lpc.h
"
27
#include "
audio_frame_queue.h
"
28
29
#define NBLOCKS 4
///< number of subblocks within a block
30
#define BLOCKSIZE 40
///< subblock size in 16-bit words
31
#define BUFFERSIZE 146
///< the size of the adaptive codebook
32
#define FIXED_CB_SIZE 128
///< size of fixed codebooks
33
#define FRAME_SIZE 20
///< size of encoded frame
34
#define LPC_ORDER 10
///< order of LPC filter
35
36
typedef
struct
RA144Context
{
37
AVCodecContext
*
avctx
;
38
LPCContext
lpc_ctx
;
39
AudioFrameQueue
afq
;
40
int
last_frame
;
41
42
unsigned
int
old_energy
;
///< previous frame energy
43
44
unsigned
int
lpc_tables
[2][10];
45
46
/** LPC coefficients: lpc_coef[0] is the coefficients of the current frame
47
* and lpc_coef[1] of the previous one. */
48
unsigned
int
*
lpc_coef
[2];
49
50
unsigned
int
lpc_refl_rms
[2];
51
52
int16_t
curr_block
[
NBLOCKS
*
BLOCKSIZE
];
53
54
/** The current subblock padded by the last 10 values of the previous one. */
55
int16_t
curr_sblock
[50];
56
57
/** Adaptive codebook, its size is two units bigger to avoid a
58
* buffer overflow. */
59
int16_t
adapt_cb
[146+2];
60
}
RA144Context
;
61
62
void
ff_copy_and_dup
(int16_t *target,
const
int16_t *source,
int
offset
);
63
int
ff_eval_refl
(
int
*refl,
const
int16_t *coefs,
AVCodecContext
*avctx);
64
void
ff_eval_coefs
(
int
*coefs,
const
int
*refl);
65
void
ff_int_to_int16
(int16_t *
out
,
const
int
*inp);
66
int
ff_t_sqrt
(
unsigned
int
x);
67
unsigned
int
ff_rms
(
const
int
*
data
);
68
int
ff_interp
(
RA144Context
*ractx, int16_t *
out
,
int
a
,
int
copyold,
69
int
energy);
70
unsigned
int
ff_rescale_rms
(
unsigned
int
rms,
unsigned
int
energy);
71
int
ff_irms
(
const
int16_t *
data
);
72
void
ff_subblock_synthesis
(
RA144Context
*ractx,
const
int16_t *lpc_coefs,
73
int
cba_idx,
int
cb1_idx,
int
cb2_idx,
74
int
gval,
int
gain);
75
76
extern
const
int16_t
ff_gain_val_tab
[256][3];
77
extern
const
uint8_t
ff_gain_exp_tab
[256];
78
extern
const
int8_t
ff_cb1_vects
[128][40];
79
extern
const
int8_t
ff_cb2_vects
[128][40];
80
extern
const
uint16_t
ff_cb1_base
[128];
81
extern
const
uint16_t
ff_cb2_base
[128];
82
extern
const
int16_t
ff_energy_tab
[32];
83
extern
const
int16_t *
const
ff_lpc_refl_cb
[10];
84
85
#endif
/* AVCODEC_RA144_H */
Generated on Sat Jan 25 2014 19:51:53 for FFmpeg by
1.8.2