OLD | NEW |
1 /* | 1 /* |
2 * Wmapro compatible decoder | 2 * Wmapro compatible decoder |
3 * Copyright (c) 2007 Baptiste Coudurier, Benjamin Larsson, Ulion | 3 * Copyright (c) 2007 Baptiste Coudurier, Benjamin Larsson, Ulion |
4 * Copyright (c) 2008 - 2009 Sascha Sommer, Benjamin Larsson | 4 * Copyright (c) 2008 - 2009 Sascha Sommer, Benjamin Larsson |
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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 uint8_t grouped; ///< channel is part of a
group | 135 uint8_t grouped; ///< channel is part of a
group |
136 int quant_step; ///< quantization step for
the current subframe | 136 int quant_step; ///< quantization step for
the current subframe |
137 int8_t reuse_sf; ///< share scale factors b
etween subframes | 137 int8_t reuse_sf; ///< share scale factors b
etween subframes |
138 int8_t scale_factor_step; ///< scaling step for the
current subframe | 138 int8_t scale_factor_step; ///< scaling step for the
current subframe |
139 int max_scale_factor; ///< maximum scale factor
for the current subframe | 139 int max_scale_factor; ///< maximum scale factor
for the current subframe |
140 int saved_scale_factors[2][MAX_BANDS]; ///< resampled and (previo
usly) transmitted scale factor values | 140 int saved_scale_factors[2][MAX_BANDS]; ///< resampled and (previo
usly) transmitted scale factor values |
141 int8_t scale_factor_idx; ///< index for the transmi
tted scale factor values (used for resampling) | 141 int8_t scale_factor_idx; ///< index for the transmi
tted scale factor values (used for resampling) |
142 int* scale_factors; ///< pointer to the scale
factor values used for decoding | 142 int* scale_factors; ///< pointer to the scale
factor values used for decoding |
143 uint8_t table_idx; ///< index in sf_offsets f
or the scale factor reference block | 143 uint8_t table_idx; ///< index in sf_offsets f
or the scale factor reference block |
144 float* coeffs; ///< pointer to the subfra
me decode buffer | 144 float* coeffs; ///< pointer to the subfra
me decode buffer |
145 DECLARE_ALIGNED_16(float, out)[WMAPRO_BLOCK_MAX_SIZE + WMAPRO_BLOCK_MAX_SIZE
/ 2]; ///< output buffer | 145 DECLARE_ALIGNED(16, float, out)[WMAPRO_BLOCK_MAX_SIZE + WMAPRO_BLOCK_MAX_SIZ
E / 2]; ///< output buffer |
146 } WMAProChannelCtx; | 146 } WMAProChannelCtx; |
147 | 147 |
148 /** | 148 /** |
149 * @brief channel group for channel transformations | 149 * @brief channel group for channel transformations |
150 */ | 150 */ |
151 typedef struct { | 151 typedef struct { |
152 uint8_t num_channels; ///< number of cha
nnels in the group | 152 uint8_t num_channels; ///< number of cha
nnels in the group |
153 int8_t transform; ///< transform on
/ off | 153 int8_t transform; ///< transform on
/ off |
154 int8_t transform_band[MAX_BANDS]; ///< controls if t
he transform is enabled for a certain band | 154 int8_t transform_band[MAX_BANDS]; ///< controls if t
he transform is enabled for a certain band |
155 float decorrelation_matrix[WMAPRO_MAX_CHANNELS*WMAPRO_MAX_CHANNELS]; | 155 float decorrelation_matrix[WMAPRO_MAX_CHANNELS*WMAPRO_MAX_CHANNELS]; |
156 float* channel_data[WMAPRO_MAX_CHANNELS]; ///< transformatio
n coefficients | 156 float* channel_data[WMAPRO_MAX_CHANNELS]; ///< transformatio
n coefficients |
157 } WMAProChannelGrp; | 157 } WMAProChannelGrp; |
158 | 158 |
159 /** | 159 /** |
160 * @brief main decoder context | 160 * @brief main decoder context |
161 */ | 161 */ |
162 typedef struct WMAProDecodeCtx { | 162 typedef struct WMAProDecodeCtx { |
163 /* generic decoder variables */ | 163 /* generic decoder variables */ |
164 AVCodecContext* avctx; ///< codec context for av_lo
g | 164 AVCodecContext* avctx; ///< codec context for av_lo
g |
165 DSPContext dsp; ///< accelerated DSP functio
ns | 165 DSPContext dsp; ///< accelerated DSP functio
ns |
166 uint8_t frame_data[MAX_FRAMESIZE + | 166 uint8_t frame_data[MAX_FRAMESIZE + |
167 FF_INPUT_BUFFER_PADDING_SIZE];///< compressed frame data | 167 FF_INPUT_BUFFER_PADDING_SIZE];///< compressed frame data |
168 PutBitContext pb; ///< context for filling the
frame_data buffer | 168 PutBitContext pb; ///< context for filling the
frame_data buffer |
169 FFTContext mdct_ctx[WMAPRO_BLOCK_SIZES]; ///< MDCT context per block
size | 169 FFTContext mdct_ctx[WMAPRO_BLOCK_SIZES]; ///< MDCT context per block
size |
170 DECLARE_ALIGNED_16(float, tmp)[WMAPRO_BLOCK_MAX_SIZE]; ///< IMDCT output buf
fer | 170 DECLARE_ALIGNED(16, float, tmp)[WMAPRO_BLOCK_MAX_SIZE]; ///< IMDCT output bu
ffer |
171 float* windows[WMAPRO_BLOCK_SIZES]; ///< windows for the differe
nt block sizes | 171 float* windows[WMAPRO_BLOCK_SIZES]; ///< windows for the differe
nt block sizes |
172 | 172 |
173 /* frame size dependent frame information (set during initialization) */ | 173 /* frame size dependent frame information (set during initialization) */ |
174 uint32_t decode_flags; ///< used compression featur
es | 174 uint32_t decode_flags; ///< used compression featur
es |
175 uint8_t len_prefix; ///< frame is prefixed with
its length | 175 uint8_t len_prefix; ///< frame is prefixed with
its length |
176 uint8_t dynamic_range_compression; ///< frame contains DRC data | 176 uint8_t dynamic_range_compression; ///< frame contains DRC data |
177 uint8_t bits_per_sample; ///< integer audio sample si
ze for the unscaled IMDCT output (used to scale to [-1.0, 1.0]) | 177 uint8_t bits_per_sample; ///< integer audio sample si
ze for the unscaled IMDCT output (used to scale to [-1.0, 1.0]) |
178 uint16_t samples_per_frame; ///< number of samples to ou
tput | 178 uint16_t samples_per_frame; ///< number of samples to ou
tput |
179 uint16_t log2_frame_size; | 179 uint16_t log2_frame_size; |
180 int8_t num_channels; ///< number of channels in t
he stream (same as AVCodecContext.num_channels) | 180 int8_t num_channels; ///< number of channels in t
he stream (same as AVCodecContext.num_channels) |
(...skipping 1387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1568 CODEC_ID_WMAPRO, | 1568 CODEC_ID_WMAPRO, |
1569 sizeof(WMAProDecodeCtx), | 1569 sizeof(WMAProDecodeCtx), |
1570 decode_init, | 1570 decode_init, |
1571 NULL, | 1571 NULL, |
1572 decode_end, | 1572 decode_end, |
1573 decode_packet, | 1573 decode_packet, |
1574 .capabilities = CODEC_CAP_SUBFRAMES, | 1574 .capabilities = CODEC_CAP_SUBFRAMES, |
1575 .flush= flush, | 1575 .flush= flush, |
1576 .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 9 Professional"), | 1576 .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 9 Professional"), |
1577 }; | 1577 }; |
OLD | NEW |