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
atrac.h
Go to the documentation of this file.
1
/*
2
* common functions for the ATRAC family of decoders
3
*
4
* Copyright (c) 2009-2013 Maxim Poliakovski
5
* Copyright (c) 2009 Benjamin Larsson
6
*
7
* This file is part of FFmpeg.
8
*
9
* FFmpeg is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* FFmpeg is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with FFmpeg; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
/**
25
* @file
26
* ATRAC common header
27
*/
28
29
#ifndef AVCODEC_ATRAC_H
30
#define AVCODEC_ATRAC_H
31
32
/**
33
* Gain control parameters for one subband.
34
*/
35
typedef
struct
AtracGainInfo
{
36
int
num_points
;
///< number of gain control points
37
int
lev_code
[7];
///< level at corresponding control point
38
int
loc_code
[7];
///< location of gain control points
39
}
AtracGainInfo
;
40
41
/**
42
* Gain compensation context structure.
43
*/
44
typedef
struct
AtracGCContext
{
45
float
gain_tab1
[16];
///< gain compensation level table
46
float
gain_tab2
[31];
///< gain compensation interpolation table
47
int
id2exp_offset
;
///< offset for converting level index into level exponent
48
int
loc_scale
;
///< scale of location code = 2^loc_scale samples
49
int
loc_size
;
///< size of location code in samples
50
}
AtracGCContext
;
51
52
extern
float
ff_atrac_sf_table
[64];
53
54
/**
55
* Generate common tables.
56
*/
57
void
ff_atrac_generate_tables
(
void
);
58
59
/**
60
* Initialize gain compensation context.
61
*
62
* @param gctx pointer to gain compensation context to initialize
63
* @param id2exp_offset offset for converting level index into level exponent
64
* @param loc_scale location size factor
65
*/
66
void
ff_atrac_init_gain_compensation
(
AtracGCContext
*gctx,
int
id2exp_offset,
67
int
loc_scale);
68
69
/**
70
* Apply gain compensation and perform the MDCT overlapping part.
71
*
72
* @param gctx pointer to gain compensation context
73
* @param in input buffer
74
* @param prev previous buffer to perform overlap against
75
* @param gc_now gain control information for current frame
76
* @param gc_next gain control information for next frame
77
* @param num_samples number of samples to process
78
* @param out output data goes here
79
*/
80
void
ff_atrac_gain_compensation
(
AtracGCContext
*gctx,
float
*
in
,
float
*prev,
81
AtracGainInfo
*gc_now,
AtracGainInfo
*gc_next,
82
int
num_samples,
float
*
out
);
83
84
/**
85
* Quadrature mirror synthesis filter.
86
*
87
* @param inlo lower part of spectrum
88
* @param inhi higher part of spectrum
89
* @param nIn size of spectrum buffer
90
* @param pOut out buffer
91
* @param delayBuf delayBuf buffer
92
* @param temp temp buffer
93
*/
94
void
ff_atrac_iqmf
(
float
*inlo,
float
*inhi,
unsigned
int
nIn,
float
*pOut,
95
float
*delayBuf,
float
*
temp
);
96
97
#endif
/* AVCODEC_ATRAC_H */
Generated on Sun Jul 20 2014 23:05:44 for FFmpeg by
1.8.2