On Fri, Sep 21, 2012 at 11:23:54AM -0400, Justin Ruggles wrote:
> ---
> libavcodec/adpcm.c | 17 +++++++++++------
> 1 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
> index b1ce2c5..12bf86f 100644
> --- a/libavcodec/adpcm.c
> +++ b/libavcodec/adpcm.c
> @@ -141,6 +141,10 @@ static av_cold int adpcm_decode_init(AVCodecContext *
> avctx)
> case AV_CODEC_ID_ADPCM_4XM:
> avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
> break;
> + case AV_CODEC_ID_ADPCM_IMA_WS:
> + avctx->sample_fmt = c->vqa_version == 3 ? AV_SAMPLE_FMT_S16P :
> + AV_SAMPLE_FMT_S16;
> + break;
> default:
> avctx->sample_fmt = AV_SAMPLE_FMT_S16;
> }
> @@ -863,14 +867,12 @@ static int adpcm_decode_frame(AVCodecContext *avctx,
> void *data,
> case AV_CODEC_ID_ADPCM_IMA_WS:
> if (c->vqa_version == 3) {
> for (channel = 0; channel < avctx->channels; channel++) {
> - int16_t *smp = samples + channel;
> + int16_t *smp = samples_p[channel];
>
> for (n = nb_samples / 2; n > 0; n--) {
> int v = bytestream2_get_byteu(&gb);
> - *smp = adpcm_ima_expand_nibble(&c->status[channel], v >>
> 4 , 3);
> - smp += avctx->channels;
> - *smp = adpcm_ima_expand_nibble(&c->status[channel], v &
> 0x0F, 3);
> - smp += avctx->channels;
> + *smp++ = adpcm_ima_expand_nibble(&c->status[channel], v
> >> 4 , 3);
> + *smp++ = adpcm_ima_expand_nibble(&c->status[channel], v
> & 0x0F, 3);
> }
> }
> } else {
> @@ -1274,6 +1276,9 @@ static const enum AVSampleFormat sample_fmts_s16[] = {
> AV_SAMPLE_FMT_S16,
> AV_SAMPLE_FMT_NONE };
> static const enum AVSampleFormat sample_fmts_s16p[] = { AV_SAMPLE_FMT_S16,
> AV_SAMPLE_FMT_NONE };
> +static const enum AVSampleFormat sample_fmts_both[] = { AV_SAMPLE_FMT_S16,
> + AV_SAMPLE_FMT_S16P,
> + AV_SAMPLE_FMT_NONE };
>
> #define ADPCM_DECODER(id_, sample_fmts_, name_, long_name_) \
> AVCodec ff_ ## name_ ## _decoder = { \
> @@ -1307,7 +1312,7 @@ ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_ISS,
> sample_fmts_s16, adpcm_ima_iss,
> ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_QT, sample_fmts_s16p, adpcm_ima_qt,
> "ADPCM IMA QuickTime");
> ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_SMJPEG, sample_fmts_s16,
> adpcm_ima_smjpeg, "ADPCM IMA Loki SDL MJPEG");
> ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_WAV, sample_fmts_s16p,
> adpcm_ima_wav, "ADPCM IMA WAV");
> -ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_WS, sample_fmts_s16, adpcm_ima_ws,
> "ADPCM IMA Westwood");
> +ADPCM_DECODER(AV_CODEC_ID_ADPCM_IMA_WS, sample_fmts_both, adpcm_ima_ws,
> "ADPCM IMA Westwood");
> ADPCM_DECODER(AV_CODEC_ID_ADPCM_MS, sample_fmts_s16, adpcm_ms,
> "ADPCM Microsoft");
> ADPCM_DECODER(AV_CODEC_ID_ADPCM_SBPRO_2, sample_fmts_s16,
> adpcm_sbpro_2, "ADPCM Sound Blaster Pro 2-bit");
> ADPCM_DECODER(AV_CODEC_ID_ADPCM_SBPRO_3, sample_fmts_s16,
> adpcm_sbpro_3, "ADPCM Sound Blaster Pro 2.6-bit");
> --
LGTM
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel