summaryrefslogtreecommitdiffstats
path: root/libavcodec/atrac.h
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/atrac.h')
-rw-r--r--libavcodec/atrac.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/libavcodec/atrac.h b/libavcodec/atrac.h
index fec66bd..e47d4ca 100644
--- a/libavcodec/atrac.h
+++ b/libavcodec/atrac.h
@@ -29,6 +29,26 @@
#ifndef AVCODEC_ATRAC_H
#define AVCODEC_ATRAC_H
+/**
+ * Gain control parameters for one subband.
+ */
+typedef struct AtracGainInfo {
+ int num_points; ///< number of gain control points
+ int levcode[7]; ///< level at corresponding control point
+ int loccode[7]; ///< location of gain control points
+} AtracGainInfo;
+
+/**
+ * Gain compensation context structure.
+ */
+typedef struct AtracGCContext {
+ 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
+} AtracGCContext;
+
extern float ff_atrac_sf_table[64];
/**
@@ -37,6 +57,31 @@ extern float ff_atrac_sf_table[64];
void ff_atrac_generate_tables(void);
/**
+ * 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);
+
+/**
* Quadrature mirror synthesis filter.
*
* @param inlo lower part of spectrum
OpenPOWER on IntegriCloud