aacdec: remove checks for impossible error conditions
Originally committed as revision 24097 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
96088566ee
commit
38b0410902
@ -995,7 +995,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
const int c = 1024 / ics->num_windows;
|
const int c = 1024 / ics->num_windows;
|
||||||
const uint16_t *offsets = ics->swb_offset;
|
const uint16_t *offsets = ics->swb_offset;
|
||||||
float *coef_base = coef;
|
float *coef_base = coef;
|
||||||
int err_idx;
|
|
||||||
|
|
||||||
for (g = 0; g < ics->num_windows; g++)
|
for (g = 0; g < ics->num_windows; g++)
|
||||||
memset(coef + g * 128 + offsets[ics->max_sfb], 0, sizeof(float) * (c - offsets[ics->max_sfb]));
|
memset(coef + g * 128 + offsets[ics->max_sfb], 0, sizeof(float) * (c - offsets[ics->max_sfb]));
|
||||||
@ -1031,7 +1030,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
const float *vq = ff_aac_codebook_vector_vals[cbt_m1];
|
const float *vq = ff_aac_codebook_vector_vals[cbt_m1];
|
||||||
const uint16_t *cb_vector_idx = ff_aac_codebook_vector_idx[cbt_m1];
|
const uint16_t *cb_vector_idx = ff_aac_codebook_vector_idx[cbt_m1];
|
||||||
VLC_TYPE (*vlc_tab)[2] = vlc_spectral[cbt_m1].table;
|
VLC_TYPE (*vlc_tab)[2] = vlc_spectral[cbt_m1].table;
|
||||||
const int cb_size = ff_aac_spectral_sizes[cbt_m1];
|
|
||||||
OPEN_READER(re, gb);
|
OPEN_READER(re, gb);
|
||||||
|
|
||||||
switch (cbt_m1 >> 1) {
|
switch (cbt_m1 >> 1) {
|
||||||
@ -1046,12 +1044,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
|
|
||||||
UPDATE_CACHE(re, gb);
|
UPDATE_CACHE(re, gb);
|
||||||
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
||||||
|
|
||||||
if (code >= cb_size) {
|
|
||||||
err_idx = code;
|
|
||||||
goto err_cb_overflow;
|
|
||||||
}
|
|
||||||
|
|
||||||
cb_idx = cb_vector_idx[code];
|
cb_idx = cb_vector_idx[code];
|
||||||
cf = VMUL4(cf, vq, cb_idx, sf + idx);
|
cf = VMUL4(cf, vq, cb_idx, sf + idx);
|
||||||
} while (len -= 4);
|
} while (len -= 4);
|
||||||
@ -1071,12 +1063,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
|
|
||||||
UPDATE_CACHE(re, gb);
|
UPDATE_CACHE(re, gb);
|
||||||
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
||||||
|
|
||||||
if (code >= cb_size) {
|
|
||||||
err_idx = code;
|
|
||||||
goto err_cb_overflow;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if MIN_CACHE_BITS < 20
|
#if MIN_CACHE_BITS < 20
|
||||||
UPDATE_CACHE(re, gb);
|
UPDATE_CACHE(re, gb);
|
||||||
#endif
|
#endif
|
||||||
@ -1100,12 +1086,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
|
|
||||||
UPDATE_CACHE(re, gb);
|
UPDATE_CACHE(re, gb);
|
||||||
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
||||||
|
|
||||||
if (code >= cb_size) {
|
|
||||||
err_idx = code;
|
|
||||||
goto err_cb_overflow;
|
|
||||||
}
|
|
||||||
|
|
||||||
cb_idx = cb_vector_idx[code];
|
cb_idx = cb_vector_idx[code];
|
||||||
cf = VMUL2(cf, vq, cb_idx, sf + idx);
|
cf = VMUL2(cf, vq, cb_idx, sf + idx);
|
||||||
} while (len -= 2);
|
} while (len -= 2);
|
||||||
@ -1126,12 +1106,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
|
|
||||||
UPDATE_CACHE(re, gb);
|
UPDATE_CACHE(re, gb);
|
||||||
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
GET_VLC(code, re, gb, vlc_tab, 8, 2);
|
||||||
|
|
||||||
if (code >= cb_size) {
|
|
||||||
err_idx = code;
|
|
||||||
goto err_cb_overflow;
|
|
||||||
}
|
|
||||||
|
|
||||||
cb_idx = cb_vector_idx[code];
|
cb_idx = cb_vector_idx[code];
|
||||||
nnz = cb_idx >> 8 & 15;
|
nnz = cb_idx >> 8 & 15;
|
||||||
sign = SHOW_UBITS(re, gb, nnz) << (cb_idx >> 12);
|
sign = SHOW_UBITS(re, gb, nnz) << (cb_idx >> 12);
|
||||||
@ -1163,11 +1137,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code >= cb_size) {
|
|
||||||
err_idx = code;
|
|
||||||
goto err_cb_overflow;
|
|
||||||
}
|
|
||||||
|
|
||||||
cb_idx = cb_vector_idx[code];
|
cb_idx = cb_vector_idx[code];
|
||||||
nnz = cb_idx >> 12;
|
nnz = cb_idx >> 12;
|
||||||
nzt = cb_idx >> 8;
|
nzt = cb_idx >> 8;
|
||||||
@ -1236,12 +1205,6 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_cb_overflow:
|
|
||||||
av_log(ac->avctx, AV_LOG_ERROR,
|
|
||||||
"Read beyond end of ff_aac_codebook_vectors[%d][]. index %d >= %d\n",
|
|
||||||
band_type[idx], err_idx, ff_aac_spectral_sizes[band_type[idx]]);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static av_always_inline float flt16_round(float pf)
|
static av_always_inline float flt16_round(float pf)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user