Browse Source

avcodec/adpcm: take into account block_align when decoding ADPCM_PSX

Should reduce decoding overhead.
tags/n4.4
Paul B Mahol 5 years ago
parent
commit
ca49476ace
1 changed files with 5 additions and 2 deletions
  1. +5
    -2
      libavcodec/adpcm.c

+ 5
- 2
libavcodec/adpcm.c View File

@@ -1966,11 +1966,13 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
}
break;
case AV_CODEC_ID_ADPCM_PSX:
for (int block = 0; block < avpkt->size / FFMAX(avctx->block_align, 16 * avctx->channels); block++) {
int nb_samples_per_block = 28 * FFMAX(avctx->block_align, 16 * avctx->channels) / (16 * avctx->channels);
for (channel = 0; channel < avctx->channels; channel++) {
samples = samples_p[channel];
samples = samples_p[channel] + block * nb_samples_per_block;

/* Read in every sample for this channel. */
for (i = 0; i < nb_samples / 28; i++) {
for (i = 0; i < nb_samples_per_block / 28; i++) {
int filter, shift, flag, byte;

filter = bytestream2_get_byteu(&gb);
@@ -2001,6 +2003,7 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
}
}
}
}
break;
case AV_CODEC_ID_ADPCM_ARGO:
/*


Loading…
Cancel
Save