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
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
29
#include "
aac.h
"
30
#include "
audio_frame_queue.h
"
31
#include "
psymodel.h
"
32
33
#define AAC_CODER_NB 4
34
35
typedef
struct
AACEncOptions
{
36
int
stereo_mode
;
37
int
aac_coder
;
38
}
AACEncOptions
;
39
40
struct
AACEncContext
;
41
42
typedef
struct
AACCoefficientsEncoder
{
43
void
(*
search_for_quantizers
)(
AVCodecContext
*avctx,
struct
AACEncContext
*
s
,
44
SingleChannelElement
*sce,
const
float
lambda
);
45
void
(*
encode_window_bands_info
)(
struct
AACEncContext
*
s
,
SingleChannelElement
*sce,
46
int
win,
int
group_len,
const
float
lambda
);
47
void
(*
quantize_and_encode_band
)(
struct
AACEncContext
*
s
,
PutBitContext
*
pb
,
const
float
*
in
,
int
size
,
48
int
scale_idx,
int
cb
,
const
float
lambda
);
49
void
(*
search_for_ms
)(
struct
AACEncContext
*
s
,
ChannelElement
*
cpe
,
const
float
lambda
);
50
}
AACCoefficientsEncoder
;
51
52
extern
AACCoefficientsEncoder
ff_aac_coders
[];
53
54
/**
55
* AAC encoder context
56
*/
57
typedef
struct
AACEncContext
{
58
AVClass
*
av_class
;
59
AACEncOptions
options
;
///< encoding options
60
PutBitContext
pb
;
61
FFTContext
mdct1024
;
///< long (1024 samples) frame transform context
62
FFTContext
mdct128
;
///< short (128 samples) frame transform context
63
AVFloatDSPContext
fdsp
;
64
float
*
planar_samples
[6];
///< saved preprocessed input
65
66
int
samplerate_index
;
///< MPEG-4 samplerate index
67
int
channels
;
///< channel count
68
const
uint8_t
*
chan_map
;
///< channel configuration map
69
70
ChannelElement
*
cpe
;
///< channel elements
71
FFPsyContext
psy
;
72
struct
FFPsyPreprocessContext
*
psypp
;
73
AACCoefficientsEncoder
*
coder
;
74
int
cur_channel
;
75
int
last_frame
;
76
float
lambda
;
77
AudioFrameQueue
afq
;
78
DECLARE_ALIGNED
(16,
int
,
qcoefs
)[96];
///< quantized coefficients
79
DECLARE_ALIGNED
(32,
float
,
scoefs
)[1024];
///< scaled coefficients
80
81
struct
{
82
float
*
samples
;
83
}
buffer
;
84
}
AACEncContext
;
85
86
extern
float
ff_aac_pow34sf_tab
[428];
87
88
void
ff_aac_coder_init_mips
(
AACEncContext
*
c
);
89
90
#endif
/* AVCODEC_AACENC_H */
Generated on Wed Jul 10 2013 23:47:54 for FFmpeg by
1.8.2