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 Sat Jan 25 2014 19:51:44 for FFmpeg by
1.8.2