|
|
|
@ -608,13 +608,6 @@ static int vorbis_parse_setup_hdr_floors(vorbis_context *vc) |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
floor_setup->data.t0.amplitude_bits = get_bits(gb, 6); |
|
|
|
|
/* zero would result in a div by zero later *
|
|
|
|
|
* 2^0 - 1 == 0 */ |
|
|
|
|
if (!floor_setup->data.t0.amplitude_bits) { |
|
|
|
|
av_log(vc->avccontext, AV_LOG_ERROR, |
|
|
|
|
"Floor 0 amplitude bits is 0.\n"); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
floor_setup->data.t0.amplitude_offset = get_bits(gb, 8); |
|
|
|
|
floor_setup->data.t0.num_books = get_bits(gb, 4) + 1; |
|
|
|
|
|
|
|
|
@ -1065,6 +1058,9 @@ static int vorbis_floor0_decode(vorbis_context *vc, |
|
|
|
|
unsigned amplitude, book_idx; |
|
|
|
|
unsigned blockflag = vc->modes[vc->mode_number].blockflag; |
|
|
|
|
|
|
|
|
|
if (!vf->amplitude_bits) |
|
|
|
|
return 1; |
|
|
|
|
|
|
|
|
|
amplitude = get_bits(&vc->gb, vf->amplitude_bits); |
|
|
|
|
if (amplitude > 0) { |
|
|
|
|
float last = 0; |
|
|
|
|