0e1baede |
/* |
4be292da |
* common functions for the ATRAC family of decoders |
cc2330fe |
*
* Copyright (c) 2009-2013 Maxim Poliakovski |
0e1baede |
* Copyright (c) 2009 Benjamin Larsson
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/** |
ba87f080 |
* @file |
7df9e693 |
* ATRAC common header |
0e1baede |
*/
#ifndef AVCODEC_ATRAC_H
#define AVCODEC_ATRAC_H
|
d49f3fa5 |
/**
* Gain control parameters for one subband.
*/
typedef struct AtracGainInfo { |
79cbac8c |
int num_points; ///< number of gain control points
int lev_code[7]; ///< level at corresponding control point
int loc_code[7]; ///< location of gain control points |
d49f3fa5 |
} AtracGainInfo;
/**
* Gain compensation context structure.
*/
typedef struct AtracGCContext { |
79cbac8c |
float gain_tab1[16]; ///< gain compensation level table
float gain_tab2[31]; ///< gain compensation interpolation table
int id2exp_offset; ///< offset for converting level index into level exponent
int loc_scale; ///< scale of location code = 2^loc_scale samples
int loc_size; ///< size of location code in samples |
d49f3fa5 |
} AtracGCContext;
|
ee7fed27 |
extern float ff_atrac_sf_table[64]; |
0e1baede |
|
3d80ab01 |
/**
* Generate common tables.
*/ |
99560a4c |
void ff_atrac_generate_tables(void); |
3d80ab01 |
/** |
d49f3fa5 |
* Initialize gain compensation context.
*
* @param gctx pointer to gain compensation context to initialize
* @param id2exp_offset offset for converting level index into level exponent
* @param loc_scale location size factor
*/
void ff_atrac_init_gain_compensation(AtracGCContext *gctx, int id2exp_offset,
int loc_scale);
/**
* Apply gain compensation and perform the MDCT overlapping part.
*
* @param gctx pointer to gain compensation context
* @param in input buffer
* @param prev previous buffer to perform overlap against
* @param gc_now gain control information for current frame
* @param gc_next gain control information for next frame
* @param num_samples number of samples to process
* @param out output data goes here
*/
void ff_atrac_gain_compensation(AtracGCContext *gctx, float *in, float *prev,
AtracGainInfo *gc_now, AtracGainInfo *gc_next,
int num_samples, float *out);
/** |
3d80ab01 |
* Quadrature mirror synthesis filter.
*
* @param inlo lower part of spectrum
* @param inhi higher part of spectrum
* @param nIn size of spectrum buffer
* @param pOut out buffer
* @param delayBuf delayBuf buffer
* @param temp temp buffer
*/ |
746cb9bc |
void ff_atrac_iqmf(float *inlo, float *inhi, unsigned int nIn, float *pOut,
float *delayBuf, float *temp); |
0e1baede |
#endif /* AVCODEC_ATRAC_H */ |