|
|
@@ -205,9 +205,12 @@ static int dpcm_decode_frame(AVCodecContext *avctx, void *data, |
|
|
av_log(avctx, AV_LOG_ERROR, "packet is too small\n"); |
|
|
av_log(avctx, AV_LOG_ERROR, "packet is too small\n"); |
|
|
return AVERROR(EINVAL); |
|
|
return AVERROR(EINVAL); |
|
|
} |
|
|
} |
|
|
|
|
|
if (out % s->channels) { |
|
|
|
|
|
av_log(avctx, AV_LOG_WARNING, "channels have differing number of samples\n"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/* get output buffer */ |
|
|
/* get output buffer */ |
|
|
s->frame.nb_samples = out / s->channels; |
|
|
|
|
|
|
|
|
s->frame.nb_samples = (out + s->channels - 1) / s->channels; |
|
|
if ((ret = avctx->get_buffer(avctx, &s->frame)) < 0) { |
|
|
if ((ret = avctx->get_buffer(avctx, &s->frame)) < 0) { |
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
return ret; |
|
|
return ret; |
|
|
|