avcodec/wavarc: fix 8bit decoding

release/6.0
Paul B Mahol 2 years ago
parent d7c2da1f8d
commit 64b242d030
  1. 8
      libavcodec/wavarc.c
  2. 7
      libavformat/wavarc.c

@ -68,9 +68,9 @@ static av_cold int wavarc_init(AVCodecContext *avctx)
av_channel_layout_default(&avctx->ch_layout, AV_RL16(avctx->extradata + 38));
avctx->sample_rate = AV_RL32(avctx->extradata + 40);
switch (avctx->extradata[36]) {
case 0: avctx->sample_fmt = AV_SAMPLE_FMT_U8P; break;
case 1: avctx->sample_fmt = AV_SAMPLE_FMT_S16P; break;
switch (AV_RL16(avctx->extradata + 38)) {
case 1: avctx->sample_fmt = AV_SAMPLE_FMT_U8P; break;
case 2: avctx->sample_fmt = AV_SAMPLE_FMT_S16P; break;
}
s->shift = 0;
@ -411,7 +411,7 @@ fail:
const int *src = s->samples[ch] + s->offset;
for (int n = 0; n < frame->nb_samples; n++)
dst[n] = src[n] * (1 << s->shift);
dst[n] = src[n] * (1 << s->shift) + 0x80U;
}
break;
case AV_SAMPLE_FMT_S16P:

@ -89,7 +89,7 @@ static int wavarc_read_header(AVFormatContext *s)
id = avio_rl32(pb);
if (id != MKTAG('d','a','t','a'))
avio_skip(pb, avio_rl32(pb));
} while (id != MKTAG('d','a','t','a'));
} while (id != MKTAG('d','a','t','a') && !avio_feof(pb));
avio_skip(pb, 4);
if (AV_RL32(par->extradata + 16) != MKTAG('R','I','F','F'))
@ -104,11 +104,6 @@ static int wavarc_read_header(AVFormatContext *s)
avpriv_set_pts_info(st, 64, 1, par->sample_rate);
st->start_time = 0;
switch (par->extradata[36]) {
case 0: par->format = AV_SAMPLE_FMT_U8P; break;
case 1: par->format = AV_SAMPLE_FMT_S16P; break;
}
return 0;
}

Loading…
Cancel
Save