Search
j0ke.net Open Build Service
>
Projects
>
multimedia
>
ffmpeg
> ffmpeg_fix_wmadecoding.diff
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File ffmpeg_fix_wmadecoding.diff of Package ffmpeg (Revision 41)
Currently displaying revision
41
,
show latest
--- libavcodec/wmadec.c.orig 2008-07-21 12:24:00.000000000 +0200 +++ libavcodec/wmadec.c 2008-06-15 21:30:33.000000000 +0200 @@ -401,14 +401,13 @@ s->channel_coded[ch] = a; v |= a; } - - bsize = s->frame_len_bits - s->block_len_bits; - /* if no channel coded, no need to go further */ /* XXX: fix potential framing problems */ if (!v) goto next; + bsize = s->frame_len_bits - s->block_len_bits; + /* read total gain and extract corresponding number of bits for coef escape coding */ total_gain = 1; @@ -680,29 +679,27 @@ } } -next: for(ch = 0; ch < s->nb_channels; ch++) { - int n4, index, n; + if (s->channel_coded[ch]) { + int n4, index, n; - n = s->block_len; - n4 = s->block_len / 2; - if(s->channel_coded[ch]){ + n = s->block_len; + n4 = s->block_len / 2; s->mdct_ctx[bsize].fft.imdct_calc(&s->mdct_ctx[bsize], - s->output, s->coefs[ch], s->mdct_tmp); - }else - memset(s->output, 0, sizeof(s->output)); - - /* multiply by the window and add in the frame */ - index = (s->frame_len / 2) + s->block_pos - n4; - wma_window(s, &s->frame_out[ch][index]); - - /* specific fast case for ms-stereo : add to second - channel if it is not coded */ - if (s->ms_stereo && !s->channel_coded[1]) { - wma_window(s, &s->frame_out[1][index]); + s->output, s->coefs[ch], s->mdct_tmp); + + /* multiply by the window and add in the frame */ + index = (s->frame_len / 2) + s->block_pos - n4; + wma_window(s, &s->frame_out[ch][index]); + + /* specific fast case for ms-stereo : add to second + channel if it is not coded */ + if (s->ms_stereo && !s->channel_coded[1]) { + wma_window(s, &s->frame_out[1][index]); + } } } - + next: /* update block number */ s->block_num++; s->block_pos += s->block_len; @@ -784,11 +781,6 @@ skip_bits(&s->gb, 4); /* super frame index */ nb_frames = get_bits(&s->gb, 4) - 1; - if((nb_frames+1) * s->nb_channels * s->frame_len * sizeof(int16_t) > *data_size){ - av_log(s->avctx, AV_LOG_ERROR, "Insufficient output space\n"); - goto fail; - } - bit_offset = get_bits(&s->gb, s->byte_offset_bits + 3); if (s->last_superframe_len > 0) { @@ -844,10 +836,6 @@ s->last_superframe_len = len; memcpy(s->last_superframe, buf + pos, len); } else { - if(s->nb_channels * s->frame_len * sizeof(int16_t) > *data_size){ - av_log(s->avctx, AV_LOG_ERROR, "Insufficient output space\n"); - goto fail; - } /* single frame decode */ if (wma_decode_frame(s, samples) < 0) goto fail;