diff options
Diffstat (limited to 'libavcodec/8svx.c')
-rw-r--r-- | libavcodec/8svx.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/libavcodec/8svx.c b/libavcodec/8svx.c index 0da48986f0..87653a8046 100644 --- a/libavcodec/8svx.c +++ b/libavcodec/8svx.c @@ -94,7 +94,6 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, /* decode and interleave the first packet */ if (!esc->samples && avpkt) { - uint8_t *deinterleaved_samples, *p = NULL; int packet_size = avpkt->size; if (packet_size % avctx->channels) { @@ -119,23 +118,17 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, av_log(avctx, AV_LOG_ERROR, "packet size is too small\n"); return AVERROR(EINVAL); } - if (!(deinterleaved_samples = av_mallocz(n))) - return AVERROR(ENOMEM); - dst = p = deinterleaved_samples; /* the uncompressed starting value is contained in the first byte */ - dst = deinterleaved_samples; + dst = esc->samples; for (i = 0; i < avctx->channels; i++) { delta_decode(dst, buf + 1, buf_size / avctx->channels - 1, buf[0], esc->table); buf += buf_size / avctx->channels; dst += n / avctx->channels - 1; } } else { - deinterleaved_samples = avpkt->data; + memcpy(esc->samples, avpkt->data, esc->samples_size); } - - memcpy(esc->samples, deinterleaved_samples, esc->samples_size); - av_freep(&p); } /* get output buffer */ |