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