|
|
|
@ -532,8 +532,8 @@ static void build_sb_samples_from_noise(QDM2Context *q, int sb) |
|
|
|
|
* @param channels number of channels |
|
|
|
|
* @param coding_method q->coding_method[0][0][0] |
|
|
|
|
*/ |
|
|
|
|
static void fix_coding_method_array(int sb, int channels, |
|
|
|
|
sb_int8_array coding_method) |
|
|
|
|
static int fix_coding_method_array(int sb, int channels, |
|
|
|
|
sb_int8_array coding_method) |
|
|
|
|
{ |
|
|
|
|
int j, k; |
|
|
|
|
int ch; |
|
|
|
@ -541,6 +541,8 @@ static void fix_coding_method_array(int sb, int channels, |
|
|
|
|
|
|
|
|
|
for (ch = 0; ch < channels; ch++) { |
|
|
|
|
for (j = 0; j < 64; ) { |
|
|
|
|
if (coding_method[ch][sb][j] < 8) |
|
|
|
|
return -1; |
|
|
|
|
if ((coding_method[ch][sb][j] - 8) > 22) { |
|
|
|
|
run = 1; |
|
|
|
|
case_val = 8; |
|
|
|
@ -586,6 +588,7 @@ static void fix_coding_method_array(int sb, int channels, |
|
|
|
|
j += run; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -844,16 +847,16 @@ static int synthfilt_build_sb_samples(QDM2Context *q, GetBitContext *gb, |
|
|
|
|
for (j = 0; j < 16; j++) |
|
|
|
|
sign_bits[j] = get_bits1 (gb); |
|
|
|
|
|
|
|
|
|
if (q->coding_method[0][sb][0] <= 0) { |
|
|
|
|
av_log(NULL, AV_LOG_ERROR, "coding method invalid\n"); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (j = 0; j < 64; j++) |
|
|
|
|
if (q->coding_method[1][sb][j] > q->coding_method[0][sb][j]) |
|
|
|
|
q->coding_method[0][sb][j] = q->coding_method[1][sb][j]; |
|
|
|
|
|
|
|
|
|
fix_coding_method_array(sb, q->nb_channels, q->coding_method); |
|
|
|
|
if (fix_coding_method_array(sb, q->nb_channels, |
|
|
|
|
q->coding_method)) { |
|
|
|
|
av_log(NULL, AV_LOG_ERROR, "coding method invalid\n"); |
|
|
|
|
build_sb_samples_from_noise(q, sb); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
channels = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|