| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Spectral Band Replication definitions and structures | 2 * Spectral Band Replication definitions and structures |
| 3 * Copyright (c) 2008-2009 Robert Swain ( rob opendot cl ) | 3 * Copyright (c) 2008-2009 Robert Swain ( rob opendot cl ) |
| 4 * Copyright (c) 2010 Alex Converse <alex.converse@gmail.com> | 4 * Copyright (c) 2010 Alex Converse <alex.converse@gmail.com> |
| 5 * | 5 * |
| 6 * This file is part of FFmpeg. | 6 * This file is part of FFmpeg. |
| 7 * | 7 * |
| 8 * FFmpeg is free software; you can redistribute it and/or | 8 * FFmpeg is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * @file | 24 * @file |
| 25 * Spectral Band Replication definitions and structures | 25 * Spectral Band Replication definitions and structures |
| 26 * @author Robert Swain ( rob opendot cl ) | 26 * @author Robert Swain ( rob opendot cl ) |
| 27 */ | 27 */ |
| 28 | 28 |
| 29 #ifndef AVCODEC_SBR_H | 29 #ifndef AVCODEC_SBR_H |
| 30 #define AVCODEC_SBR_H | 30 #define AVCODEC_SBR_H |
| 31 | 31 |
| 32 #include <stdint.h> | 32 #include <stdint.h> |
| 33 #include "fft.h" | 33 #include "fft.h" |
| 34 #include "ps.h" |
| 34 | 35 |
| 35 /** | 36 /** |
| 36 * Spectral Band Replication header - spectrum parameters that invoke a reset if
they differ from the previous header. | 37 * Spectral Band Replication header - spectrum parameters that invoke a reset if
they differ from the previous header. |
| 37 */ | 38 */ |
| 38 typedef struct { | 39 typedef struct { |
| 39 uint8_t bs_start_freq; | 40 uint8_t bs_start_freq; |
| 40 uint8_t bs_stop_freq; | 41 uint8_t bs_stop_freq; |
| 41 uint8_t bs_xover_band; | 42 uint8_t bs_xover_band; |
| 42 | 43 |
| 43 /** | 44 /** |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 unsigned bs_coupling; | 127 unsigned bs_coupling; |
| 127 unsigned k[5]; ///< k0, k1, k2 | 128 unsigned k[5]; ///< k0, k1, k2 |
| 128 ///kx', and kx respectively, kx is the first QMF subband where SBR is used. | 129 ///kx', and kx respectively, kx is the first QMF subband where SBR is used. |
| 129 ///kx' is its value from the previous frame | 130 ///kx' is its value from the previous frame |
| 130 unsigned kx[2]; | 131 unsigned kx[2]; |
| 131 ///M' and M respectively, M is the number of QMF subbands that use SBR. | 132 ///M' and M respectively, M is the number of QMF subbands that use SBR. |
| 132 unsigned m[2]; | 133 unsigned m[2]; |
| 133 ///The number of frequency bands in f_master | 134 ///The number of frequency bands in f_master |
| 134 unsigned n_master; | 135 unsigned n_master; |
| 135 SBRData data[2]; | 136 SBRData data[2]; |
| 137 PSContext ps; |
| 136 ///N_Low and N_High respectively, the number of frequency bands for low and
high resolution | 138 ///N_Low and N_High respectively, the number of frequency bands for low and
high resolution |
| 137 unsigned n[2]; | 139 unsigned n[2]; |
| 138 ///Number of noise floor bands | 140 ///Number of noise floor bands |
| 139 unsigned n_q; | 141 unsigned n_q; |
| 140 ///Number of limiter bands | 142 ///Number of limiter bands |
| 141 unsigned n_lim; | 143 unsigned n_lim; |
| 142 ///The master QMF frequency grouping | 144 ///The master QMF frequency grouping |
| 143 uint16_t f_master[49]; | 145 uint16_t f_master[49]; |
| 144 ///Frequency borders for low resolution SBR | 146 ///Frequency borders for low resolution SBR |
| 145 uint16_t f_tablelow[25]; | 147 uint16_t f_tablelow[25]; |
| 146 ///Frequency borders for high resolution SBR | 148 ///Frequency borders for high resolution SBR |
| 147 uint16_t f_tablehigh[49]; | 149 uint16_t f_tablehigh[49]; |
| 148 ///Frequency borders for noise floors | 150 ///Frequency borders for noise floors |
| 149 uint16_t f_tablenoise[6]; | 151 uint16_t f_tablenoise[6]; |
| 150 ///Frequency borders for the limiter | 152 ///Frequency borders for the limiter |
| 151 uint16_t f_tablelim[29]; | 153 uint16_t f_tablelim[29]; |
| 152 unsigned num_patches; | 154 unsigned num_patches; |
| 153 uint8_t patch_num_subbands[6]; | 155 uint8_t patch_num_subbands[6]; |
| 154 uint8_t patch_start_subband[6]; | 156 uint8_t patch_start_subband[6]; |
| 155 ///QMF low frequency input to the HF generator | 157 ///QMF low frequency input to the HF generator |
| 156 float X_low[32][40][2]; | 158 float X_low[32][40][2]; |
| 157 ///QMF output of the HF generator | 159 ///QMF output of the HF generator |
| 158 float X_high[64][40][2]; | 160 float X_high[64][40][2]; |
| 159 ///QMF values of the reconstructed signal | 161 ///QMF values of the reconstructed signal |
| 160 DECLARE_ALIGNED(16, float, X)[2][2][32][64]; | 162 DECLARE_ALIGNED(16, float, X)[2][2][38][64]; |
| 161 ///Zeroth coefficient used to filter the subband signals | 163 ///Zeroth coefficient used to filter the subband signals |
| 162 float alpha0[64][2]; | 164 float alpha0[64][2]; |
| 163 ///First coefficient used to filter the subband signals | 165 ///First coefficient used to filter the subband signals |
| 164 float alpha1[64][2]; | 166 float alpha1[64][2]; |
| 165 ///Dequantized envelope scalefactors, remapped | 167 ///Dequantized envelope scalefactors, remapped |
| 166 float e_origmapped[7][48]; | 168 float e_origmapped[7][48]; |
| 167 ///Dequantized noise scalefactors, remapped | 169 ///Dequantized noise scalefactors, remapped |
| 168 float q_mapped[7][48]; | 170 float q_mapped[7][48]; |
| 169 ///Sinusoidal presence, remapped | 171 ///Sinusoidal presence, remapped |
| 170 uint8_t s_mapped[7][48]; | 172 uint8_t s_mapped[7][48]; |
| 171 ///Estimated envelope | 173 ///Estimated envelope |
| 172 float e_curr[7][48]; | 174 float e_curr[7][48]; |
| 173 ///Amplitude adjusted noise scalefactors | 175 ///Amplitude adjusted noise scalefactors |
| 174 float q_m[7][48]; | 176 float q_m[7][48]; |
| 175 ///Sinusoidal levels | 177 ///Sinusoidal levels |
| 176 float s_m[7][48]; | 178 float s_m[7][48]; |
| 177 float gain[7][48]; | 179 float gain[7][48]; |
| 178 DECLARE_ALIGNED(16, float, qmf_filter_scratch)[5][64]; | 180 DECLARE_ALIGNED(16, float, qmf_filter_scratch)[5][64]; |
| 179 FFTContext mdct_ana; | 181 FFTContext mdct_ana; |
| 180 FFTContext mdct; | 182 FFTContext mdct; |
| 181 } SpectralBandReplication; | 183 } SpectralBandReplication; |
| 182 | 184 |
| 183 #endif /* AVCODEC_SBR_H */ | 185 #endif /* AVCODEC_SBR_H */ |
| OLD | NEW |