FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
aacenc.h
Go to the documentation of this file.
1
/*
2
* AAC encoder
3
* Copyright (C) 2008 Konstantin Shishkov
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_AACENC_H
23
#define AVCODEC_AACENC_H
24
25
#include "
libavutil/float_dsp.h
"
26
#include "
avcodec.h
"
27
#include "
put_bits.h
"
28
#include "
dsputil.h
"
29
30
#include "
aac.h
"
31
#include "
audio_frame_queue.h
"
32
#include "
psymodel.h
"
33
34
#define AAC_CODER_NB 4
35
36
typedef
struct
AACEncOptions
{
37
int
stereo_mode
;
38
int
aac_coder
;
39
}
AACEncOptions
;
40
41
struct
AACEncContext
;
42
43
typedef
struct
AACCoefficientsEncoder
{
44
void
(*
search_for_quantizers
)(
AVCodecContext
*avctx,
struct
AACEncContext
*s,
45
SingleChannelElement
*sce,
const
float
lambda
);
46
void
(*
encode_window_bands_info
)(
struct
AACEncContext
*s,
SingleChannelElement
*sce,
47
int
win,
int
group_len,
const
float
lambda
);
48
void
(*
quantize_and_encode_band
)(
struct
AACEncContext
*s,
PutBitContext
*
pb
,
const
float
*in,
int
size
,
49
int
scale_idx,
int
cb
,
const
float
lambda
);
50
void
(*
search_for_ms
)(
struct
AACEncContext
*s,
ChannelElement
*
cpe
,
const
float
lambda
);
51
}
AACCoefficientsEncoder
;
52
53
extern
AACCoefficientsEncoder
ff_aac_coders
[];
54
55
/**
56
* AAC encoder context
57
*/
58
typedef
struct
AACEncContext
{
59
AVClass
*
av_class
;
60
AACEncOptions
options
;
///< encoding options
61
PutBitContext
pb
;
62
FFTContext
mdct1024
;
///< long (1024 samples) frame transform context
63
FFTContext
mdct128
;
///< short (128 samples) frame transform context
64
DSPContext
dsp
;
65
AVFloatDSPContext
fdsp
;
66
float
*
planar_samples
[6];
///< saved preprocessed input
67
68
int
samplerate_index
;
///< MPEG-4 samplerate index
69
int
channels
;
///< channel count
70
const
uint8_t
*
chan_map
;
///< channel configuration map
71
72
ChannelElement
*
cpe
;
///< channel elements
73
FFPsyContext
psy
;
74
struct
FFPsyPreprocessContext
*
psypp
;
75
AACCoefficientsEncoder
*
coder
;
76
int
cur_channel
;
77
int
last_frame
;
78
float
lambda
;
79
AudioFrameQueue
afq
;
80
DECLARE_ALIGNED
(16,
int
,
qcoefs
)[96];
///< quantized coefficients
81
DECLARE_ALIGNED
(32,
float
,
scoefs
)[1024];
///< scaled coefficients
82
83
struct
{
84
float
*
samples
;
85
}
buffer
;
86
}
AACEncContext
;
87
88
extern
float
ff_aac_pow34sf_tab
[428];
89
90
#endif
/* AVCODEC_AACENC_H */
Generated on Sat May 25 2013 03:58:30 for FFmpeg by
1.8.2