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 42)
Currently displaying revision
42
,
show latest
--- libavcodec/wmadec.c.orig 2008-08-12 21:38:07.000000000 +0200 +++ libavcodec/wmadec.c 2008-08-15 16:56:01.000000000 +0200 @@ -403,13 +403,13 @@ 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; @@ -681,28 +681,27 @@ } } -next: for(ch = 0; ch < s->nb_channels; ch++) { - int n4, index, n; - n = s->block_len; - n4 = s->block_len / 2; if(s->channel_coded[ch]){ + int n4, index, n; + n = s->block_len; + n4 = s->block_len / 2; ff_imdct_calc(&s->mdct_ctx[bsize], s->output, s->coefs[ch]); - }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]); + /* 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 +783,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 +838,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;