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