|
|
|
@ -110,7 +110,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
|
|
|
|
|
|
/* decode and interleave the first packet */ |
|
|
|
|
if (!esc->samples && avpkt) { |
|
|
|
|
uint8_t *deinterleaved_samples; |
|
|
|
|
uint8_t *deinterleaved_samples, *p = NULL; |
|
|
|
|
|
|
|
|
|
esc->samples_size = avctx->codec->id == CODEC_ID_8SVX_RAW || avctx->codec->id ==CODEC_ID_PCM_S8_PLANAR? |
|
|
|
|
avpkt->size : avctx->channels + (avpkt->size-avctx->channels) * 2; |
|
|
|
@ -129,6 +129,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
|
} |
|
|
|
|
if (!(deinterleaved_samples = av_mallocz(n))) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
p = deinterleaved_samples; |
|
|
|
|
|
|
|
|
|
/* the uncompressed starting value is contained in the first byte */ |
|
|
|
|
if (avctx->channels == 2) { |
|
|
|
@ -145,6 +146,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
|
interleave_stereo(esc->samples, deinterleaved_samples, esc->samples_size); |
|
|
|
|
else |
|
|
|
|
memcpy(esc->samples, deinterleaved_samples, esc->samples_size); |
|
|
|
|
av_freep(&p); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* get output buffer */ |
|
|
|
|