mirror of https://git.ffmpeg.org/ffmpeg.git
Merge remote-tracking branch 'qatar/master'
* qatar/master:
qdm2: Conceal broken samples
See: 5ee008e01d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
2e6338b472
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue