mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
cosmetics: indentation and other prettyprinting fixes
Originally committed as revision 19753 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
c1061cc7f7
commit
e0b1d6605b
@ -262,7 +262,7 @@ static av_cold int decode_end(AVCodecContext *avctx)
|
|||||||
static av_cold int decode_init(AVCodecContext *avctx)
|
static av_cold int decode_init(AVCodecContext *avctx)
|
||||||
{
|
{
|
||||||
WMAProDecodeCtx *s = avctx->priv_data;
|
WMAProDecodeCtx *s = avctx->priv_data;
|
||||||
uint8_t *edata_ptr = avctx->extradata;
|
uint8_t *edata_ptr = avctx->extradata;
|
||||||
unsigned int channel_mask;
|
unsigned int channel_mask;
|
||||||
int i;
|
int i;
|
||||||
int log2_max_num_subframes;
|
int log2_max_num_subframes;
|
||||||
@ -381,11 +381,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
|||||||
|
|
||||||
s->sfb_offsets[i][0] = 0;
|
s->sfb_offsets[i][0] = 0;
|
||||||
|
|
||||||
for (x = 0; x < MAX_BANDS-1 && s->sfb_offsets[i][band-1] < subframe_len; x++) {
|
for (x = 0; x < MAX_BANDS-1 && s->sfb_offsets[i][band - 1] < subframe_len; x++) {
|
||||||
int offset = (subframe_len * 2 * critical_freq[x])
|
int offset = (subframe_len * 2 * critical_freq[x])
|
||||||
/ s->avctx->sample_rate + 2;
|
/ s->avctx->sample_rate + 2;
|
||||||
offset &= ~3;
|
offset &= ~3;
|
||||||
if ( offset > s->sfb_offsets[i][band - 1] )
|
if (offset > s->sfb_offsets[i][band - 1])
|
||||||
s->sfb_offsets[i][band++] = offset;
|
s->sfb_offsets[i][band++] = offset;
|
||||||
}
|
}
|
||||||
s->sfb_offsets[i][band - 1] = subframe_len;
|
s->sfb_offsets[i][band - 1] = subframe_len;
|
||||||
@ -403,7 +403,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
|||||||
for (b = 0; b < s->num_sfb[i]; b++) {
|
for (b = 0; b < s->num_sfb[i]; b++) {
|
||||||
int x;
|
int x;
|
||||||
int offset = ((s->sfb_offsets[i][b]
|
int offset = ((s->sfb_offsets[i][b]
|
||||||
+ s->sfb_offsets[i][b + 1] - 1)<<i) >> 1;
|
+ s->sfb_offsets[i][b + 1] - 1) << i) >> 1;
|
||||||
for (x = 0; x < num_possible_block_sizes; x++) {
|
for (x = 0; x < num_possible_block_sizes; x++) {
|
||||||
int v = 0;
|
int v = 0;
|
||||||
while (s->sfb_offsets[x][v + 1] << x < offset)
|
while (s->sfb_offsets[x][v + 1] << x < offset)
|
||||||
@ -416,7 +416,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
|||||||
/** init MDCT, FIXME: only init needed sizes */
|
/** init MDCT, FIXME: only init needed sizes */
|
||||||
for (i = 0; i < WMAPRO_BLOCK_SIZES; i++)
|
for (i = 0; i < WMAPRO_BLOCK_SIZES; i++)
|
||||||
ff_mdct_init(&s->mdct_ctx[i], BLOCK_MIN_BITS+1+i, 1,
|
ff_mdct_init(&s->mdct_ctx[i], BLOCK_MIN_BITS+1+i, 1,
|
||||||
1.0 / (1 <<(BLOCK_MIN_BITS + i - 1))
|
1.0 / (1 << (BLOCK_MIN_BITS + i - 1))
|
||||||
/ (1 << (s->bits_per_sample - 1)));
|
/ (1 << (s->bits_per_sample - 1)));
|
||||||
|
|
||||||
/** init MDCT windows: simple sinus window */
|
/** init MDCT windows: simple sinus window */
|
||||||
@ -424,7 +424,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
|||||||
const int n = 1 << (WMAPRO_BLOCK_MAX_BITS - i);
|
const int n = 1 << (WMAPRO_BLOCK_MAX_BITS - i);
|
||||||
const int win_idx = WMAPRO_BLOCK_MAX_BITS - i - 7;
|
const int win_idx = WMAPRO_BLOCK_MAX_BITS - i - 7;
|
||||||
ff_sine_window_init(ff_sine_windows[win_idx], n);
|
ff_sine_window_init(ff_sine_windows[win_idx], n);
|
||||||
s->windows[WMAPRO_BLOCK_SIZES-i-1] = ff_sine_windows[win_idx];
|
s->windows[WMAPRO_BLOCK_SIZES - i - 1] = ff_sine_windows[win_idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** calculate subwoofer cutoff values */
|
/** calculate subwoofer cutoff values */
|
||||||
@ -471,8 +471,8 @@ static int decode_subframe_length(WMAProDecodeCtx *s, int offset)
|
|||||||
subframe_len = s->samples_per_frame >> frame_len_shift;
|
subframe_len = s->samples_per_frame >> frame_len_shift;
|
||||||
|
|
||||||
/** sanity check the length */
|
/** sanity check the length */
|
||||||
if (subframe_len < s->min_samples_per_subframe
|
if (subframe_len < s->min_samples_per_subframe ||
|
||||||
|| subframe_len > s->samples_per_frame) {
|
subframe_len > s->samples_per_frame) {
|
||||||
av_log(s->avctx, AV_LOG_ERROR, "broken frame: subframe_len %i\n",
|
av_log(s->avctx, AV_LOG_ERROR, "broken frame: subframe_len %i\n",
|
||||||
subframe_len);
|
subframe_len);
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
@ -559,11 +559,11 @@ static int decode_tilehdr(WMAProDecodeCtx *s)
|
|||||||
num_samples[c] += subframe_len;
|
num_samples[c] += subframe_len;
|
||||||
++chan->num_subframes;
|
++chan->num_subframes;
|
||||||
if (num_samples[c] > s->samples_per_frame) {
|
if (num_samples[c] > s->samples_per_frame) {
|
||||||
av_log(s->avctx, AV_LOG_ERROR,"broken frame: "
|
av_log(s->avctx, AV_LOG_ERROR, "broken frame: "
|
||||||
"channel len > samples_per_frame\n");
|
"channel len > samples_per_frame\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
} else if(num_samples[c] <= min_channel_len) {
|
} else if (num_samples[c] <= min_channel_len) {
|
||||||
if (num_samples[c] < min_channel_len) {
|
if (num_samples[c] < min_channel_len) {
|
||||||
channels_for_cur_subframe = 0;
|
channels_for_cur_subframe = 0;
|
||||||
min_channel_len = num_samples[c];
|
min_channel_len = num_samples[c];
|
||||||
@ -578,7 +578,8 @@ static int decode_tilehdr(WMAProDecodeCtx *s)
|
|||||||
int offset = 0;
|
int offset = 0;
|
||||||
for (i = 0; i < s->channel[c].num_subframes; i++) {
|
for (i = 0; i < s->channel[c].num_subframes; i++) {
|
||||||
dprintf(s->avctx, "frame[%i] channel[%i] subframe[%i]"
|
dprintf(s->avctx, "frame[%i] channel[%i] subframe[%i]"
|
||||||
" len %i\n", s->frame_num, c, i, s->channel[c].subframe_len[i]);
|
" len %i\n", s->frame_num, c, i,
|
||||||
|
s->channel[c].subframe_len[i]);
|
||||||
s->channel[c].subframe_offset[i] = offset;
|
s->channel[c].subframe_offset[i] = offset;
|
||||||
offset += s->channel[c].subframe_len[i];
|
offset += s->channel[c].subframe_len[i];
|
||||||
}
|
}
|
||||||
@ -606,7 +607,7 @@ static void decode_decorrelation_matrix(WMAProDecodeCtx *s,
|
|||||||
|
|
||||||
for (i = 0; i < chgroup->num_channels; i++)
|
for (i = 0; i < chgroup->num_channels; i++)
|
||||||
chgroup->decorrelation_matrix[chgroup->num_channels * i + i] =
|
chgroup->decorrelation_matrix[chgroup->num_channels * i + i] =
|
||||||
get_bits1(&s->gb) ? 1.0 : -1.0;
|
get_bits1(&s->gb) ? 1.0 : -1.0;
|
||||||
|
|
||||||
for (i = 1; i < chgroup->num_channels; i++) {
|
for (i = 1; i < chgroup->num_channels; i++) {
|
||||||
int x;
|
int x;
|
||||||
@ -621,10 +622,10 @@ static void decode_decorrelation_matrix(WMAProDecodeCtx *s,
|
|||||||
|
|
||||||
if (n < 32) {
|
if (n < 32) {
|
||||||
sinv = sin64[n];
|
sinv = sin64[n];
|
||||||
cosv = sin64[32-n];
|
cosv = sin64[32 - n];
|
||||||
} else {
|
} else {
|
||||||
sinv = sin64[64-n];
|
sinv = sin64[64 - n];
|
||||||
cosv = -sin64[n-32];
|
cosv = -sin64[n - 32];
|
||||||
}
|
}
|
||||||
|
|
||||||
chgroup->decorrelation_matrix[y + x * chgroup->num_channels] =
|
chgroup->decorrelation_matrix[y + x * chgroup->num_channels] =
|
||||||
@ -646,7 +647,7 @@ static int decode_channel_transform(WMAProDecodeCtx* s)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
/* should never consume more than 1921 bits for the 8 channel case
|
/* should never consume more than 1921 bits for the 8 channel case
|
||||||
* 1 + MAX_CHANNELS * ( MAX_CHANNELS + 2 + 3 * MAX_CHANNELS * MAX_CHANNELS
|
* 1 + MAX_CHANNELS * (MAX_CHANNELS + 2 + 3 * MAX_CHANNELS * MAX_CHANNELS
|
||||||
* + MAX_CHANNELS + MAX_BANDS + 1)
|
* + MAX_CHANNELS + MAX_BANDS + 1)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -662,7 +663,7 @@ static int decode_channel_transform(WMAProDecodeCtx* s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (s->num_chgroups = 0; remaining_channels &&
|
for (s->num_chgroups = 0; remaining_channels &&
|
||||||
s->num_chgroups < s->channels_for_cur_subframe; s->num_chgroups++) {
|
s->num_chgroups < s->channels_for_cur_subframe; s->num_chgroups++) {
|
||||||
WMAProChannelGrp* chgroup = &s->chgroup[s->num_chgroups];
|
WMAProChannelGrp* chgroup = &s->chgroup[s->num_chgroups];
|
||||||
float** channel_data = chgroup->channel_data;
|
float** channel_data = chgroup->channel_data;
|
||||||
chgroup->num_channels = 0;
|
chgroup->num_channels = 0;
|
||||||
@ -694,7 +695,7 @@ static int decode_channel_transform(WMAProDecodeCtx* s)
|
|||||||
if (get_bits1(&s->gb)) {
|
if (get_bits1(&s->gb)) {
|
||||||
if (get_bits1(&s->gb)) {
|
if (get_bits1(&s->gb)) {
|
||||||
av_log_ask_for_sample(s->avctx,
|
av_log_ask_for_sample(s->avctx,
|
||||||
"unsupported channel transform type\n");
|
"unsupported channel transform type\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
chgroup->transform = 1;
|
chgroup->transform = 1;
|
||||||
@ -720,12 +721,12 @@ static int decode_channel_transform(WMAProDecodeCtx* s)
|
|||||||
/** FIXME: more than 6 coupled channels not supported */
|
/** FIXME: more than 6 coupled channels not supported */
|
||||||
if (chgroup->num_channels > 6) {
|
if (chgroup->num_channels > 6) {
|
||||||
av_log_ask_for_sample(s->avctx,
|
av_log_ask_for_sample(s->avctx,
|
||||||
"coupled channels > 6\n");
|
"coupled channels > 6\n");
|
||||||
} else {
|
} else {
|
||||||
memcpy(chgroup->decorrelation_matrix,
|
memcpy(chgroup->decorrelation_matrix,
|
||||||
default_decorrelation[chgroup->num_channels],
|
default_decorrelation[chgroup->num_channels],
|
||||||
chgroup->num_channels * chgroup->num_channels *
|
chgroup->num_channels * chgroup->num_channels *
|
||||||
sizeof(*chgroup->decorrelation_matrix));
|
sizeof(*chgroup->decorrelation_matrix));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -804,23 +805,23 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
vals[0] = symbol_to_vec4[idx] >> 12;
|
vals[0] = symbol_to_vec4[idx] >> 12;
|
||||||
vals[1] = (symbol_to_vec4[idx] >> 8) & 0xF;
|
vals[1] = (symbol_to_vec4[idx] >> 8) & 0xF;
|
||||||
vals[2] = (symbol_to_vec4[idx] >> 4) & 0xF;
|
vals[2] = (symbol_to_vec4[idx] >> 4) & 0xF;
|
||||||
vals[3] = symbol_to_vec4[idx] & 0xF;
|
vals[3] = symbol_to_vec4[idx] & 0xF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** decode sign */
|
/** decode sign */
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
if (vals[i]) {
|
if (vals[i]) {
|
||||||
int sign = get_bits1(&s->gb) - 1;
|
int sign = get_bits1(&s->gb) - 1;
|
||||||
ci->coeffs[cur_coeff] = (vals[i]^sign) - sign;
|
ci->coeffs[cur_coeff] = (vals[i] ^ sign) - sign;
|
||||||
num_zeros = 0;
|
num_zeros = 0;
|
||||||
} else {
|
} else {
|
||||||
ci->coeffs[cur_coeff] = 0;
|
ci->coeffs[cur_coeff] = 0;
|
||||||
/** switch to run level mode when subframe_len / 128 zeros
|
/** switch to run level mode when subframe_len / 128 zeros
|
||||||
were found in a row */
|
were found in a row */
|
||||||
rl_mode |= (++num_zeros > s->subframe_len>>8);
|
rl_mode |= (++num_zeros > s->subframe_len >> 8);
|
||||||
}
|
}
|
||||||
++cur_coeff;
|
++cur_coeff;
|
||||||
}
|
}
|
||||||
@ -893,7 +894,7 @@ static int decode_scale_factors(WMAProDecodeCtx* s)
|
|||||||
|
|
||||||
idx = get_vlc2(&s->gb, sf_rl_vlc.table, VLCBITS, SCALERLMAXDEPTH);
|
idx = get_vlc2(&s->gb, sf_rl_vlc.table, VLCBITS, SCALERLMAXDEPTH);
|
||||||
|
|
||||||
if ( !idx ) {
|
if (!idx) {
|
||||||
uint32_t code = get_bits(&s->gb, 14);
|
uint32_t code = get_bits(&s->gb, 14);
|
||||||
val = code >> 6;
|
val = code >> 6;
|
||||||
sign = (code & 1) - 1;
|
sign = (code & 1) - 1;
|
||||||
@ -908,7 +909,7 @@ static int decode_scale_factors(WMAProDecodeCtx* s)
|
|||||||
|
|
||||||
i += skip;
|
i += skip;
|
||||||
if (i >= s->num_bands) {
|
if (i >= s->num_bands) {
|
||||||
av_log(s->avctx,AV_LOG_ERROR,
|
av_log(s->avctx, AV_LOG_ERROR,
|
||||||
"invalid scale factor coding\n");
|
"invalid scale factor coding\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
@ -955,7 +956,7 @@ static void inverse_channel_transform(WMAProDecodeCtx *s)
|
|||||||
|
|
||||||
/** multichannel decorrelation */
|
/** multichannel decorrelation */
|
||||||
for (sfb = s->cur_sfb_offsets;
|
for (sfb = s->cur_sfb_offsets;
|
||||||
sfb < s->cur_sfb_offsets + s->num_bands;sfb++) {
|
sfb < s->cur_sfb_offsets + s->num_bands; sfb++) {
|
||||||
int y;
|
int y;
|
||||||
if (*tb++ == 1) {
|
if (*tb++ == 1) {
|
||||||
/** multiply values with the decorrelation_matrix */
|
/** multiply values with the decorrelation_matrix */
|
||||||
@ -966,7 +967,7 @@ static void inverse_channel_transform(WMAProDecodeCtx *s)
|
|||||||
float** ch;
|
float** ch;
|
||||||
|
|
||||||
for (ch = ch_data; ch < ch_end; ch++)
|
for (ch = ch_data; ch < ch_end; ch++)
|
||||||
*data_ptr++ = (*ch)[y];
|
*data_ptr++ = (*ch)[y];
|
||||||
|
|
||||||
for (ch = ch_data; ch < ch_end; ch++) {
|
for (ch = ch_data; ch < ch_end; ch++) {
|
||||||
float sum = 0;
|
float sum = 0;
|
||||||
@ -995,18 +996,18 @@ static void inverse_channel_transform(WMAProDecodeCtx *s)
|
|||||||
static void wmapro_window(WMAProDecodeCtx *s)
|
static void wmapro_window(WMAProDecodeCtx *s)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i< s->channels_for_cur_subframe; i++) {
|
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
||||||
int c = s->channel_indexes_for_cur_subframe[i];
|
int c = s->channel_indexes_for_cur_subframe[i];
|
||||||
float* window;
|
float* window;
|
||||||
int winlen = s->channel[c].prev_block_len;
|
int winlen = s->channel[c].prev_block_len;
|
||||||
float* start = s->channel[c].coeffs - (winlen >> 1);
|
float* start = s->channel[c].coeffs - (winlen >> 1);
|
||||||
|
|
||||||
if (s->subframe_len < winlen) {
|
if (s->subframe_len < winlen) {
|
||||||
start += (winlen - s->subframe_len)>>1;
|
start += (winlen - s->subframe_len) >> 1;
|
||||||
winlen = s->subframe_len;
|
winlen = s->subframe_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
window = s->windows[av_log2(winlen)-BLOCK_MIN_BITS];
|
window = s->windows[av_log2(winlen) - BLOCK_MIN_BITS];
|
||||||
|
|
||||||
winlen >>= 1;
|
winlen >>= 1;
|
||||||
|
|
||||||
@ -1047,7 +1048,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dprintf(s->avctx,
|
dprintf(s->avctx,
|
||||||
"processing subframe with offset %i len %i\n", offset, subframe_len);
|
"processing subframe with offset %i len %i\n", offset, subframe_len);
|
||||||
|
|
||||||
/** get a list of all channels that contain the estimated block */
|
/** get a list of all channels that contain the estimated block */
|
||||||
s->channels_for_cur_subframe = 0;
|
s->channels_for_cur_subframe = 0;
|
||||||
@ -1058,7 +1059,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
|
|
||||||
/** and count if there are multiple subframes that match our profile */
|
/** and count if there are multiple subframes that match our profile */
|
||||||
if (offset == s->channel[i].decoded_samples &&
|
if (offset == s->channel[i].decoded_samples &&
|
||||||
subframe_len == s->channel[i].subframe_len[cur_subframe]) {
|
subframe_len == s->channel[i].subframe_len[cur_subframe]) {
|
||||||
total_samples -= s->channel[i].subframe_len[cur_subframe];
|
total_samples -= s->channel[i].subframe_len[cur_subframe];
|
||||||
s->channel[i].decoded_samples +=
|
s->channel[i].decoded_samples +=
|
||||||
s->channel[i].subframe_len[cur_subframe];
|
s->channel[i].subframe_len[cur_subframe];
|
||||||
@ -1074,7 +1075,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
|
|
||||||
|
|
||||||
dprintf(s->avctx, "subframe is part of %i channels\n",
|
dprintf(s->avctx, "subframe is part of %i channels\n",
|
||||||
s->channels_for_cur_subframe);
|
s->channels_for_cur_subframe);
|
||||||
|
|
||||||
/** calculate number of scale factor bands and their offsets */
|
/** calculate number of scale factor bands and their offsets */
|
||||||
s->table_idx = av_log2(s->samples_per_frame/subframe_len);
|
s->table_idx = av_log2(s->samples_per_frame/subframe_len);
|
||||||
@ -1086,7 +1087,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
||||||
int c = s->channel_indexes_for_cur_subframe[i];
|
int c = s->channel_indexes_for_cur_subframe[i];
|
||||||
|
|
||||||
s->channel[c].coeffs = &s->channel[c].out[(s->samples_per_frame>>1)
|
s->channel[c].coeffs = &s->channel[c].out[(s->samples_per_frame >> 1)
|
||||||
+ offset];
|
+ offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1103,7 +1104,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
|
|
||||||
if (num_fill_bits >= 0) {
|
if (num_fill_bits >= 0) {
|
||||||
if (get_bits_count(&s->gb) + num_fill_bits > s->num_saved_bits) {
|
if (get_bits_count(&s->gb) + num_fill_bits > s->num_saved_bits) {
|
||||||
av_log(s->avctx,AV_LOG_ERROR,"invalid number of fill bits\n");
|
av_log(s->avctx, AV_LOG_ERROR, "invalid number of fill bits\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1143,13 +1144,13 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
const int sign = (step == 31) - 1;
|
const int sign = (step == 31) - 1;
|
||||||
int quant = 0;
|
int quant = 0;
|
||||||
while (get_bits_count(&s->gb) + 5 < s->num_saved_bits &&
|
while (get_bits_count(&s->gb) + 5 < s->num_saved_bits &&
|
||||||
(step = get_bits(&s->gb, 5)) == 31 ) {
|
(step = get_bits(&s->gb, 5)) == 31) {
|
||||||
quant += 31;
|
quant += 31;
|
||||||
}
|
}
|
||||||
quant_step += ((quant + step) ^ sign) - sign;
|
quant_step += ((quant + step) ^ sign) - sign;
|
||||||
}
|
}
|
||||||
if (quant_step < 0) {
|
if (quant_step < 0) {
|
||||||
av_log(s->avctx,AV_LOG_DEBUG,"negative quant step\n");
|
av_log(s->avctx, AV_LOG_DEBUG, "negative quant step\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** decode quantization step modifiers for every channel */
|
/** decode quantization step modifiers for every channel */
|
||||||
@ -1163,8 +1164,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
s->channel[c].quant_step = quant_step;
|
s->channel[c].quant_step = quant_step;
|
||||||
if (get_bits1(&s->gb)) {
|
if (get_bits1(&s->gb)) {
|
||||||
if (modifier_len) {
|
if (modifier_len) {
|
||||||
s->channel[c].quant_step +=
|
s->channel[c].quant_step += get_bits(&s->gb, modifier_len) + 1;
|
||||||
get_bits(&s->gb, modifier_len) + 1;
|
|
||||||
} else
|
} else
|
||||||
++s->channel[c].quant_step;
|
++s->channel[c].quant_step;
|
||||||
}
|
}
|
||||||
@ -1177,21 +1177,21 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dprintf(s->avctx, "BITSTREAM: subframe header length was %i\n",
|
dprintf(s->avctx, "BITSTREAM: subframe header length was %i\n",
|
||||||
get_bits_count(&s->gb) - s->subframe_offset);
|
get_bits_count(&s->gb) - s->subframe_offset);
|
||||||
|
|
||||||
/** parse coefficients */
|
/** parse coefficients */
|
||||||
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
||||||
int c = s->channel_indexes_for_cur_subframe[i];
|
int c = s->channel_indexes_for_cur_subframe[i];
|
||||||
if (s->channel[c].transmit_coefs &&
|
if (s->channel[c].transmit_coefs &&
|
||||||
get_bits_count(&s->gb) < s->num_saved_bits) {
|
get_bits_count(&s->gb) < s->num_saved_bits) {
|
||||||
decode_coeffs(s, c);
|
decode_coeffs(s, c);
|
||||||
} else
|
} else
|
||||||
memset(s->channel[c].coeffs, 0,
|
memset(s->channel[c].coeffs, 0,
|
||||||
sizeof(*s->channel[c].coeffs) * subframe_len);
|
sizeof(*s->channel[c].coeffs) * subframe_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
dprintf(s->avctx, "BITSTREAM: subframe length was %i\n",
|
dprintf(s->avctx, "BITSTREAM: subframe length was %i\n",
|
||||||
get_bits_count(&s->gb) - s->subframe_offset);
|
get_bits_count(&s->gb) - s->subframe_offset);
|
||||||
|
|
||||||
if (transmit_coeffs) {
|
if (transmit_coeffs) {
|
||||||
/** reconstruct the per channel data */
|
/** reconstruct the per channel data */
|
||||||
@ -1219,7 +1219,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** apply imdct (ff_imdct_half == DCTIV with reverse) */
|
/** apply imdct (ff_imdct_half == DCTIV with reverse) */
|
||||||
ff_imdct_half(&s->mdct_ctx[av_log2(subframe_len)-BLOCK_MIN_BITS],
|
ff_imdct_half(&s->mdct_ctx[av_log2(subframe_len) - BLOCK_MIN_BITS],
|
||||||
s->channel[c].coeffs, s->tmp);
|
s->channel[c].coeffs, s->tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1231,7 +1231,7 @@ static int decode_subframe(WMAProDecodeCtx *s)
|
|||||||
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
for (i = 0; i < s->channels_for_cur_subframe; i++) {
|
||||||
int c = s->channel_indexes_for_cur_subframe[i];
|
int c = s->channel_indexes_for_cur_subframe[i];
|
||||||
if (s->channel[c].cur_subframe >= s->channel[c].num_subframes) {
|
if (s->channel[c].cur_subframe >= s->channel[c].num_subframes) {
|
||||||
av_log(s->avctx,AV_LOG_ERROR,"broken subframe\n");
|
av_log(s->avctx, AV_LOG_ERROR, "broken subframe\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
++s->channel[c].cur_subframe;
|
++s->channel[c].cur_subframe;
|
||||||
@ -1255,7 +1255,7 @@ static int decode_frame(WMAProDecodeCtx *s)
|
|||||||
|
|
||||||
/** check for potential output buffer overflow */
|
/** check for potential output buffer overflow */
|
||||||
if (s->num_channels * s->samples_per_frame > s->samples_end - s->samples) {
|
if (s->num_channels * s->samples_per_frame > s->samples_end - s->samples) {
|
||||||
av_log(s->avctx,AV_LOG_ERROR,
|
av_log(s->avctx, AV_LOG_ERROR,
|
||||||
"not enough space for the output samples\n");
|
"not enough space for the output samples\n");
|
||||||
s->packet_loss = 1;
|
s->packet_loss = 1;
|
||||||
return 0;
|
return 0;
|
||||||
@ -1306,7 +1306,7 @@ static int decode_frame(WMAProDecodeCtx *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dprintf(s->avctx, "BITSTREAM: frame header length was %i\n",
|
dprintf(s->avctx, "BITSTREAM: frame header length was %i\n",
|
||||||
get_bits_count(gb) - s->frame_offset);
|
get_bits_count(gb) - s->frame_offset);
|
||||||
|
|
||||||
/** reset subframe states */
|
/** reset subframe states */
|
||||||
s->parsed_all_subframes = 0;
|
s->parsed_all_subframes = 0;
|
||||||
@ -1351,7 +1351,7 @@ static int decode_frame(WMAProDecodeCtx *s)
|
|||||||
|
|
||||||
if (len != (get_bits_count(gb) - s->frame_offset) + 2) {
|
if (len != (get_bits_count(gb) - s->frame_offset) + 2) {
|
||||||
/** FIXME: not sure if this is always an error */
|
/** FIXME: not sure if this is always an error */
|
||||||
av_log(s->avctx,AV_LOG_ERROR,"frame[%i] would have to skip %i bits\n",
|
av_log(s->avctx, AV_LOG_ERROR, "frame[%i] would have to skip %i bits\n",
|
||||||
s->frame_num, len - (get_bits_count(gb) - s->frame_offset) - 1);
|
s->frame_num, len - (get_bits_count(gb) - s->frame_offset) - 1);
|
||||||
s->packet_loss = 1;
|
s->packet_loss = 1;
|
||||||
return 0;
|
return 0;
|
||||||
@ -1373,7 +1373,7 @@ static int decode_frame(WMAProDecodeCtx *s)
|
|||||||
*@param gb bitstream reader context
|
*@param gb bitstream reader context
|
||||||
*@return remaining size in bits
|
*@return remaining size in bits
|
||||||
*/
|
*/
|
||||||
static int remaining_bits(WMAProDecodeCtx *s, GetBitContext* gb)
|
static int remaining_bits(WMAProDecodeCtx *s, GetBitContext *gb)
|
||||||
{
|
{
|
||||||
return s->buf_bit_size - get_bits_count(gb);
|
return s->buf_bit_size - get_bits_count(gb);
|
||||||
}
|
}
|
||||||
@ -1386,7 +1386,7 @@ static int remaining_bits(WMAProDecodeCtx *s, GetBitContext* gb)
|
|||||||
*@param append decides wether to reset the buffer or not
|
*@param append decides wether to reset the buffer or not
|
||||||
*/
|
*/
|
||||||
static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
|
static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
|
||||||
int append)
|
int append)
|
||||||
{
|
{
|
||||||
int buflen;
|
int buflen;
|
||||||
|
|
||||||
@ -1403,14 +1403,15 @@ static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
|
|||||||
buflen = (s->num_saved_bits + len + 8) >> 3;
|
buflen = (s->num_saved_bits + len + 8) >> 3;
|
||||||
|
|
||||||
if (len <= 0 || buflen > MAX_FRAMESIZE) {
|
if (len <= 0 || buflen > MAX_FRAMESIZE) {
|
||||||
av_log_ask_for_sample(s->avctx, "input buffer too small\n");
|
av_log_ask_for_sample(s->avctx, "input buffer too small\n");
|
||||||
s->packet_loss = 1;
|
s->packet_loss = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->num_saved_bits += len;
|
s->num_saved_bits += len;
|
||||||
if (!append) {
|
if (!append) {
|
||||||
ff_copy_bits(&s->pb, gb->buffer + (get_bits_count(gb) >> 3), s->num_saved_bits);
|
ff_copy_bits(&s->pb, gb->buffer + (get_bits_count(gb) >> 3),
|
||||||
|
s->num_saved_bits);
|
||||||
} else {
|
} else {
|
||||||
int align = 8 - (get_bits_count(gb) & 7);
|
int align = 8 - (get_bits_count(gb) & 7);
|
||||||
align = FFMIN(align, len);
|
align = FFMIN(align, len);
|
||||||
@ -1421,8 +1422,8 @@ static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
|
|||||||
skip_bits_long(gb, len);
|
skip_bits_long(gb, len);
|
||||||
|
|
||||||
{
|
{
|
||||||
PutBitContext tmp = s->pb;
|
PutBitContext tmp = s->pb;
|
||||||
flush_put_bits(&tmp);
|
flush_put_bits(&tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
init_get_bits(&s->gb, s->frame_data, s->num_saved_bits);
|
init_get_bits(&s->gb, s->frame_data, s->num_saved_bits);
|
||||||
@ -1438,7 +1439,7 @@ static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
|
|||||||
*@return number of bytes that were read from the input buffer
|
*@return number of bytes that were read from the input buffer
|
||||||
*/
|
*/
|
||||||
static int decode_packet(AVCodecContext *avctx,
|
static int decode_packet(AVCodecContext *avctx,
|
||||||
void *data, int *data_size, AVPacket* avpkt)
|
void *data, int *data_size, AVPacket* avpkt)
|
||||||
{
|
{
|
||||||
GetBitContext gb;
|
GetBitContext gb;
|
||||||
WMAProDecodeCtx *s = avctx->priv_data;
|
WMAProDecodeCtx *s = avctx->priv_data;
|
||||||
@ -1469,14 +1470,14 @@ static int decode_packet(AVCodecContext *avctx,
|
|||||||
/** get number of bits that need to be added to the previous frame */
|
/** get number of bits that need to be added to the previous frame */
|
||||||
num_bits_prev_frame = get_bits(&gb, s->log2_frame_size);
|
num_bits_prev_frame = get_bits(&gb, s->log2_frame_size);
|
||||||
dprintf(avctx, "packet[%d]: nbpf %x\n", avctx->frame_number,
|
dprintf(avctx, "packet[%d]: nbpf %x\n", avctx->frame_number,
|
||||||
num_bits_prev_frame);
|
num_bits_prev_frame);
|
||||||
|
|
||||||
/** check for packet loss */
|
/** check for packet loss */
|
||||||
if (!s->packet_loss &&
|
if (!s->packet_loss &&
|
||||||
((s->packet_sequence_number + 1)&0xF) != packet_sequence_number) {
|
((s->packet_sequence_number + 1) & 0xF) != packet_sequence_number) {
|
||||||
s->packet_loss = 1;
|
s->packet_loss = 1;
|
||||||
av_log(avctx, AV_LOG_ERROR, "Packet loss detected! seq %x vs %x\n",
|
av_log(avctx, AV_LOG_ERROR, "Packet loss detected! seq %x vs %x\n",
|
||||||
s->packet_sequence_number, packet_sequence_number);
|
s->packet_sequence_number, packet_sequence_number);
|
||||||
}
|
}
|
||||||
s->packet_sequence_number = packet_sequence_number;
|
s->packet_sequence_number = packet_sequence_number;
|
||||||
|
|
||||||
@ -1485,24 +1486,24 @@ static int decode_packet(AVCodecContext *avctx,
|
|||||||
previous packet to create a full frame */
|
previous packet to create a full frame */
|
||||||
save_bits(s, &gb, num_bits_prev_frame, 1);
|
save_bits(s, &gb, num_bits_prev_frame, 1);
|
||||||
dprintf(avctx, "accumulated %x bits of frame data\n",
|
dprintf(avctx, "accumulated %x bits of frame data\n",
|
||||||
s->num_saved_bits - s->frame_offset);
|
s->num_saved_bits - s->frame_offset);
|
||||||
|
|
||||||
/** decode the cross packet frame if it is valid */
|
/** decode the cross packet frame if it is valid */
|
||||||
if (!s->packet_loss)
|
if (!s->packet_loss)
|
||||||
decode_frame(s);
|
decode_frame(s);
|
||||||
} else if (s->num_saved_bits - s->frame_offset) {
|
} else if (s->num_saved_bits - s->frame_offset) {
|
||||||
dprintf(avctx, "ignoring %x previously saved bits\n",
|
dprintf(avctx, "ignoring %x previously saved bits\n",
|
||||||
s->num_saved_bits - s->frame_offset);
|
s->num_saved_bits - s->frame_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
s->packet_loss = 0;
|
s->packet_loss = 0;
|
||||||
/** decode the rest of the packet */
|
/** decode the rest of the packet */
|
||||||
while (!s->packet_loss && more_frames &&
|
while (!s->packet_loss && more_frames &&
|
||||||
remaining_bits(s, &gb) > s->log2_frame_size) {
|
remaining_bits(s, &gb) > s->log2_frame_size) {
|
||||||
int frame_size = show_bits(&gb, s->log2_frame_size);
|
int frame_size = show_bits(&gb, s->log2_frame_size);
|
||||||
|
|
||||||
/** there is enough data for a full frame */
|
/** there is enough data for a full frame */
|
||||||
if (remaining_bits(s,&gb) >= frame_size && frame_size > 0) {
|
if (remaining_bits(s, &gb) >= frame_size && frame_size > 0) {
|
||||||
save_bits(s, &gb, frame_size, 0);
|
save_bits(s, &gb, frame_size, 0);
|
||||||
|
|
||||||
/** decode the frame */
|
/** decode the frame */
|
||||||
@ -1515,10 +1516,10 @@ static int decode_packet(AVCodecContext *avctx,
|
|||||||
more_frames = 0;
|
more_frames = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s->packet_loss && remaining_bits(s,&gb) > 0) {
|
if (!s->packet_loss && remaining_bits(s, &gb) > 0) {
|
||||||
/** save the rest of the data so that it can be decoded
|
/** save the rest of the data so that it can be decoded
|
||||||
with the next packet */
|
with the next packet */
|
||||||
save_bits(s, &gb, remaining_bits(s,&gb), 0);
|
save_bits(s, &gb, remaining_bits(s, &gb), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
*data_size = (int8_t *)s->samples - (int8_t *)data;
|
*data_size = (int8_t *)s->samples - (int8_t *)data;
|
||||||
|
Loading…
Reference in New Issue
Block a user