]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/wmadec.c
avcodec/mjpegenc: Fix segfault when freeing incomplete context
[ffmpeg] / libavcodec / wmadec.c
index 2b9499eba7b136ab354d699b61d51efaa3028b24..9c79556bb5ae00c044977aae744e2981add3ee1e 100644 (file)
@@ -112,7 +112,7 @@ static av_cold int wma_decode_init(AVCodecContext *avctx)
     if (s->use_noise_coding) {
         ff_init_vlc_from_lengths(&s->hgain_vlc, HGAINVLCBITS, FF_ARRAY_ELEMS(ff_wma_hgain_hufftab),
                                  &ff_wma_hgain_hufftab[0][1], 2,
-                                 &ff_wma_hgain_hufftab[0][0], 2, 1, 0, 0, avctx);
+                                 &ff_wma_hgain_hufftab[0][0], 2, 1, -18, 0, avctx);
     }
 
     if (s->use_exp_vlc)
@@ -545,7 +545,7 @@ static int wma_decode_block(WMACodecContext *s)
         }
         for (ch = 0; ch < s->avctx->channels; ch++) {
             if (s->channel_coded[ch]) {
-                int i, n, val, code;
+                int i, n, val;
 
                 n   = s->exponent_high_sizes[bsize];
                 val = (int) 0x80000000;
@@ -554,9 +554,8 @@ static int wma_decode_block(WMACodecContext *s)
                         if (val == (int) 0x80000000) {
                             val = get_bits(&s->gb, 7) - 19;
                         } else {
-                            code = get_vlc2(&s->gb, s->hgain_vlc.table,
+                            val += get_vlc2(&s->gb, s->hgain_vlc.table,
                                             HGAINVLCBITS, HGAINMAX);
-                            val += code - 18;
                         }
                         s->high_band_values[ch][i] = val;
                     }